diff --git a/Apzure_ip_master/authorship.json b/Apzure_ip_master/authorship.json index 88c02c53..98462a78 100644 --- a/Apzure_ip_master/authorship.json +++ b/Apzure_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/ArgumentNotFoundException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":"public class ArgumentNotFoundException extends DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":" public ArgumentNotFoundException(String command) {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":" super(\"Arguments are required for \" + command);","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Apzure":7}},{"path":"src/main/java/Bird.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":"public class Bird {","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":" ","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":" public static void main(String[] args) { ","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":" greet();","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Apzure"},"content":" TaskList.create();","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"Apzure"},"content":" Storage.init();","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"Apzure"},"content":" CommandHandler.scan();","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Apzure"},"content":" public static void greet() {","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"Apzure"},"content":" System.out.println(\" /\\\\_/\\\\\");","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Apzure"},"content":" System.out.println(\"((@v@))\");","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Apzure"},"content":" System.out.println(\"():::()\");","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Apzure"},"content":" System.out.println(\" VV-VV\");","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"Apzure"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"Apzure"},"content":" public static void goodbye() {","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"Apzure"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Apzure":24}},{"path":"src/main/java/CommandHandler.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":"public class CommandHandler {","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":" public enum Command {","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":" BYE,","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Apzure"},"content":" LIST,","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Apzure"},"content":" MARK,","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Apzure"},"content":" UNMARK,","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Apzure"},"content":" DELETE,","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Apzure"},"content":" TODO,","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Apzure"},"content":" DEADLINE,","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Apzure"},"content":" EVENT","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Apzure"},"content":" ","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Apzure"},"content":" public static void scan() {","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"Apzure"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"Apzure"},"content":" boolean exitScan \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"Apzure"},"content":" while (!exitScan) {","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"Apzure"},"content":" String userInput \u003d scanner.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"Apzure"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"Apzure"},"content":" exitScan \u003d executeCommand(userInput);","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"Apzure"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"Apzure"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"Apzure"},"content":" scanner.close();","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"Apzure"},"content":" private static boolean executeCommand(String userInput) throws DukeException {","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"Apzure"},"content":" String[] words \u003d userInput.split(\"\\\\s+\");","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"Apzure"},"content":" Command command \u003d null;","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"Apzure"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"Apzure"},"content":" command \u003d Command.valueOf(words[0].toUpperCase()); ","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Apzure"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"Apzure"},"content":" String commandStr \u003d words[0];","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"Apzure"},"content":" throw new CommandNotFoundException(commandStr);","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"Apzure"},"content":" switch (command) {","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"Apzure"},"content":" case BYE:","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"Apzure"},"content":" Bird.goodbye();","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"Apzure"},"content":" return true;","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"Apzure"},"content":" case LIST:","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"Apzure"},"content":" TaskList.list();","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"Apzure"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"Apzure"},"content":" default:","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"Apzure"},"content":" // The logic below is for commands with arguments","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"Apzure"},"content":" String arguments \u003d \"\";","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"Apzure"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"Apzure"},"content":" arguments \u003d userInput.substring(command.name().length() + 1);","lastModifiedDate":"2024-01-26"},{"lineNumber":53,"author":{"gitId":"Apzure"},"content":" } catch (StringIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":54,"author":{"gitId":"Apzure"},"content":" throw new ArgumentNotFoundException(command.name());","lastModifiedDate":"2024-01-26"},{"lineNumber":55,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"Apzure"},"content":" switch (command) {","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"Apzure"},"content":" case MARK:","lastModifiedDate":"2024-01-26"},{"lineNumber":58,"author":{"gitId":"Apzure"},"content":" TaskList.markTask(processTaskIdx(arguments));","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"Apzure"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"Apzure"},"content":" case UNMARK:","lastModifiedDate":"2024-01-26"},{"lineNumber":61,"author":{"gitId":"Apzure"},"content":" TaskList.unmarkTask(processTaskIdx(arguments));","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"Apzure"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"Apzure"},"content":" case DELETE:","lastModifiedDate":"2024-01-26"},{"lineNumber":64,"author":{"gitId":"Apzure"},"content":" TaskList.deleteTask(processTaskIdx(arguments));","lastModifiedDate":"2024-01-27"},{"lineNumber":65,"author":{"gitId":"Apzure"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"Apzure"},"content":" case TODO:","lastModifiedDate":"2024-01-26"},{"lineNumber":67,"author":{"gitId":"Apzure"},"content":" TaskList.addTask(processToDo(arguments));","lastModifiedDate":"2024-01-27"},{"lineNumber":68,"author":{"gitId":"Apzure"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":69,"author":{"gitId":"Apzure"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-26"},{"lineNumber":70,"author":{"gitId":"Apzure"},"content":" TaskList.addTask(processDeadline(arguments));","lastModifiedDate":"2024-01-27"},{"lineNumber":71,"author":{"gitId":"Apzure"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"Apzure"},"content":" case EVENT:","lastModifiedDate":"2024-01-26"},{"lineNumber":73,"author":{"gitId":"Apzure"},"content":" TaskList.addTask(processEvent(arguments));","lastModifiedDate":"2024-01-27"},{"lineNumber":74,"author":{"gitId":"Apzure"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"Apzure"},"content":" default:","lastModifiedDate":"2024-01-26"},{"lineNumber":76,"author":{"gitId":"Apzure"},"content":" System.out.println(\"Error: CommandSet Hashtable contains a command that is not implemented in the switch statement!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":77,"author":{"gitId":"Apzure"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":78,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":79,"author":{"gitId":"Apzure"},"content":" // To store the updated Task List","lastModifiedDate":"2024-01-28"},{"lineNumber":80,"author":{"gitId":"Apzure"},"content":" Storage.store();","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":82,"author":{"gitId":"Apzure"},"content":" return false;","lastModifiedDate":"2024-01-26"},{"lineNumber":83,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":84,"author":{"gitId":"Apzure"},"content":" ","lastModifiedDate":"2024-01-26"},{"lineNumber":85,"author":{"gitId":"Apzure"},"content":" private static int processTaskIdx(String arguments) throws IndexOutOfRange{","lastModifiedDate":"2024-01-26"},{"lineNumber":86,"author":{"gitId":"Apzure"},"content":" int idx \u003d Integer.parseInt(arguments);","lastModifiedDate":"2024-01-26"},{"lineNumber":87,"author":{"gitId":"Apzure"},"content":" int size \u003d TaskList.listSize();","lastModifiedDate":"2024-01-27"},{"lineNumber":88,"author":{"gitId":"Apzure"},"content":" if (idx \u003c\u003d 0 || idx \u003e size) {","lastModifiedDate":"2024-01-26"},{"lineNumber":89,"author":{"gitId":"Apzure"},"content":" throw new IndexOutOfRange(idx, size);","lastModifiedDate":"2024-01-26"},{"lineNumber":90,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":91,"author":{"gitId":"Apzure"},"content":" return idx;","lastModifiedDate":"2024-01-26"},{"lineNumber":92,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":93,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":94,"author":{"gitId":"Apzure"},"content":" private static ToDo processToDo(String arguments) {","lastModifiedDate":"2024-01-25"},{"lineNumber":95,"author":{"gitId":"Apzure"},"content":" return new ToDo(arguments);","lastModifiedDate":"2024-01-25"},{"lineNumber":96,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":97,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":98,"author":{"gitId":"Apzure"},"content":" private static Deadline processDeadline(String arguments) throws InvalidDeadlineFormatException, InvalidDateFormat {","lastModifiedDate":"2024-01-28"},{"lineNumber":99,"author":{"gitId":"Apzure"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":100,"author":{"gitId":"Apzure"},"content":" String[] parts \u003d arguments.split(\"/by \");","lastModifiedDate":"2024-01-25"},{"lineNumber":101,"author":{"gitId":"Apzure"},"content":" return new Deadline(parts[0], parts[1]);","lastModifiedDate":"2024-01-25"},{"lineNumber":102,"author":{"gitId":"Apzure"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":103,"author":{"gitId":"Apzure"},"content":" throw new InvalidDeadlineFormatException();","lastModifiedDate":"2024-01-26"},{"lineNumber":104,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":105,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":106,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":107,"author":{"gitId":"Apzure"},"content":" private static Event processEvent(String arguments) throws InvalidEventFormatException, InvalidDateFormat {","lastModifiedDate":"2024-01-28"},{"lineNumber":108,"author":{"gitId":"Apzure"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":109,"author":{"gitId":"Apzure"},"content":" String[] parts \u003d arguments.split(\"/from \");","lastModifiedDate":"2024-01-25"},{"lineNumber":110,"author":{"gitId":"Apzure"},"content":" String[] parts2 \u003d parts[1].split(\"/to \");","lastModifiedDate":"2024-01-25"},{"lineNumber":111,"author":{"gitId":"Apzure"},"content":" return new Event(parts[0], parts2[0], parts2[1]);","lastModifiedDate":"2024-01-25"},{"lineNumber":112,"author":{"gitId":"Apzure"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":113,"author":{"gitId":"Apzure"},"content":" throw new InvalidEventFormatException();","lastModifiedDate":"2024-01-26"},{"lineNumber":114,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":115,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":116,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-01-25"},{"lineNumber":117,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Apzure":117}},{"path":"src/main/java/CommandNotFoundException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"public class CommandNotFoundException extends DukeException{","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":" public CommandNotFoundException(String command) {","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":" super(command + \" is not a valid command!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Apzure":5}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":" private LocalDate date;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"Apzure"},"content":" static final DateTimeFormatter f \u003d DateTimeFormatter.ofPattern(\"MMM d yyyy\");","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"Apzure"},"content":" public Deadline(String name, String date) throws InvalidDateFormat {","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"Apzure"},"content":" super(name);","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"Apzure"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Apzure"},"content":" this.date \u003d LocalDate.parse(date);","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Apzure"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"Apzure"},"content":" throw new InvalidDateFormat();","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"Apzure"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"Apzure"},"content":" String date \u003d String.format(\" (by: %s)\", this.date.format(f));","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"Apzure"},"content":" return \"[D]\" + super.toString() + date;","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Apzure":23}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":" public DukeException(String eString) {","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":" super(\"Exception: \" + eString);","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Apzure":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Apzure"},"content":" LocalDate from;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"Apzure"},"content":" LocalDate to;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"Apzure"},"content":" static final DateTimeFormatter f \u003d DateTimeFormatter.ofPattern(\"MMM d yyyy\");","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"Apzure"},"content":" public Event(String name, String from, String to) throws InvalidDateFormat {","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Apzure"},"content":" super(name.trim());","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Apzure"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"Apzure"},"content":" this.from \u003d LocalDate.parse(from.trim());","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"Apzure"},"content":" this.to \u003d LocalDate.parse(to.trim());","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Apzure"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Apzure"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Apzure"},"content":" throw new InvalidDateFormat();","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"Apzure"},"content":" ","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"Apzure"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"Apzure"},"content":" String date \u003d String.format(\" (from: %s to: %s)\", this.from.format(f), this.to.format(f));","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Apzure"},"content":" return \"[E]\" + super.toString() + date;","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Apzure":27}},{"path":"src/main/java/IndexOutOfRange.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"public class IndexOutOfRange extends DukeException {","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":" public IndexOutOfRange(int idx, int size) {","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":" super(idx + \" is not valid! It must be between 1 and the number of tasks in the list. There are \" + size + \" tasks.\");","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Apzure":5}},{"path":"src/main/java/InvalidDateFormat.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"public class InvalidDateFormat extends DukeException {","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":" public InvalidDateFormat() {","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":" super(\"Invalid DateTime Format! Please use yyyy-mm-dd\");","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Apzure":5}},{"path":"src/main/java/InvalidDeadlineFormatException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"public class InvalidDeadlineFormatException extends DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":" public InvalidDeadlineFormatException() {","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":" super(\"/by argument needed for deadline\");","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Apzure":5}},{"path":"src/main/java/InvalidEventFormatException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":"public class InvalidEventFormatException extends DukeException {","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":" public InvalidEventFormatException() {","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":" super(\"/from and /to arguments needed for event\");","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Apzure":7}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"import java.io.File;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"Apzure"},"content":"public class Storage {","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"Apzure"},"content":" private final static String dirPath \u003d \"./data/\";","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"Apzure"},"content":" private final static String filePath \u003d \"./data/taskList.txt\";","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Apzure"},"content":" private static File file;","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"Apzure"},"content":" public static void init() {","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"Apzure"},"content":" try{ ","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Apzure"},"content":" create();","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"Apzure"},"content":" load();","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Apzure"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Apzure"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"Apzure"},"content":" } ","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"Apzure"},"content":" private static void create() throws IOException {","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Apzure"},"content":" File directory \u003d new File(dirPath);","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"Apzure"},"content":" if (!directory.exists()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"Apzure"},"content":" if (!directory.mkdirs()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"Apzure"},"content":" System.out.println(\"Failed to create directory.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"Apzure"},"content":" return;","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"Apzure"},"content":" } ","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"Apzure"},"content":" file \u003d new File(directory, \"taskList.txt\");","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"Apzure"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"Apzure"},"content":" file.createNewFile(); ","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"Apzure"},"content":" } ","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"Apzure"},"content":" public static void store() {","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"Apzure"},"content":" FileWriter fw \u003d null;","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"Apzure"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"Apzure"},"content":" // To reset the file","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"Apzure"},"content":" fw \u003d new FileWriter(filePath);","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"Apzure"},"content":" fw.write(\"\");","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"Apzure"},"content":" fw.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"Apzure"},"content":" fw \u003d new FileWriter(filePath, true);","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"Apzure"},"content":" for (int i \u003d 1; i \u003c\u003d TaskList.listSize(); i++) {","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"Apzure"},"content":" String textToAppend \u003d TaskList.getTask(i).toString();","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"Apzure"},"content":" fw.write(textToAppend + \"\\n\");","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"Apzure"},"content":" } ","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"Apzure"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"Apzure"},"content":" System.out.println(\"An error occurred while storing data: \" + e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"Apzure"},"content":" } finally {","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"Apzure"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"Apzure"},"content":" if (fw !\u003d null) {","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"Apzure"},"content":" fw.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"Apzure"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"Apzure"},"content":" System.out.println(\"An error occurred while closing the FileWriter: \" + e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":64,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":65,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":66,"author":{"gitId":"Apzure"},"content":" private static void load() throws IOException {","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"Apzure"},"content":" Scanner s \u003d new Scanner(file);","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"Apzure"},"content":" while (s.hasNext()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"Apzure"},"content":" String line \u003d s.nextLine();","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"Apzure"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"Apzure"},"content":" decode(line);","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"Apzure"},"content":" } catch (InvalidDateFormat e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"Apzure"},"content":" System.out.println(\"Decoding Error: \" + e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"Apzure"},"content":" } ","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"Apzure"},"content":" s.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":79,"author":{"gitId":"Apzure"},"content":" private static void decode(String line) throws InvalidDateFormat {","lastModifiedDate":"2024-01-28"},{"lineNumber":80,"author":{"gitId":"Apzure"},"content":" DateTimeFormatter originalFormat \u003d DateTimeFormatter.ofPattern(\"MMM d yyyy\");","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"Apzure"},"content":" DateTimeFormatter newFormat \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"Apzure"},"content":" String name;","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"Apzure"},"content":" String[] parts;","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"Apzure"},"content":" char taskType \u003d line.charAt(1);","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"Apzure"},"content":" boolean marked \u003d line.charAt(4) \u003d\u003d \u0027X\u0027 ? true : false; ","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"Apzure"},"content":" Task task;","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":90,"author":{"gitId":"Apzure"},"content":" line \u003d line.substring(7);","lastModifiedDate":"2024-01-28"},{"lineNumber":91,"author":{"gitId":"Apzure"},"content":" switch (taskType) {","lastModifiedDate":"2024-01-28"},{"lineNumber":92,"author":{"gitId":"Apzure"},"content":" case \u0027T\u0027:","lastModifiedDate":"2024-01-28"},{"lineNumber":93,"author":{"gitId":"Apzure"},"content":" task \u003d new ToDo(line);","lastModifiedDate":"2024-01-28"},{"lineNumber":94,"author":{"gitId":"Apzure"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":95,"author":{"gitId":"Apzure"},"content":" case \u0027D\u0027:","lastModifiedDate":"2024-01-28"},{"lineNumber":96,"author":{"gitId":"Apzure"},"content":" parts \u003d line.split(\"\\\\(by: \");","lastModifiedDate":"2024-01-28"},{"lineNumber":97,"author":{"gitId":"Apzure"},"content":" name \u003d parts[0].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"Apzure"},"content":" String by \u003d parts[1].substring(0, parts[1].length() - 1).trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":99,"author":{"gitId":"Apzure"},"content":" String by2 \u003d LocalDate.parse(by, originalFormat).format(newFormat).toString();","lastModifiedDate":"2024-01-28"},{"lineNumber":100,"author":{"gitId":"Apzure"},"content":" task \u003d new Deadline(name, by2);","lastModifiedDate":"2024-01-28"},{"lineNumber":101,"author":{"gitId":"Apzure"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":102,"author":{"gitId":"Apzure"},"content":" case \u0027E\u0027:","lastModifiedDate":"2024-01-28"},{"lineNumber":103,"author":{"gitId":"Apzure"},"content":" parts \u003d line.split(\"\\\\(from: \");","lastModifiedDate":"2024-01-28"},{"lineNumber":104,"author":{"gitId":"Apzure"},"content":" name \u003d parts[0].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":105,"author":{"gitId":"Apzure"},"content":" String[] parts2 \u003d parts[1].split(\"to: \");","lastModifiedDate":"2024-01-28"},{"lineNumber":106,"author":{"gitId":"Apzure"},"content":" String from \u003d parts2[0].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":107,"author":{"gitId":"Apzure"},"content":" String from2 \u003d LocalDate.parse(from, originalFormat).format(newFormat).toString();","lastModifiedDate":"2024-01-28"},{"lineNumber":108,"author":{"gitId":"Apzure"},"content":" String to \u003d parts2[1].substring(0, parts2[1].length() - 1).trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":109,"author":{"gitId":"Apzure"},"content":" String to2 \u003d LocalDate.parse(to, originalFormat).format(newFormat).toString();","lastModifiedDate":"2024-01-28"},{"lineNumber":110,"author":{"gitId":"Apzure"},"content":" task \u003d new Event(name, from2, to2);","lastModifiedDate":"2024-01-28"},{"lineNumber":111,"author":{"gitId":"Apzure"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":112,"author":{"gitId":"Apzure"},"content":" default:","lastModifiedDate":"2024-01-28"},{"lineNumber":113,"author":{"gitId":"Apzure"},"content":" task \u003d new ToDo(\"ERROR\");","lastModifiedDate":"2024-01-28"},{"lineNumber":114,"author":{"gitId":"Apzure"},"content":" System.out.println(\"Error: Decoding Error, task does not match any of the known types\"); ","lastModifiedDate":"2024-01-28"},{"lineNumber":115,"author":{"gitId":"Apzure"},"content":" } ","lastModifiedDate":"2024-01-28"},{"lineNumber":116,"author":{"gitId":"Apzure"},"content":" TaskList.addTaskSlient(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":117,"author":{"gitId":"Apzure"},"content":" if (marked) {","lastModifiedDate":"2024-01-28"},{"lineNumber":118,"author":{"gitId":"Apzure"},"content":" TaskList.markTaskSilent(TaskList.listSize());","lastModifiedDate":"2024-01-28"},{"lineNumber":119,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":120,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":121,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":122,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"Apzure":122}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"public class Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":" private String name;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":" public Task(String name) {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Apzure"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Apzure"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Apzure"},"content":" String check \u003d isDone ? \"[X] \" : \"[ ] \";","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"Apzure"},"content":" return check + this.name;","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Apzure"},"content":" public String toString2() {","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"Apzure"},"content":" return this.name;","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"Apzure"},"content":" public void done() {","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"Apzure"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"Apzure"},"content":" public void undone() {","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"Apzure"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Apzure":27}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":"public class TaskList {","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":" static ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":" public static void create() {","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"Apzure"},"content":" taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"Apzure"},"content":" public static void list() {","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"Apzure"},"content":" if (taskList.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"Apzure"},"content":" System.out.println(\"You have no tasks! Hooray!!!!!!!!!!\");","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"Apzure"},"content":" else {","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"Apzure"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"Apzure"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"Apzure"},"content":" int number \u003d i + 1;","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"Apzure"},"content":" System.out.println(number + \". \" + taskList.get(i).toString());","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"Apzure"},"content":" public static int listSize() {","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"Apzure"},"content":" return taskList.size();","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"Apzure"},"content":" public static void addTask(Task task) {","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"Apzure"},"content":" taskList.add(task);","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"Apzure"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"Apzure"},"content":" System.out.println(task.toString());","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"Apzure"},"content":" System.out.println(String.format(\"Now you have %d tasks in the list.\", taskList.size())); ","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"Apzure"},"content":" public static void addTaskSlient(Task task) {","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"Apzure"},"content":" taskList.add(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"Apzure"},"content":" public static void markTask(int idx) {","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"Apzure"},"content":" Task task \u003d taskList.get(idx-1);","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"Apzure"},"content":" task.done();","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"Apzure"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"Apzure"},"content":" System.out.println(task.toString());","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"Apzure"},"content":" public static void markTaskSilent(int idx) {","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"Apzure"},"content":" Task task \u003d taskList.get(idx-1);","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"Apzure"},"content":" task.done();","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"Apzure"},"content":" public static void unmarkTask(int idx) {","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"Apzure"},"content":" Task task \u003d taskList.get(idx-1);","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"Apzure"},"content":" task.undone();","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"Apzure"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"Apzure"},"content":" System.out.println(task.toString());","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"Apzure"},"content":" public static void deleteTask(int idx) {","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"Apzure"},"content":" Task task \u003d taskList.get(idx-1);","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"Apzure"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"Apzure"},"content":" System.out.println(task.toString());","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"Apzure"},"content":" System.out.println(String.format(\"Now you have %d tasks in the list.\", taskList.size()-1));","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"Apzure"},"content":" taskList.remove(idx-1);","lastModifiedDate":"2024-01-27"},{"lineNumber":64,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":65,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"Apzure"},"content":" public static Task getTask(int idx) {","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"Apzure"},"content":" return taskList.get(idx-1);","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"Apzure":69}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":" ","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":" public ToDo(String name) {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":" super(name);","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"Apzure"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"Apzure"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Apzure":11}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":"blah ","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":"todo study","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":"deadline worksheet /by Friday","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":"event hiking /from 2pm /to 5pm","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":"list","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"Apzure"},"content":"deadline /from Sunday","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Apzure"},"content":"event party /FROM 7pm /to 9pm","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"Apzure"},"content":"event conference /from 9am /to 11am","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Apzure"},"content":"todo ","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"Apzure"},"content":"mark 1","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Apzure"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Apzure"},"content":"deadline now /BYE","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"Apzure"},"content":"deadline /by Saturday","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Apzure"},"content":"todo reading","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Apzure"},"content":"event /from 1pm /to 4pm","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Apzure"},"content":"event","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Apzure"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Apzure"},"content":"delete 2","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Apzure"},"content":"event something /from 5pm /TOO 4pm","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"Apzure"},"content":"mark 1","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Apzure"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"Apzure"},"content":"mark 2","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"Apzure"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"Apzure"},"content":"unmark 1","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"Apzure"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"Apzure"},"content":"delete 3","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"Apzure"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"Apzure"},"content":"delete 1","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"Apzure"},"content":"bye","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Apzure":31}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"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":"Apzure"},"content":"java -classpath ..\\bin Bird \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":{"Apzure":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":"Apzure"},"content":"java -classpath ../bin Bird \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":"-"},"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":{"Apzure":1,"-":37}}] +[{"path":"src/main/java/ArgumentNotFoundException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":"public class ArgumentNotFoundException extends DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":" public ArgumentNotFoundException(String command) {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":" super(\"Arguments are required for \" + command);","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Apzure":7}},{"path":"src/main/java/Bird.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":"public class Bird {","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":" private Ui ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":" ","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":" public static void main(String[] args) { ","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Apzure"},"content":" new Bird();","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Apzure"},"content":" public Bird() {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Apzure"},"content":" greet();","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"Apzure"},"content":" TaskList.create();","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"Apzure"},"content":" Storage.init();","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"Apzure"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Apzure"},"content":" ui.scan();","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"Apzure"},"content":" public static void greet() {","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"Apzure"},"content":" System.out.println(\" /\\\\_/\\\\\");","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"Apzure"},"content":" System.out.println(\"((@v@))\");","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"Apzure"},"content":" System.out.println(\"():::()\");","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"Apzure"},"content":" System.out.println(\" VV-VV\");","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"Apzure"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"Apzure"},"content":" public static void goodbye() {","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"Apzure"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Apzure":30}},{"path":"src/main/java/CommandHandler.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":"public class CommandHandler {","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":" public enum Command {","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":" BYE,","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Apzure"},"content":" LIST,","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Apzure"},"content":" MARK,","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Apzure"},"content":" UNMARK,","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Apzure"},"content":" DELETE,","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Apzure"},"content":" TODO,","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Apzure"},"content":" DEADLINE,","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Apzure"},"content":" EVENT","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Apzure"},"content":" public static boolean executeCommand(String userInput) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Apzure"},"content":" String[] words \u003d userInput.split(\"\\\\s+\");","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"Apzure"},"content":" Command command \u003d null;","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Apzure"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Apzure"},"content":" command \u003d Command.valueOf(words[0].toUpperCase()); ","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"Apzure"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"Apzure"},"content":" String commandStr \u003d words[0];","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Apzure"},"content":" throw new CommandNotFoundException(commandStr);","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"Apzure"},"content":" switch (command) {","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"Apzure"},"content":" case BYE:","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"Apzure"},"content":" Bird.goodbye();","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"Apzure"},"content":" return true;","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"Apzure"},"content":" case LIST:","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"Apzure"},"content":" TaskList.list();","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"Apzure"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"Apzure"},"content":" default:","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"Apzure"},"content":" // The logic below is for commands with arguments","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"Apzure"},"content":" String arguments \u003d \"\";","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"Apzure"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"Apzure"},"content":" arguments \u003d userInput.substring(command.name().length() + 1);","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"Apzure"},"content":" } catch (StringIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"Apzure"},"content":" throw new ArgumentNotFoundException(command.name());","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"Apzure"},"content":" switch (command) {","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"Apzure"},"content":" case MARK:","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"Apzure"},"content":" TaskList.markTask(processTaskIdx(arguments));","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"Apzure"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"Apzure"},"content":" case UNMARK:","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"Apzure"},"content":" TaskList.unmarkTask(processTaskIdx(arguments));","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"Apzure"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"Apzure"},"content":" case DELETE:","lastModifiedDate":"2024-01-26"},{"lineNumber":49,"author":{"gitId":"Apzure"},"content":" TaskList.deleteTask(processTaskIdx(arguments));","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"Apzure"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"Apzure"},"content":" case TODO:","lastModifiedDate":"2024-01-26"},{"lineNumber":52,"author":{"gitId":"Apzure"},"content":" TaskList.addTask(processToDo(arguments));","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"Apzure"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"Apzure"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-26"},{"lineNumber":55,"author":{"gitId":"Apzure"},"content":" TaskList.addTask(processDeadline(arguments));","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"Apzure"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"Apzure"},"content":" case EVENT:","lastModifiedDate":"2024-01-26"},{"lineNumber":58,"author":{"gitId":"Apzure"},"content":" TaskList.addTask(processEvent(arguments));","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"Apzure"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"Apzure"},"content":" default:","lastModifiedDate":"2024-01-26"},{"lineNumber":61,"author":{"gitId":"Apzure"},"content":" System.out.println(\"Error: CommandSet Hashtable contains a command that is not implemented in the switch statement!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":62,"author":{"gitId":"Apzure"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":63,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"Apzure"},"content":" // To store the updated Task List","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"Apzure"},"content":" Storage.store();","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"Apzure"},"content":" return false;","lastModifiedDate":"2024-01-26"},{"lineNumber":68,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":69,"author":{"gitId":"Apzure"},"content":" ","lastModifiedDate":"2024-01-26"},{"lineNumber":70,"author":{"gitId":"Apzure"},"content":" private static int processTaskIdx(String arguments) throws IndexOutOfRange{","lastModifiedDate":"2024-01-26"},{"lineNumber":71,"author":{"gitId":"Apzure"},"content":" int idx \u003d Integer.parseInt(arguments);","lastModifiedDate":"2024-01-26"},{"lineNumber":72,"author":{"gitId":"Apzure"},"content":" int size \u003d TaskList.listSize();","lastModifiedDate":"2024-01-27"},{"lineNumber":73,"author":{"gitId":"Apzure"},"content":" if (idx \u003c\u003d 0 || idx \u003e size) {","lastModifiedDate":"2024-01-26"},{"lineNumber":74,"author":{"gitId":"Apzure"},"content":" throw new IndexOutOfRange(idx, size);","lastModifiedDate":"2024-01-26"},{"lineNumber":75,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":76,"author":{"gitId":"Apzure"},"content":" return idx;","lastModifiedDate":"2024-01-26"},{"lineNumber":77,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":78,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":79,"author":{"gitId":"Apzure"},"content":" private static ToDo processToDo(String arguments) {","lastModifiedDate":"2024-01-25"},{"lineNumber":80,"author":{"gitId":"Apzure"},"content":" return new ToDo(arguments);","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":82,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":83,"author":{"gitId":"Apzure"},"content":" private static Deadline processDeadline(String arguments) throws InvalidDeadlineFormatException, InvalidDateFormat {","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"Apzure"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":85,"author":{"gitId":"Apzure"},"content":" String[] parts \u003d arguments.split(\"/by \");","lastModifiedDate":"2024-01-25"},{"lineNumber":86,"author":{"gitId":"Apzure"},"content":" return new Deadline(parts[0], parts[1]);","lastModifiedDate":"2024-01-25"},{"lineNumber":87,"author":{"gitId":"Apzure"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":88,"author":{"gitId":"Apzure"},"content":" throw new InvalidDeadlineFormatException();","lastModifiedDate":"2024-01-26"},{"lineNumber":89,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":90,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":91,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":92,"author":{"gitId":"Apzure"},"content":" private static Event processEvent(String arguments) throws InvalidEventFormatException, InvalidDateFormat {","lastModifiedDate":"2024-01-28"},{"lineNumber":93,"author":{"gitId":"Apzure"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":94,"author":{"gitId":"Apzure"},"content":" String[] parts \u003d arguments.split(\"/from \");","lastModifiedDate":"2024-01-25"},{"lineNumber":95,"author":{"gitId":"Apzure"},"content":" String[] parts2 \u003d parts[1].split(\"/to \");","lastModifiedDate":"2024-01-25"},{"lineNumber":96,"author":{"gitId":"Apzure"},"content":" return new Event(parts[0], parts2[0], parts2[1]);","lastModifiedDate":"2024-01-25"},{"lineNumber":97,"author":{"gitId":"Apzure"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":98,"author":{"gitId":"Apzure"},"content":" throw new InvalidEventFormatException();","lastModifiedDate":"2024-01-26"},{"lineNumber":99,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":100,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":101,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-01-25"},{"lineNumber":102,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Apzure":102}},{"path":"src/main/java/CommandNotFoundException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"public class CommandNotFoundException extends DukeException{","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":" public CommandNotFoundException(String command) {","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":" super(command + \" is not a valid command!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Apzure":5}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":" private LocalDate date;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"Apzure"},"content":" static final DateTimeFormatter f \u003d DateTimeFormatter.ofPattern(\"MMM d yyyy\");","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"Apzure"},"content":" public Deadline(String name, String date) throws InvalidDateFormat {","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"Apzure"},"content":" super(name);","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"Apzure"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Apzure"},"content":" this.date \u003d LocalDate.parse(date);","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Apzure"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"Apzure"},"content":" throw new InvalidDateFormat();","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"Apzure"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"Apzure"},"content":" String date \u003d String.format(\" (by: %s)\", this.date.format(f));","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"Apzure"},"content":" return \"[D]\" + super.toString() + date;","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Apzure":23}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":" public DukeException(String eString) {","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":" super(\"Exception: \" + eString);","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Apzure":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Apzure"},"content":" LocalDate from;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"Apzure"},"content":" LocalDate to;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"Apzure"},"content":" static final DateTimeFormatter f \u003d DateTimeFormatter.ofPattern(\"MMM d yyyy\");","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"Apzure"},"content":" public Event(String name, String from, String to) throws InvalidDateFormat {","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Apzure"},"content":" super(name.trim());","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Apzure"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"Apzure"},"content":" this.from \u003d LocalDate.parse(from.trim());","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"Apzure"},"content":" this.to \u003d LocalDate.parse(to.trim());","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Apzure"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Apzure"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Apzure"},"content":" throw new InvalidDateFormat();","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"Apzure"},"content":" ","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"Apzure"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"Apzure"},"content":" String date \u003d String.format(\" (from: %s to: %s)\", this.from.format(f), this.to.format(f));","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Apzure"},"content":" return \"[E]\" + super.toString() + date;","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Apzure":27}},{"path":"src/main/java/IndexOutOfRange.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"public class IndexOutOfRange extends DukeException {","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":" public IndexOutOfRange(int idx, int size) {","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":" super(idx + \" is not valid! It must be between 1 and the number of tasks in the list. There are \" + size + \" tasks.\");","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Apzure":5}},{"path":"src/main/java/InvalidDateFormat.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"public class InvalidDateFormat extends DukeException {","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":" public InvalidDateFormat() {","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":" super(\"Invalid DateTime Format! Please use yyyy-mm-dd\");","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Apzure":5}},{"path":"src/main/java/InvalidDeadlineFormatException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"public class InvalidDeadlineFormatException extends DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":" public InvalidDeadlineFormatException() {","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":" super(\"/by argument needed for deadline\");","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Apzure":5}},{"path":"src/main/java/InvalidEventFormatException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":"public class InvalidEventFormatException extends DukeException {","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":" public InvalidEventFormatException() {","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":" super(\"/from and /to arguments needed for event\");","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Apzure":7}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"import java.io.File;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"Apzure"},"content":"public class Storage {","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"Apzure"},"content":" private final static String dirPath \u003d \"./data/\";","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"Apzure"},"content":" private final static String filePath \u003d \"./data/taskList.txt\";","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Apzure"},"content":" private static File file;","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"Apzure"},"content":" public static void init() {","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"Apzure"},"content":" try{ ","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Apzure"},"content":" create();","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"Apzure"},"content":" load();","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Apzure"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Apzure"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"Apzure"},"content":" } ","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"Apzure"},"content":" private static void create() throws IOException {","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Apzure"},"content":" File directory \u003d new File(dirPath);","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"Apzure"},"content":" if (!directory.exists()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"Apzure"},"content":" if (!directory.mkdirs()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"Apzure"},"content":" System.out.println(\"Failed to create directory.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"Apzure"},"content":" return;","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"Apzure"},"content":" } ","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"Apzure"},"content":" file \u003d new File(directory, \"taskList.txt\");","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"Apzure"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"Apzure"},"content":" file.createNewFile(); ","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"Apzure"},"content":" } ","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"Apzure"},"content":" public static void store() {","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"Apzure"},"content":" FileWriter fw \u003d null;","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"Apzure"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"Apzure"},"content":" // To reset the file","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"Apzure"},"content":" fw \u003d new FileWriter(filePath);","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"Apzure"},"content":" fw.write(\"\");","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"Apzure"},"content":" fw.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"Apzure"},"content":" fw \u003d new FileWriter(filePath, true);","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"Apzure"},"content":" for (int i \u003d 1; i \u003c\u003d TaskList.listSize(); i++) {","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"Apzure"},"content":" String textToAppend \u003d TaskList.getTask(i).toString();","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"Apzure"},"content":" fw.write(textToAppend + \"\\n\");","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"Apzure"},"content":" } ","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"Apzure"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"Apzure"},"content":" System.out.println(\"An error occurred while storing data: \" + e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"Apzure"},"content":" } finally {","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"Apzure"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"Apzure"},"content":" if (fw !\u003d null) {","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"Apzure"},"content":" fw.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"Apzure"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"Apzure"},"content":" System.out.println(\"An error occurred while closing the FileWriter: \" + e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":64,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":65,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":66,"author":{"gitId":"Apzure"},"content":" private static void load() throws IOException {","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"Apzure"},"content":" Scanner s \u003d new Scanner(file);","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"Apzure"},"content":" while (s.hasNext()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"Apzure"},"content":" String line \u003d s.nextLine();","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"Apzure"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"Apzure"},"content":" decode(line);","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"Apzure"},"content":" } catch (InvalidDateFormat e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"Apzure"},"content":" System.out.println(\"Decoding Error: \" + e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"Apzure"},"content":" } ","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"Apzure"},"content":" s.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":79,"author":{"gitId":"Apzure"},"content":" private static void decode(String line) throws InvalidDateFormat {","lastModifiedDate":"2024-01-28"},{"lineNumber":80,"author":{"gitId":"Apzure"},"content":" DateTimeFormatter originalFormat \u003d DateTimeFormatter.ofPattern(\"MMM d yyyy\");","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"Apzure"},"content":" DateTimeFormatter newFormat \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"Apzure"},"content":" String name;","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"Apzure"},"content":" String[] parts;","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"Apzure"},"content":" char taskType \u003d line.charAt(1);","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"Apzure"},"content":" boolean marked \u003d line.charAt(4) \u003d\u003d \u0027X\u0027 ? true : false; ","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"Apzure"},"content":" Task task;","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":90,"author":{"gitId":"Apzure"},"content":" line \u003d line.substring(7);","lastModifiedDate":"2024-01-28"},{"lineNumber":91,"author":{"gitId":"Apzure"},"content":" switch (taskType) {","lastModifiedDate":"2024-01-28"},{"lineNumber":92,"author":{"gitId":"Apzure"},"content":" case \u0027T\u0027:","lastModifiedDate":"2024-01-28"},{"lineNumber":93,"author":{"gitId":"Apzure"},"content":" task \u003d new ToDo(line);","lastModifiedDate":"2024-01-28"},{"lineNumber":94,"author":{"gitId":"Apzure"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":95,"author":{"gitId":"Apzure"},"content":" case \u0027D\u0027:","lastModifiedDate":"2024-01-28"},{"lineNumber":96,"author":{"gitId":"Apzure"},"content":" parts \u003d line.split(\"\\\\(by: \");","lastModifiedDate":"2024-01-28"},{"lineNumber":97,"author":{"gitId":"Apzure"},"content":" name \u003d parts[0].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"Apzure"},"content":" String by \u003d parts[1].substring(0, parts[1].length() - 1).trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":99,"author":{"gitId":"Apzure"},"content":" String by2 \u003d LocalDate.parse(by, originalFormat).format(newFormat).toString();","lastModifiedDate":"2024-01-28"},{"lineNumber":100,"author":{"gitId":"Apzure"},"content":" task \u003d new Deadline(name, by2);","lastModifiedDate":"2024-01-28"},{"lineNumber":101,"author":{"gitId":"Apzure"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":102,"author":{"gitId":"Apzure"},"content":" case \u0027E\u0027:","lastModifiedDate":"2024-01-28"},{"lineNumber":103,"author":{"gitId":"Apzure"},"content":" parts \u003d line.split(\"\\\\(from: \");","lastModifiedDate":"2024-01-28"},{"lineNumber":104,"author":{"gitId":"Apzure"},"content":" name \u003d parts[0].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":105,"author":{"gitId":"Apzure"},"content":" String[] parts2 \u003d parts[1].split(\"to: \");","lastModifiedDate":"2024-01-28"},{"lineNumber":106,"author":{"gitId":"Apzure"},"content":" String from \u003d parts2[0].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":107,"author":{"gitId":"Apzure"},"content":" String from2 \u003d LocalDate.parse(from, originalFormat).format(newFormat).toString();","lastModifiedDate":"2024-01-28"},{"lineNumber":108,"author":{"gitId":"Apzure"},"content":" String to \u003d parts2[1].substring(0, parts2[1].length() - 1).trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":109,"author":{"gitId":"Apzure"},"content":" String to2 \u003d LocalDate.parse(to, originalFormat).format(newFormat).toString();","lastModifiedDate":"2024-01-28"},{"lineNumber":110,"author":{"gitId":"Apzure"},"content":" task \u003d new Event(name, from2, to2);","lastModifiedDate":"2024-01-28"},{"lineNumber":111,"author":{"gitId":"Apzure"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":112,"author":{"gitId":"Apzure"},"content":" default:","lastModifiedDate":"2024-01-28"},{"lineNumber":113,"author":{"gitId":"Apzure"},"content":" task \u003d new ToDo(\"ERROR\");","lastModifiedDate":"2024-01-28"},{"lineNumber":114,"author":{"gitId":"Apzure"},"content":" System.out.println(\"Error: Decoding Error, task does not match any of the known types\"); ","lastModifiedDate":"2024-01-28"},{"lineNumber":115,"author":{"gitId":"Apzure"},"content":" } ","lastModifiedDate":"2024-01-28"},{"lineNumber":116,"author":{"gitId":"Apzure"},"content":" TaskList.addTaskSlient(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":117,"author":{"gitId":"Apzure"},"content":" if (marked) {","lastModifiedDate":"2024-01-28"},{"lineNumber":118,"author":{"gitId":"Apzure"},"content":" TaskList.markTaskSilent(TaskList.listSize());","lastModifiedDate":"2024-01-28"},{"lineNumber":119,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":120,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":121,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":122,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"Apzure":122}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"public class Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":" private String name;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":" public Task(String name) {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Apzure"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Apzure"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Apzure"},"content":" String check \u003d isDone ? \"[X] \" : \"[ ] \";","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"Apzure"},"content":" return check + this.name;","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Apzure"},"content":" public String toString2() {","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"Apzure"},"content":" return this.name;","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"Apzure"},"content":" public void done() {","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"Apzure"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"Apzure"},"content":" public void undone() {","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"Apzure"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Apzure":27}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":"public class TaskList {","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":" static ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":" public static void create() {","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"Apzure"},"content":" taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"Apzure"},"content":" public static void list() {","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"Apzure"},"content":" if (taskList.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"Apzure"},"content":" System.out.println(\"You have no tasks! Hooray!!!!!!!!!!\");","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"Apzure"},"content":" else {","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"Apzure"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"Apzure"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"Apzure"},"content":" int number \u003d i + 1;","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"Apzure"},"content":" System.out.println(number + \". \" + taskList.get(i).toString());","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"Apzure"},"content":" public static int listSize() {","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"Apzure"},"content":" return taskList.size();","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"Apzure"},"content":" public static void addTask(Task task) {","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"Apzure"},"content":" taskList.add(task);","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"Apzure"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"Apzure"},"content":" System.out.println(task.toString());","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"Apzure"},"content":" System.out.println(String.format(\"Now you have %d tasks in the list.\", taskList.size())); ","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"Apzure"},"content":" public static void addTaskSlient(Task task) {","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"Apzure"},"content":" taskList.add(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"Apzure"},"content":" public static void markTask(int idx) {","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"Apzure"},"content":" Task task \u003d taskList.get(idx-1);","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"Apzure"},"content":" task.done();","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"Apzure"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"Apzure"},"content":" System.out.println(task.toString());","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"Apzure"},"content":" public static void markTaskSilent(int idx) {","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"Apzure"},"content":" Task task \u003d taskList.get(idx-1);","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"Apzure"},"content":" task.done();","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"Apzure"},"content":" public static void unmarkTask(int idx) {","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"Apzure"},"content":" Task task \u003d taskList.get(idx-1);","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"Apzure"},"content":" task.undone();","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"Apzure"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"Apzure"},"content":" System.out.println(task.toString());","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"Apzure"},"content":" public static void deleteTask(int idx) {","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"Apzure"},"content":" Task task \u003d taskList.get(idx-1);","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"Apzure"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"Apzure"},"content":" System.out.println(task.toString());","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"Apzure"},"content":" System.out.println(String.format(\"Now you have %d tasks in the list.\", taskList.size()-1));","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"Apzure"},"content":" taskList.remove(idx-1);","lastModifiedDate":"2024-01-27"},{"lineNumber":64,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":65,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"Apzure"},"content":" public static Task getTask(int idx) {","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"Apzure"},"content":" return taskList.get(idx-1);","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"Apzure":69}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":" ","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":" public ToDo(String name) {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":" super(name);","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Apzure"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"Apzure"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"Apzure"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Apzure":11}},{"path":"src/main/java/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":"public class Ui {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":" public Ui() {","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":" ","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Apzure"},"content":" public void scan() {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Apzure"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Apzure"},"content":" boolean exitScan \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Apzure"},"content":" while (!exitScan) {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Apzure"},"content":" String userInput \u003d scanner.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Apzure"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Apzure"},"content":" exitScan \u003d CommandHandler.executeCommand(userInput);","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Apzure"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Apzure"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Apzure"},"content":" scanner.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Apzure"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Apzure"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Apzure":23}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Apzure"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Apzure"},"content":"blah ","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"Apzure"},"content":"todo study","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Apzure"},"content":"deadline worksheet /by Friday","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Apzure"},"content":"event hiking /from 2pm /to 5pm","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Apzure"},"content":"list","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"Apzure"},"content":"deadline /from Sunday","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Apzure"},"content":"event party /FROM 7pm /to 9pm","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"Apzure"},"content":"event conference /from 9am /to 11am","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Apzure"},"content":"todo ","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"Apzure"},"content":"mark 1","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Apzure"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Apzure"},"content":"deadline now /BYE","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"Apzure"},"content":"deadline /by Saturday","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Apzure"},"content":"todo reading","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Apzure"},"content":"event /from 1pm /to 4pm","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Apzure"},"content":"event","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Apzure"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Apzure"},"content":"delete 2","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Apzure"},"content":"event something /from 5pm /TOO 4pm","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"Apzure"},"content":"mark 1","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Apzure"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"Apzure"},"content":"mark 2","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"Apzure"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"Apzure"},"content":"unmark 1","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"Apzure"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"Apzure"},"content":"delete 3","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"Apzure"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"Apzure"},"content":"delete 1","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"Apzure"},"content":"bye","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"Apzure"},"content":"","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Apzure":31}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"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":"Apzure"},"content":"java -classpath ..\\bin Bird \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":{"Apzure":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":"Apzure"},"content":"java -classpath ../bin Bird \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":"-"},"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":{"Apzure":1,"-":37}}] diff --git a/Apzure_ip_master/commits.json b/Apzure_ip_master/commits.json index 7c2104e6..ba0cfd99 100644 --- a/Apzure_ip_master/commits.json +++ b/Apzure_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Apzure":[{"date":"2024-01-24","commitResults":[{"hash":"4bea9d6e76a183c6e0b8b1211073a99fc5992ebb","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":10}}},{"hash":"9637137b76ee426c26ac7d91ff5dfdf55f9f6cf1","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":2}}},{"hash":"3dedc189a357c9e76fc438eae70d1370b5035ef7","isMergeCommit":false,"messageTitle":"Level-2 and Level-3","messageBody":"","tags":["Level-3","Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":76,"deletions":3}}}]},{"date":"2024-01-25","commitResults":[{"hash":"ba8c1b2914037eb4b09f0213e3b42274058b1997","isMergeCommit":false,"messageTitle":"Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":126,"deletions":38}}},{"hash":"f14aace71e5d9761395cc0a4ab8b00166ccf2d2c","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":67,"deletions":28}}},{"hash":"ac1afb12a06e49bedaac23b30759925223c80d97","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":16}}},{"hash":"9c19586fc7e954841e53b629de281c3ffbfe7f36","isMergeCommit":false,"messageTitle":"More Error-Handling","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":6}}},{"hash":"93e41b62f4460f8f8cd44539632fb63f2aff96f8","isMergeCommit":false,"messageTitle":"More Error Handling","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":0}}}]},{"date":"2024-01-26","commitResults":[{"hash":"eb56fe22ad3f9772bff4050c3753edc9076fd754","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":26,"deletions":0},"java":{"insertions":2,"deletions":2},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}},{"hash":"0f10acbf6db16e691b03d30d57d669c692560136","isMergeCommit":false,"messageTitle":"Fix and better Error Handling","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":66}}},{"hash":"3528ffe9734f78cc9d24d701fea66c87ae65b9f8","isMergeCommit":false,"messageTitle":"Error handling for event command arguments","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":5}}},{"hash":"c3dafaee4d0016869add86879055f963ddb2369d","isMergeCommit":false,"messageTitle":"A-Enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":32}}},{"hash":"082e44d83dfcf1ddff22db00e8cebd80d35546b9","isMergeCommit":false,"messageTitle":"Custom Message if you have no tasks when doing list command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":4}}},{"hash":"90892a912916ff9b5fa374f68d6c2229281b22ea","isMergeCommit":false,"messageTitle":"Error Handling if the idx for commands like mark, unmark is out of range","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":3}}}]},{"date":"2024-01-27","commitResults":[{"hash":"ffe38a98cff968195eb628a1489f2f1d9dfc2c30","isMergeCommit":false,"messageTitle":"Initial File and Folder Creation for Data Storage","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":36,"deletions":0}}},{"hash":"5704ac52e3c32116f595733789936bf868fd9ae9","isMergeCommit":false,"messageTitle":"More Testing","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0}}},{"hash":"8ff07c5b7dac23ccac8c619ac2e6cf360caa3f76","isMergeCommit":false,"messageTitle":"Segemation of Tasklist into a new class, away from Bird","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":71,"deletions":61}}}]},{"date":"2024-01-28","commitResults":[{"hash":"72f0c6372d50e39f392cdf504d332c4fc97ed499","isMergeCommit":false,"messageTitle":"Functionality to Store TaskList whenever it is updated","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":46,"deletions":7}}},{"hash":"b20e145f1b9ff42f7325aad4f2b06c2dd7a7f935","isMergeCommit":false,"messageTitle":"Storage fully functional","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":2},"java":{"insertions":67,"deletions":12}}},{"hash":"787a32d142595b3be42958392367d5f892d48228","isMergeCommit":false,"messageTitle":"Bugfix for error handling of invalid commands","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":5}}},{"hash":"d4b384065340bc8ee2e3df3164068bab94a9fc97","isMergeCommit":false,"messageTitle":"Cleaning up import","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"d30c8514f62e4e6e1ae2d181aea85b82dcec555c","isMergeCommit":false,"messageTitle":"Updated test","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":7}}},{"hash":"b126dbd3b509f65fa0c859e13dbfb5dc126f6d29","isMergeCommit":false,"messageTitle":"Removed Debugging print statement","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"0e50eaf78296f5cdec081cda107f7722d89713e2","isMergeCommit":false,"messageTitle":"Removed","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":8}}},{"hash":"78f34e83637b2437d0fdb939f405b0ffd1075367","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"1b844a9cc1a80de8bb8b534c61ecae3bedff1e17","isMergeCommit":false,"messageTitle":"LocalDate Format implemented","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":54,"deletions":34}}},{"hash":"a17f5e64932d25136ed1516305913a7cf6349958","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Apzure":{"java":459,"md":0,"fxml":0,"sh":1,"bat":1,"gradle":0,"txt":31}},"authorContributionVariance":{"Apzure":17508.49},"authorDisplayNameMap":{"Apzure":"CS2103T-T10-3 NIGE..N YI"}} +{"authorDailyContributionsMap":{"Apzure":[{"date":"2024-01-24","commitResults":[{"hash":"4bea9d6e76a183c6e0b8b1211073a99fc5992ebb","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":10}}},{"hash":"9637137b76ee426c26ac7d91ff5dfdf55f9f6cf1","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":2}}},{"hash":"3dedc189a357c9e76fc438eae70d1370b5035ef7","isMergeCommit":false,"messageTitle":"Level-2 and Level-3","messageBody":"","tags":["Level-3","Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":76,"deletions":3}}}]},{"date":"2024-01-25","commitResults":[{"hash":"ba8c1b2914037eb4b09f0213e3b42274058b1997","isMergeCommit":false,"messageTitle":"Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":126,"deletions":38}}},{"hash":"f14aace71e5d9761395cc0a4ab8b00166ccf2d2c","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":67,"deletions":28}}},{"hash":"ac1afb12a06e49bedaac23b30759925223c80d97","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":16}}},{"hash":"9c19586fc7e954841e53b629de281c3ffbfe7f36","isMergeCommit":false,"messageTitle":"More Error-Handling","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":6}}},{"hash":"93e41b62f4460f8f8cd44539632fb63f2aff96f8","isMergeCommit":false,"messageTitle":"More Error Handling","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":0}}}]},{"date":"2024-01-26","commitResults":[{"hash":"eb56fe22ad3f9772bff4050c3753edc9076fd754","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":26,"deletions":0},"java":{"insertions":2,"deletions":2},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}},{"hash":"0f10acbf6db16e691b03d30d57d669c692560136","isMergeCommit":false,"messageTitle":"Fix and better Error Handling","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":66}}},{"hash":"3528ffe9734f78cc9d24d701fea66c87ae65b9f8","isMergeCommit":false,"messageTitle":"Error handling for event command arguments","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":5}}},{"hash":"c3dafaee4d0016869add86879055f963ddb2369d","isMergeCommit":false,"messageTitle":"A-Enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":32}}},{"hash":"082e44d83dfcf1ddff22db00e8cebd80d35546b9","isMergeCommit":false,"messageTitle":"Custom Message if you have no tasks when doing list command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":4}}},{"hash":"90892a912916ff9b5fa374f68d6c2229281b22ea","isMergeCommit":false,"messageTitle":"Error Handling if the idx for commands like mark, unmark is out of range","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":3}}}]},{"date":"2024-01-27","commitResults":[{"hash":"ffe38a98cff968195eb628a1489f2f1d9dfc2c30","isMergeCommit":false,"messageTitle":"Initial File and Folder Creation for Data Storage","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":36,"deletions":0}}},{"hash":"5704ac52e3c32116f595733789936bf868fd9ae9","isMergeCommit":false,"messageTitle":"More Testing","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0}}},{"hash":"8ff07c5b7dac23ccac8c619ac2e6cf360caa3f76","isMergeCommit":false,"messageTitle":"Segemation of Tasklist into a new class, away from Bird","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":71,"deletions":61}}}]},{"date":"2024-01-28","commitResults":[{"hash":"72f0c6372d50e39f392cdf504d332c4fc97ed499","isMergeCommit":false,"messageTitle":"Functionality to Store TaskList whenever it is updated","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":46,"deletions":7}}},{"hash":"b20e145f1b9ff42f7325aad4f2b06c2dd7a7f935","isMergeCommit":false,"messageTitle":"Storage fully functional","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":2},"java":{"insertions":67,"deletions":12}}},{"hash":"787a32d142595b3be42958392367d5f892d48228","isMergeCommit":false,"messageTitle":"Bugfix for error handling of invalid commands","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":5}}},{"hash":"d4b384065340bc8ee2e3df3164068bab94a9fc97","isMergeCommit":false,"messageTitle":"Cleaning up import","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"d30c8514f62e4e6e1ae2d181aea85b82dcec555c","isMergeCommit":false,"messageTitle":"Updated test","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":7}}},{"hash":"b126dbd3b509f65fa0c859e13dbfb5dc126f6d29","isMergeCommit":false,"messageTitle":"Removed Debugging print statement","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"0e50eaf78296f5cdec081cda107f7722d89713e2","isMergeCommit":false,"messageTitle":"Removed","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":8}}},{"hash":"78f34e83637b2437d0fdb939f405b0ffd1075367","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"1b844a9cc1a80de8bb8b534c61ecae3bedff1e17","isMergeCommit":false,"messageTitle":"LocalDate Format implemented","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":54,"deletions":34}}},{"hash":"a17f5e64932d25136ed1516305913a7cf6349958","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-30","commitResults":[{"hash":"2bdca0a8ddb165946e63b085443e8554a4e3cacc","isMergeCommit":false,"messageTitle":"Initial Creation of UI","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":17}}}]}]},"authorFileTypeContributionMap":{"Apzure":{"java":473,"md":0,"fxml":0,"sh":1,"bat":1,"gradle":0,"txt":31}},"authorContributionVariance":{"Apzure":15942.5205},"authorDisplayNameMap":{"Apzure":"CS2103T-T10-3 NIGE..N YI"}} diff --git a/Bandov_ip_master/authorship.json b/Bandov_ip_master/authorship.json index 37fce701..395b75e1 100644 --- a/Bandov_ip_master/authorship.json +++ b/Bandov_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":"Bandov"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2024-01-27"},{"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":"Bandov"},"content":"checkstyle {","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"Bandov"},"content":" toolVersion \u003d \"8.23\"","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"Bandov"},"content":" configFile \u003d rootProject.file(\"config/checkstyle/checkstyle.xml\")","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"Bandov"},"content":" ignoreFailures \u003d false","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"Bandov"},"content":" showViolations \u003d true","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"Bandov"},"content":" maxWarnings \u003d 0","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"Bandov"},"content":" maxErrors \u003d 0","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"Bandov"},"content":" sourceSets \u003d [sourceSets.main]","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"Bandov"},"content":"}","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"Bandov"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"Bandov"},"content":" archiveFileName \u003d \u0027duke.jar\u0027","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Bandov":13,"-":41}},{"path":"src/main/java/duke/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Bandov"},"content":"package duke;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Bandov"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Bandov"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"Bandov"},"content":" * The Deadline class represents a task with a deadline.","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"Bandov"},"content":" * It is a subclass of the Task class.","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"Bandov"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-20"},{"lineNumber":10,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":11,"author":{"gitId":"Bandov"},"content":" protected LocalDate by;","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":13,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"Bandov"},"content":" * Constructor for Deadline.","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"Bandov"},"content":" * @param description The description of the deadline.","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"Bandov"},"content":" * @param by The deadline of the deadline.","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"Bandov"},"content":" public Deadline(String description, LocalDate by) {","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"Bandov"},"content":" super(description);","lastModifiedDate":"2024-01-20"},{"lineNumber":21,"author":{"gitId":"Bandov"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-20"},{"lineNumber":22,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":23,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":24,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"Bandov"},"content":" * Returns the string representation of the deadline.","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"Bandov"},"content":" * @return The string representation of the deadline.","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"Bandov"},"content":" @Override","lastModifiedDate":"2024-01-20"},{"lineNumber":30,"author":{"gitId":"Bandov"},"content":" public String toString() {","lastModifiedDate":"2024-01-20"},{"lineNumber":31,"author":{"gitId":"Bandov"},"content":" return \"[D]\" + (isDone ? \"[X] \" : \"[ ] \") + super.description + \" (by: \" + by + \")\";","lastModifiedDate":"2024-01-20"},{"lineNumber":32,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":33,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"Bandov"},"content":" * Returns the string representation of the deadline to be stored in the file.","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"Bandov"},"content":" * @return The string representation of the deadline to be stored in the file.","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"Bandov"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"Bandov"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"Bandov"},"content":" return \"D\" + \" | \" + (isDone ? \"1\" : \"0\") + \" | \" + description + \" | \" + by;","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"Bandov"},"content":" * Returns a Deadline instance from the string representation of the deadline stored in the file.","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"Bandov"},"content":" * @param str The string representation of the deadline stored in the file.","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"Bandov"},"content":" * @return The Deadline instance from the string representation of the deadline stored in the file.","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"Bandov"},"content":" public static Deadline fromFileString(String str) {","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"Bandov"},"content":" String[] parts \u003d str.split(\" \\\\| \");","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"Bandov"},"content":" if (!parts[0].equals(\"D\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"Bandov"},"content":" return null;","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"Bandov"},"content":" String description \u003d parts[2].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"Bandov"},"content":" LocalDate by \u003d LocalDate.parse(parts[3].trim());","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"Bandov"},"content":" boolean isDone \u003d parts[1].trim().equals(\"1\");","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"Bandov"},"content":" Deadline deadline \u003d new Deadline(description, by);","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"Bandov"},"content":" if (isDone) {","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"Bandov"},"content":" deadline.markAsDone();","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"Bandov"},"content":" return deadline;","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":65,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":66,"author":{"gitId":"Bandov"},"content":" * Returns the date of the deadline.","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":68,"author":{"gitId":"Bandov"},"content":" * @return The date of the deadline.","lastModifiedDate":"2024-01-27"},{"lineNumber":69,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":70,"author":{"gitId":"Bandov"},"content":" public String getDate() {","lastModifiedDate":"2024-01-26"},{"lineNumber":71,"author":{"gitId":"Bandov"},"content":" return by.toString();","lastModifiedDate":"2024-01-26"},{"lineNumber":72,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":73,"author":{"gitId":"Bandov"},"content":"}","lastModifiedDate":"2024-01-20"}],"authorContributionMap":{"Bandov":73}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Bandov"},"content":"package duke;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Bandov"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Bandov"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":7,"author":{"gitId":"Bandov"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"Bandov"},"content":" * The Duke class is the main class of the Duke application.","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"Bandov"},"content":" * It is responsible for the initialization of the Storage and TaskList instances.","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"Bandov"},"content":" * It also contains the main method that serves as the entry point for the Duke application.","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"Bandov"},"content":"public class Duke {","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"Bandov"},"content":" private Storage storage;","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"Bandov"},"content":" private static TaskList tasks;","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"Bandov"},"content":" * Constructor for Duke.","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"Bandov"},"content":" * Initializes the Storage and TaskList instances.","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"Bandov"},"content":" * @param filePath The path to the file where the task list is stored.","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"Bandov"},"content":" * @throws DukeException If an error occurs while loading the task list.","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"Bandov"},"content":" public Duke(String filePath) throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"Bandov"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"Bandov"},"content":" try {","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"Bandov"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"Bandov"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"Bandov"},"content":" Ui.showLoadingError();","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"Bandov"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"Bandov"},"content":" * The main method that serves as the entry point for the Duke application.","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"Bandov"},"content":" * Initializes the Duke instance and processes the user input until the \"bye\" command is given.","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"Bandov"},"content":" * @param args Command line arguments (not used).","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"Bandov"},"content":" * @throws IOException If an I/O error occurs.","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"Bandov"},"content":" public static void main(String[] args) throws IOException {","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"Bandov"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"Bandov"},"content":" Duke duke \u003d new Duke(\"./data/duke.txt\");","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"Bandov"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"Bandov"},"content":" Ui.showLoadingError();","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"Bandov"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":47,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":48,"author":{"gitId":"Bandov"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"Bandov"},"content":" Ui.printWithLines(\"Hello! I\u0027m Bob!\", \"What can I do for you?\");","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":51,"author":{"gitId":"Bandov"},"content":" boolean isRunning \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"Bandov"},"content":" while (isRunning) {","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"Bandov"},"content":" String message \u003d scanner.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"Bandov"},"content":" Ui.parse(tasks, message);","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"Bandov"},"content":" isRunning \u003d !message.equals(\"bye\");","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":57,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":58,"author":{"gitId":"Bandov"},"content":" Storage.saveCurrentList(tasks);","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"Bandov"},"content":" Ui.printWithLines(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"Bandov"},"content":" System.out.println(\"------------------------------------------\");","lastModifiedDate":"2024-01-20"},{"lineNumber":61,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"Bandov":62,"-":1}},{"path":"src/main/java/duke/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Bandov"},"content":"package duke;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"Bandov"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"Bandov"},"content":" * The DukeException class represents an exception specific to the Duke application.","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"Bandov"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"Bandov"},"content":" * Constructor for DukeException.","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"Bandov"},"content":" * @param message The error message.","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"Bandov"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"Bandov"},"content":" super(message);","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"Bandov"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Bandov":16}},{"path":"src/main/java/duke/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Bandov"},"content":"package duke;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Bandov"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Bandov"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"Bandov"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"Bandov"},"content":" * Represents an event task with a description, start time, and end time.","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"Bandov"},"content":" * It extends the Task class by adding time-specific information.","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"Bandov"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-20"},{"lineNumber":11,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":12,"author":{"gitId":"Bandov"},"content":" protected LocalDateTime from;","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"Bandov"},"content":" protected LocalDateTime to;","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":15,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"Bandov"},"content":" * Constructs an Event task with the specified description, start time, and end time.","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"Bandov"},"content":" * @param description The description of the event.","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"Bandov"},"content":" * @param from The start time of the event.","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"Bandov"},"content":" * @param to The end time of the event.","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"Bandov"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"Bandov"},"content":" super(description);","lastModifiedDate":"2024-01-20"},{"lineNumber":24,"author":{"gitId":"Bandov"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-20"},{"lineNumber":25,"author":{"gitId":"Bandov"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-20"},{"lineNumber":26,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":27,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":28,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"Bandov"},"content":" * Returns a string representation of the event task, including its type, status, description, and timing.","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"Bandov"},"content":" * @return A string representation of the event task.","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"Bandov"},"content":" @Override","lastModifiedDate":"2024-01-20"},{"lineNumber":34,"author":{"gitId":"Bandov"},"content":" public String toString() {","lastModifiedDate":"2024-01-20"},{"lineNumber":35,"author":{"gitId":"Bandov"},"content":" return \"[E]\" + (isDone ? \"[X] \" : \"[ ] \") + super.description + \" (from: \" + from + \" to: \" + to + \")\";","lastModifiedDate":"2024-01-20"},{"lineNumber":36,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":37,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"Bandov"},"content":" * Returns a string representation of the event task formatted for file storage.","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"Bandov"},"content":" * @return A string formatted for file storage.","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"Bandov"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"Bandov"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"Bandov"},"content":" return \"E\" + \" | \" + (isDone ? \"1\" : \"0\") + \" | \" + description + \" | \" + from + \" - \" + to;","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"Bandov"},"content":" * Creates an Event object from a string representation formatted for file storage.","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"Bandov"},"content":" * @param str The string representation of the event from a file.","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"Bandov"},"content":" * @return An Event object, or null if the string format is invalid.","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"Bandov"},"content":" public static Event fromFileString(String str) {","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"Bandov"},"content":" String[] parts \u003d str.split(\" \\\\| \");","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"Bandov"},"content":" if (!parts[0].equals(\"E\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"Bandov"},"content":" return null; // or throw an exception","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"Bandov"},"content":" String description \u003d parts[2].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"Bandov"},"content":" String[] times \u003d parts[3].split(\" - \");","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"Bandov"},"content":" if (times.length \u003c 2) {","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"Bandov"},"content":" return null;","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"Bandov"},"content":" String from \u003d times[0].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"Bandov"},"content":" String to \u003d times[1].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"Bandov"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\u0027T\u0027HH:mm\");","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"Bandov"},"content":" LocalDateTime dateTimeFrom \u003d LocalDateTime.parse(from, formatter);","lastModifiedDate":"2024-01-25"},{"lineNumber":68,"author":{"gitId":"Bandov"},"content":" LocalDateTime dateTimeTo \u003d LocalDateTime.parse(to, formatter);","lastModifiedDate":"2024-01-25"},{"lineNumber":69,"author":{"gitId":"Bandov"},"content":" boolean isDone \u003d parts[1].trim().equals(\"1\");","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"Bandov"},"content":" Event event \u003d new Event(description, dateTimeFrom, dateTimeTo);","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"Bandov"},"content":" if (isDone) {","lastModifiedDate":"2024-01-27"},{"lineNumber":72,"author":{"gitId":"Bandov"},"content":" event.markAsDone();","lastModifiedDate":"2024-01-27"},{"lineNumber":73,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":74,"author":{"gitId":"Bandov"},"content":" return event;","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":78,"author":{"gitId":"Bandov"},"content":" * Returns the start time of the event.","lastModifiedDate":"2024-01-27"},{"lineNumber":79,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":80,"author":{"gitId":"Bandov"},"content":" * @return A string representation of the start time.","lastModifiedDate":"2024-01-27"},{"lineNumber":81,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":82,"author":{"gitId":"Bandov"},"content":" public String getFromDate() {","lastModifiedDate":"2024-01-26"},{"lineNumber":83,"author":{"gitId":"Bandov"},"content":" return from.toString();","lastModifiedDate":"2024-01-26"},{"lineNumber":84,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":85,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":86,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":87,"author":{"gitId":"Bandov"},"content":" * Returns the end time of the event.","lastModifiedDate":"2024-01-27"},{"lineNumber":88,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":89,"author":{"gitId":"Bandov"},"content":" * @return A string representation of the end time.","lastModifiedDate":"2024-01-27"},{"lineNumber":90,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":91,"author":{"gitId":"Bandov"},"content":" public String getToDate() {","lastModifiedDate":"2024-01-26"},{"lineNumber":92,"author":{"gitId":"Bandov"},"content":" return to.toString();","lastModifiedDate":"2024-01-26"},{"lineNumber":93,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":94,"author":{"gitId":"Bandov"},"content":"}","lastModifiedDate":"2024-01-20"}],"authorContributionMap":{"Bandov":94}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Bandov"},"content":"package duke;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Bandov"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Bandov"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Bandov"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Bandov"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Bandov"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"Bandov"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"Bandov"},"content":" * The Parser class represents a parser that parses the user input.","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"Bandov"},"content":"public class Parser {","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"Bandov"},"content":" * Parses the user input for a \"todo\" command and adds a new Todo task to the task list.","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"Bandov"},"content":" * It throws an exception if the input does not contain a description for the todo.","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"Bandov"},"content":" * @param list The TaskList to which the new todo task is added.","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"Bandov"},"content":" * @param message The user input string.","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"Bandov"},"content":" * @throws DukeException If the todo description is empty.","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"Bandov"},"content":" public static void handleTodo(TaskList list, String message) throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"Bandov"},"content":" if (message.trim().equals(\"todo\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"Bandov"},"content":" throw new DukeException(\"OOPS!!! The description of a todo cannot be empty buddy.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"Bandov"},"content":" String description \u003d message.substring(5).trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"Bandov"},"content":" Task task \u003d new Task(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"Bandov"},"content":" list.add(task);","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"Bandov"},"content":" Ui.printWithLines(\"Got it. I\u0027ve added this task:\", task.toString(),","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"Bandov"},"content":" \"Now you have \" + list.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"Bandov"},"content":" * Parses and handles the \"deadline\" command.","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"Bandov"},"content":" * Adds a deadline task to the task list with a specified due date.","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"Bandov"},"content":" * @param list The task list to add the deadline to.","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"Bandov"},"content":" * @param message The user input string.","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"Bandov"},"content":" * @throws DukeException If the deadline or its date/time format is incorrect.","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"Bandov"},"content":" public static void handleDeadline(TaskList list, String message) throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"Bandov"},"content":" String[] parts \u003d message.split(\"/by\", 2);","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"Bandov"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"Bandov"},"content":" throw new DukeException(\"OOPS!!! The deadline date/time is missing buddy.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"Bandov"},"content":" String description \u003d parts[0].substring(9).trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"Bandov"},"content":" String by \u003d parts[1].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"Bandov"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"Bandov"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"Bandov"},"content":" LocalDate date \u003d LocalDate.parse(by, formatter);","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"Bandov"},"content":" Deadline task \u003d new Deadline(description, date);","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"Bandov"},"content":" list.add(task);","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"Bandov"},"content":" Ui.printWithLines(\"Got it. I\u0027ve added this task:\", task.toString(),","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"Bandov"},"content":" \"Now you have \" + list.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"Bandov"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"Bandov"},"content":" throw new DukeException(\"OOPS!!! The deadline date format is incorrect. Please use yyyy-MM-dd format.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"Bandov"},"content":" * Parses and handles the \"event\" command.","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"Bandov"},"content":" * Adds an event task to the task list with specified start and end times.","lastModifiedDate":"2024-01-27"},{"lineNumber":64,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":65,"author":{"gitId":"Bandov"},"content":" * @param list The task list to add the event to.","lastModifiedDate":"2024-01-27"},{"lineNumber":66,"author":{"gitId":"Bandov"},"content":" * @param message The user input string.","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"Bandov"},"content":" * @throws DukeException If the event time is missing or the date/time format is incorrect.","lastModifiedDate":"2024-01-27"},{"lineNumber":68,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":69,"author":{"gitId":"Bandov"},"content":" public static void handleEvent(TaskList list, String message) throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"Bandov"},"content":" String[] parts \u003d message.split(\" /from \", 2);","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"Bandov"},"content":" if (parts.length \u003c 2 || !parts[1].contains(\" /to \")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"Bandov"},"content":" throw new DukeException(\"OOPS!!! The event time is missing or incomplete buddy.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"Bandov"},"content":" String description \u003d parts[0].substring(6).trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"Bandov"},"content":" String[] timeParts \u003d parts[1].split(\" /to \", 2);","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"Bandov"},"content":" String fromTime \u003d timeParts[0].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"Bandov"},"content":" String toTime \u003d timeParts[1].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"Bandov"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":79,"author":{"gitId":"Bandov"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2024-01-25"},{"lineNumber":80,"author":{"gitId":"Bandov"},"content":" LocalDateTime dateTimeFrom \u003d LocalDateTime.parse(fromTime, formatter);","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"Bandov"},"content":" LocalDateTime dateTimeTo \u003d LocalDateTime.parse(toTime, formatter);","lastModifiedDate":"2024-01-25"},{"lineNumber":82,"author":{"gitId":"Bandov"},"content":" Event task \u003d new Event(description, dateTimeFrom, dateTimeTo);","lastModifiedDate":"2024-01-25"},{"lineNumber":83,"author":{"gitId":"Bandov"},"content":" list.add(task);","lastModifiedDate":"2024-01-25"},{"lineNumber":84,"author":{"gitId":"Bandov"},"content":" Ui.printWithLines(\"Got it. I\u0027ve added this task:\", task.toString(),","lastModifiedDate":"2024-01-27"},{"lineNumber":85,"author":{"gitId":"Bandov"},"content":" \"Now you have \" + list.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":86,"author":{"gitId":"Bandov"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":87,"author":{"gitId":"Bandov"},"content":" throw new DukeException(\"OOPS!!! The deadline date format is incorrect. \"","lastModifiedDate":"2024-01-27"},{"lineNumber":88,"author":{"gitId":"Bandov"},"content":" + \"Please use yyyy-MM-dd HH:mm format.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":89,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":90,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":91,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":92,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":93,"author":{"gitId":"Bandov"},"content":" * Handles the \"list\" command.","lastModifiedDate":"2024-01-27"},{"lineNumber":94,"author":{"gitId":"Bandov"},"content":" * Displays all tasks in the task list.","lastModifiedDate":"2024-01-27"},{"lineNumber":95,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":96,"author":{"gitId":"Bandov"},"content":" * @param list The task list to display.","lastModifiedDate":"2024-01-27"},{"lineNumber":97,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":98,"author":{"gitId":"Bandov"},"content":" public static void handleList(TaskList list) {","lastModifiedDate":"2024-01-25"},{"lineNumber":99,"author":{"gitId":"Bandov"},"content":" ArrayList\u003cString\u003e taskDescriptions \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-25"},{"lineNumber":100,"author":{"gitId":"Bandov"},"content":" taskDescriptions.add(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":101,"author":{"gitId":"Bandov"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2024-01-25"},{"lineNumber":102,"author":{"gitId":"Bandov"},"content":" taskDescriptions.add((i + 1) + \". \" + list.get(i).toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":103,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":104,"author":{"gitId":"Bandov"},"content":" Ui.printWithLines(taskDescriptions.toArray(new String[0]));","lastModifiedDate":"2024-01-25"},{"lineNumber":105,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":106,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":107,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":108,"author":{"gitId":"Bandov"},"content":" * Parses and handles the \"mark\" command.","lastModifiedDate":"2024-01-27"},{"lineNumber":109,"author":{"gitId":"Bandov"},"content":" * Marks a task as done based on the specified task number.","lastModifiedDate":"2024-01-27"},{"lineNumber":110,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":111,"author":{"gitId":"Bandov"},"content":" * @param list The task list containing the task to be marked.","lastModifiedDate":"2024-01-27"},{"lineNumber":112,"author":{"gitId":"Bandov"},"content":" * @param message The user input string.","lastModifiedDate":"2024-01-27"},{"lineNumber":113,"author":{"gitId":"Bandov"},"content":" * @throws DukeException If the task number is missing or invalid.","lastModifiedDate":"2024-01-27"},{"lineNumber":114,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":115,"author":{"gitId":"Bandov"},"content":" public static void handleMark(TaskList list, String message) throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":116,"author":{"gitId":"Bandov"},"content":" if (message.trim().equals(\"mark\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":117,"author":{"gitId":"Bandov"},"content":" throw new DukeException(\"OOPS!!! The task number is missing buddy.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":118,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":119,"author":{"gitId":"Bandov"},"content":" int index \u003d Integer.parseInt(message.substring(5).trim()) - 1;","lastModifiedDate":"2024-01-25"},{"lineNumber":120,"author":{"gitId":"Bandov"},"content":" if (index \u003c 0 || index \u003e\u003d list.size()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":121,"author":{"gitId":"Bandov"},"content":" throw new DukeException(\"OOPS!!! Task number is invalid buddy.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":122,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":123,"author":{"gitId":"Bandov"},"content":" Task task \u003d list.get(index);","lastModifiedDate":"2024-01-25"},{"lineNumber":124,"author":{"gitId":"Bandov"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-25"},{"lineNumber":125,"author":{"gitId":"Bandov"},"content":" Ui.printWithLines(\"Nice! I\u0027ve marked this task as done:\", task.toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":126,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":127,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":128,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":129,"author":{"gitId":"Bandov"},"content":" * Parses and handles the \"unmark\" command.","lastModifiedDate":"2024-01-27"},{"lineNumber":130,"author":{"gitId":"Bandov"},"content":" * Marks a task as not done based on the specified task number.","lastModifiedDate":"2024-01-27"},{"lineNumber":131,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":132,"author":{"gitId":"Bandov"},"content":" * @param list The task list containing the task to be unmarked.","lastModifiedDate":"2024-01-27"},{"lineNumber":133,"author":{"gitId":"Bandov"},"content":" * @param message The user input string.","lastModifiedDate":"2024-01-27"},{"lineNumber":134,"author":{"gitId":"Bandov"},"content":" * @throws DukeException If the task number is missing or invalid.","lastModifiedDate":"2024-01-27"},{"lineNumber":135,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":136,"author":{"gitId":"Bandov"},"content":" public static void handleUnmark(TaskList list, String message) throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":137,"author":{"gitId":"Bandov"},"content":" if (message.trim().equals(\"unmark\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":138,"author":{"gitId":"Bandov"},"content":" throw new DukeException(\"OOPS!!! The task number is missing buddy.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":139,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":140,"author":{"gitId":"Bandov"},"content":" int index \u003d Integer.parseInt(message.substring(7).trim()) - 1;","lastModifiedDate":"2024-01-25"},{"lineNumber":141,"author":{"gitId":"Bandov"},"content":" if (index \u003c 0 || index \u003e\u003d list.size()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":142,"author":{"gitId":"Bandov"},"content":" throw new DukeException(\"OOPS!!! Task number is invalid buddy.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":143,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":144,"author":{"gitId":"Bandov"},"content":" Task task \u003d list.get(index);","lastModifiedDate":"2024-01-25"},{"lineNumber":145,"author":{"gitId":"Bandov"},"content":" task.unMarkAsDone();","lastModifiedDate":"2024-01-25"},{"lineNumber":146,"author":{"gitId":"Bandov"},"content":" Ui.printWithLines(\"OK, I\u0027ve marked this task as not done yet:\", task.toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":147,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":148,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":149,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":150,"author":{"gitId":"Bandov"},"content":" * Parses and handles the \"delete\" command.","lastModifiedDate":"2024-01-27"},{"lineNumber":151,"author":{"gitId":"Bandov"},"content":" * Deletes a task from the task list based on the specified task number.","lastModifiedDate":"2024-01-27"},{"lineNumber":152,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":153,"author":{"gitId":"Bandov"},"content":" * @param list The task list from which to delete the task.","lastModifiedDate":"2024-01-27"},{"lineNumber":154,"author":{"gitId":"Bandov"},"content":" * @param message The user input string.","lastModifiedDate":"2024-01-27"},{"lineNumber":155,"author":{"gitId":"Bandov"},"content":" * @throws DukeException If the task number is missing or invalid.","lastModifiedDate":"2024-01-27"},{"lineNumber":156,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":157,"author":{"gitId":"Bandov"},"content":" public static void deleteTask(TaskList list, String message) throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":158,"author":{"gitId":"Bandov"},"content":" if (message.trim().equals(\"delete\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":159,"author":{"gitId":"Bandov"},"content":" throw new DukeException(\"OOPS!!! The task number is missing buddy.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":160,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":161,"author":{"gitId":"Bandov"},"content":" int index \u003d Integer.parseInt(message.substring(7).trim()) - 1;","lastModifiedDate":"2024-01-25"},{"lineNumber":162,"author":{"gitId":"Bandov"},"content":" if (index \u003c 0 || index \u003e\u003d list.size()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":163,"author":{"gitId":"Bandov"},"content":" throw new DukeException(\"OOPS!!! Task number is invalid buddy.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":164,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":165,"author":{"gitId":"Bandov"},"content":" Task task \u003d list.get(index);","lastModifiedDate":"2024-01-25"},{"lineNumber":166,"author":{"gitId":"Bandov"},"content":" list.remove(index);","lastModifiedDate":"2024-01-25"},{"lineNumber":167,"author":{"gitId":"Bandov"},"content":" Ui.printWithLines(\"OK, I\u0027ve deleted this task:\", task.toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":168,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":169,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":170,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":171,"author":{"gitId":"Bandov"},"content":" * Parses and handles the \"find\" command.","lastModifiedDate":"2024-01-27"},{"lineNumber":172,"author":{"gitId":"Bandov"},"content":" * Finds all tasks in the task list that contain the specified keyword.","lastModifiedDate":"2024-01-27"},{"lineNumber":173,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":174,"author":{"gitId":"Bandov"},"content":" * @param list The task list to search for matching tasks.","lastModifiedDate":"2024-01-27"},{"lineNumber":175,"author":{"gitId":"Bandov"},"content":" * @param message The user input string.","lastModifiedDate":"2024-01-27"},{"lineNumber":176,"author":{"gitId":"Bandov"},"content":" * @throws DukeException If the keyword is missing.","lastModifiedDate":"2024-01-27"},{"lineNumber":177,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":178,"author":{"gitId":"Bandov"},"content":" public static void findTask(TaskList list, String message) throws DukeException {","lastModifiedDate":"2024-01-27"},{"lineNumber":179,"author":{"gitId":"Bandov"},"content":" if (message.trim().equals(\"find\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":180,"author":{"gitId":"Bandov"},"content":" throw new DukeException(\"OOPS!!! The keyword is missing buddy.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":181,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":182,"author":{"gitId":"Bandov"},"content":" String keyword \u003d message.substring(5).trim();","lastModifiedDate":"2024-01-27"},{"lineNumber":183,"author":{"gitId":"Bandov"},"content":" ArrayList\u003cTask\u003e matchingTasks \u003d list.find(keyword);","lastModifiedDate":"2024-01-27"},{"lineNumber":184,"author":{"gitId":"Bandov"},"content":" if (matchingTasks.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-27"},{"lineNumber":185,"author":{"gitId":"Bandov"},"content":" Ui.printWithLines(\"No matching task found.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":186,"author":{"gitId":"Bandov"},"content":" } else {","lastModifiedDate":"2024-01-27"},{"lineNumber":187,"author":{"gitId":"Bandov"},"content":" Ui.printWithLines(\"Here is the matching tasks in your list: \");","lastModifiedDate":"2024-01-27"},{"lineNumber":188,"author":{"gitId":"Bandov"},"content":" for (int i \u003d 0; i \u003c matchingTasks.size(); i++) {","lastModifiedDate":"2024-01-27"},{"lineNumber":189,"author":{"gitId":"Bandov"},"content":" System.out.println((i + 1) + \". \" + matchingTasks.get(i).toString());","lastModifiedDate":"2024-01-27"},{"lineNumber":190,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":191,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":192,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":193,"author":{"gitId":"Bandov"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Bandov":193}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Bandov"},"content":"package duke;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Bandov"},"content":"import java.io.File;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Bandov"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Bandov"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Bandov"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Bandov"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"Bandov"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"Bandov"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"Bandov"},"content":" * The Storage class is responsible for handling file operations including","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"Bandov"},"content":" * loading tasks from a file and saving tasks to a file.","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"Bandov"},"content":"public class Storage {","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"Bandov"},"content":" protected Scanner scanner;","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"Bandov"},"content":" protected static String filePath;","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"Bandov"},"content":" protected File file;","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"Bandov"},"content":" * Creates a Storage object which initializes a Scanner for reading from a file.","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"Bandov"},"content":" * The file path is specified by the provided string.","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"Bandov"},"content":" * @param filePath The file path of the storage file.","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"Bandov"},"content":" * @throws DukeException If the file is not found.","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"Bandov"},"content":" public Storage(String filePath) throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"Bandov"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"Bandov"},"content":" Storage.filePath \u003d filePath;","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"Bandov"},"content":" this.file \u003d new File(filePath);","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"Bandov"},"content":" this.scanner \u003d new Scanner(file);","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"Bandov"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"Bandov"},"content":" throw new DukeException(\"Error loading file\");","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"Bandov"},"content":" * Writes the given text to a file at the specified file path.","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"Bandov"},"content":" * @param filePath The file path where the text is to be written.","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"Bandov"},"content":" * @param textToAdd The text to write to the file.","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"Bandov"},"content":" * @throws IOException If an I/O error occurs.","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"Bandov"},"content":" private static void writeToFile(String filePath, String textToAdd) throws IOException {","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"Bandov"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"Bandov"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"Bandov"},"content":" FileWriter fw \u003d new FileWriter(file);","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"Bandov"},"content":" fw.write(textToAdd);","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"Bandov"},"content":" fw.close();","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"Bandov"},"content":" * Saves the current list of tasks to the file.","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"Bandov"},"content":" * @param list The task list to be saved.","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"Bandov"},"content":" * @throws IOException If an I/O error occurs during writing.","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"Bandov"},"content":" public static void saveCurrentList(TaskList list) throws IOException {","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"Bandov"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"Bandov"},"content":" for (Task task : list.getList()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"Bandov"},"content":" sb.append(task.toFileString());","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"Bandov"},"content":" sb.append(\"\\n\");","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"Bandov"},"content":" writeToFile(filePath, sb.toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"Bandov"},"content":" * Loads tasks from the file and returns them as an ArrayList of Task objects.","lastModifiedDate":"2024-01-27"},{"lineNumber":68,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":69,"author":{"gitId":"Bandov"},"content":" * @return An ArrayList of Task objects.","lastModifiedDate":"2024-01-27"},{"lineNumber":70,"author":{"gitId":"Bandov"},"content":" * @throws DukeException If an error occurs while reading from the file.","lastModifiedDate":"2024-01-27"},{"lineNumber":71,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":72,"author":{"gitId":"Bandov"},"content":" public ArrayList\u003cTask\u003e load() throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"Bandov"},"content":" ArrayList\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"Bandov"},"content":" while (scanner.hasNext()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"Bandov"},"content":" String line \u003d scanner.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"Bandov"},"content":" String type \u003d line.substring(0, 1);","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"Bandov"},"content":" switch (type) {","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"Bandov"},"content":" case \"T\":","lastModifiedDate":"2024-01-25"},{"lineNumber":79,"author":{"gitId":"Bandov"},"content":" list.add(Task.fromFileString(line));","lastModifiedDate":"2024-01-25"},{"lineNumber":80,"author":{"gitId":"Bandov"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"Bandov"},"content":" case \"D\":","lastModifiedDate":"2024-01-25"},{"lineNumber":82,"author":{"gitId":"Bandov"},"content":" list.add(Deadline.fromFileString(line));","lastModifiedDate":"2024-01-25"},{"lineNumber":83,"author":{"gitId":"Bandov"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":84,"author":{"gitId":"Bandov"},"content":" case \"E\":","lastModifiedDate":"2024-01-25"},{"lineNumber":85,"author":{"gitId":"Bandov"},"content":" list.add(Event.fromFileString(line));","lastModifiedDate":"2024-01-25"},{"lineNumber":86,"author":{"gitId":"Bandov"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":87,"author":{"gitId":"Bandov"},"content":" default:","lastModifiedDate":"2024-01-27"},{"lineNumber":88,"author":{"gitId":"Bandov"},"content":" throw new DukeException(\"Error loading file\");","lastModifiedDate":"2024-01-27"},{"lineNumber":89,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":90,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":91,"author":{"gitId":"Bandov"},"content":" return list;","lastModifiedDate":"2024-01-25"},{"lineNumber":92,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":93,"author":{"gitId":"Bandov"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Bandov":93}},{"path":"src/main/java/duke/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Bandov"},"content":"package duke;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"Bandov"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"Bandov"},"content":" * Represents a task with a description and a completion status.","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"Bandov"},"content":" * This class serves as the base class for more specific types of tasks.","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"Bandov"},"content":"public class Task {","lastModifiedDate":"2024-01-20"},{"lineNumber":8,"author":{"gitId":"Bandov"},"content":" protected String description;","lastModifiedDate":"2024-01-20"},{"lineNumber":9,"author":{"gitId":"Bandov"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-20"},{"lineNumber":10,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":11,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"Bandov"},"content":" * Constructs a Task with the specified description. The task is initially not done.","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"Bandov"},"content":" * @param description The description of the task.","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"Bandov"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-20"},{"lineNumber":17,"author":{"gitId":"Bandov"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-20"},{"lineNumber":18,"author":{"gitId":"Bandov"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-20"},{"lineNumber":19,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":20,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":21,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"Bandov"},"content":" * Returns the description of the task.","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"Bandov"},"content":" * @return The description of the task.","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"Bandov"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-20"},{"lineNumber":27,"author":{"gitId":"Bandov"},"content":" return description;","lastModifiedDate":"2024-01-20"},{"lineNumber":28,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":29,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":30,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"Bandov"},"content":" * Returns the completion status of the task.","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"Bandov"},"content":" * @return true if the task is done, false otherwise.","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"Bandov"},"content":" public boolean isDone() {","lastModifiedDate":"2024-01-20"},{"lineNumber":36,"author":{"gitId":"Bandov"},"content":" return isDone;","lastModifiedDate":"2024-01-20"},{"lineNumber":37,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":38,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":39,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"Bandov"},"content":" * Marks the task as done.","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"Bandov"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-20"},{"lineNumber":43,"author":{"gitId":"Bandov"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-20"},{"lineNumber":44,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":45,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":46,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"Bandov"},"content":" * Marks the task as not done.","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"Bandov"},"content":" public void unMarkAsDone() {","lastModifiedDate":"2024-01-20"},{"lineNumber":50,"author":{"gitId":"Bandov"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-20"},{"lineNumber":51,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":52,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":53,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"Bandov"},"content":" * Returns a string representation of the task,","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"Bandov"},"content":" * including its type, completion status, and description.","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"Bandov"},"content":" * @return A string representation of the task.","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"Bandov"},"content":" @Override","lastModifiedDate":"2024-01-20"},{"lineNumber":60,"author":{"gitId":"Bandov"},"content":" public String toString() {","lastModifiedDate":"2024-01-20"},{"lineNumber":61,"author":{"gitId":"Bandov"},"content":" return \"[T]\" + (isDone ? \"[X] \" : \"[ ] \") + description;","lastModifiedDate":"2024-01-20"},{"lineNumber":62,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":63,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":65,"author":{"gitId":"Bandov"},"content":" * Returns a string representation of the task formatted for file storage,","lastModifiedDate":"2024-01-27"},{"lineNumber":66,"author":{"gitId":"Bandov"},"content":" * including its type, completion status, and description.","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":68,"author":{"gitId":"Bandov"},"content":" * @return A string formatted for file storage.","lastModifiedDate":"2024-01-27"},{"lineNumber":69,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":70,"author":{"gitId":"Bandov"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"Bandov"},"content":" return \"T\" + \" | \" + (isDone ? \"1\" : \"0\") + \" | \" + description;","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":75,"author":{"gitId":"Bandov"},"content":" * Returns a Task instance from the string representation of the task stored in the file.","lastModifiedDate":"2024-01-27"},{"lineNumber":76,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":77,"author":{"gitId":"Bandov"},"content":" * @param str The string representation of the task stored in the file.","lastModifiedDate":"2024-01-27"},{"lineNumber":78,"author":{"gitId":"Bandov"},"content":" * @return The Task instance from the string representation of the task stored in the file.","lastModifiedDate":"2024-01-27"},{"lineNumber":79,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":80,"author":{"gitId":"Bandov"},"content":" public static Task fromFileString(String str) {","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"Bandov"},"content":" String[] parts \u003d str.split(\" \\\\| \");","lastModifiedDate":"2024-01-25"},{"lineNumber":82,"author":{"gitId":"Bandov"},"content":" if (!parts[0].equals(\"T\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":83,"author":{"gitId":"Bandov"},"content":" return null;","lastModifiedDate":"2024-01-25"},{"lineNumber":84,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":85,"author":{"gitId":"Bandov"},"content":" String description \u003d parts[2].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":86,"author":{"gitId":"Bandov"},"content":" boolean isDone \u003d parts[1].trim().equals(\"1\");","lastModifiedDate":"2024-01-25"},{"lineNumber":87,"author":{"gitId":"Bandov"},"content":" Task task \u003d new Task(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":88,"author":{"gitId":"Bandov"},"content":" if (isDone) {","lastModifiedDate":"2024-01-27"},{"lineNumber":89,"author":{"gitId":"Bandov"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-27"},{"lineNumber":90,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":91,"author":{"gitId":"Bandov"},"content":" return task;","lastModifiedDate":"2024-01-25"},{"lineNumber":92,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":93,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":94,"author":{"gitId":"Bandov"},"content":"}","lastModifiedDate":"2024-01-20"}],"authorContributionMap":{"Bandov":94}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Bandov"},"content":"package duke;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Bandov"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Bandov"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"Bandov"},"content":" * The TaskList class represents a list of tasks.","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"Bandov"},"content":" * It encapsulates an ArrayList of Task objects and","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"Bandov"},"content":" * provides methods to manipulate the list.","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"Bandov"},"content":"public class TaskList {","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"Bandov"},"content":" private ArrayList\u003cTask\u003e list;","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"Bandov"},"content":" * Constructs a TaskList with the specified list of tasks.","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"Bandov"},"content":" * @param list An ArrayList of Task objects.","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"Bandov"},"content":" public TaskList(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"Bandov"},"content":" this.list \u003d list;","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"Bandov"},"content":" * Constructs an empty TaskList.","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"Bandov"},"content":" public TaskList() {","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"Bandov"},"content":" this.list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"Bandov"},"content":" * Adds a task to the task list.","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"Bandov"},"content":" * @param task The Task object to be added.","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"Bandov"},"content":" public void add(Task task) {","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"Bandov"},"content":" list.add(task);","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"Bandov"},"content":" * Removes a task from the task list at the specified index.","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"Bandov"},"content":" * @param index The index of the task to be removed.","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"Bandov"},"content":" public void remove(int index) {","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"Bandov"},"content":" list.remove(index);","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"Bandov"},"content":" * Retrieves a task from the task list at the specified index.","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"Bandov"},"content":" * @param index The index of the task to be retrieved.","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"Bandov"},"content":" * @return The Task object at the specified index.","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"Bandov"},"content":" public Task get(int index) {","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"Bandov"},"content":" return list.get(index);","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"Bandov"},"content":" * Returns the number of tasks in the task list.","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"Bandov"},"content":" * @return The size of the task list.","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"Bandov"},"content":" public int size() {","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"Bandov"},"content":" return list.size();","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"Bandov"},"content":" * Returns the ArrayList containing all the tasks.","lastModifiedDate":"2024-01-27"},{"lineNumber":68,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":69,"author":{"gitId":"Bandov"},"content":" * @return An ArrayList of Task objects.","lastModifiedDate":"2024-01-27"},{"lineNumber":70,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":71,"author":{"gitId":"Bandov"},"content":" public ArrayList\u003cTask\u003e getList() {","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"Bandov"},"content":" return list;","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":76,"author":{"gitId":"Bandov"},"content":" * Finds all tasks in the task list that contain the specified keyword.","lastModifiedDate":"2024-01-27"},{"lineNumber":77,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":78,"author":{"gitId":"Bandov"},"content":" * @param keyword The keyword to search for.","lastModifiedDate":"2024-01-27"},{"lineNumber":79,"author":{"gitId":"Bandov"},"content":" * @return An ArrayList of Task objects that contain the keyword.","lastModifiedDate":"2024-01-27"},{"lineNumber":80,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":81,"author":{"gitId":"Bandov"},"content":" public ArrayList\u003cTask\u003e find(String keyword) {","lastModifiedDate":"2024-01-27"},{"lineNumber":82,"author":{"gitId":"Bandov"},"content":" ArrayList\u003cTask\u003e matchingTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-27"},{"lineNumber":83,"author":{"gitId":"Bandov"},"content":" for (Task task : list) {","lastModifiedDate":"2024-01-27"},{"lineNumber":84,"author":{"gitId":"Bandov"},"content":" if (task.getDescription().contains(keyword)) {","lastModifiedDate":"2024-01-27"},{"lineNumber":85,"author":{"gitId":"Bandov"},"content":" matchingTasks.add(task);","lastModifiedDate":"2024-01-27"},{"lineNumber":86,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":87,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":88,"author":{"gitId":"Bandov"},"content":" return matchingTasks;","lastModifiedDate":"2024-01-27"},{"lineNumber":89,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":90,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":91,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":92,"author":{"gitId":"Bandov"},"content":" * Returns a string representation of the task list.","lastModifiedDate":"2024-01-27"},{"lineNumber":93,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":94,"author":{"gitId":"Bandov"},"content":" * @return A string representation of the task list.","lastModifiedDate":"2024-01-27"},{"lineNumber":95,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":96,"author":{"gitId":"Bandov"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":97,"author":{"gitId":"Bandov"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":98,"author":{"gitId":"Bandov"},"content":" return list.toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":99,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":100,"author":{"gitId":"Bandov"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Bandov":100}},{"path":"src/main/java/duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Bandov"},"content":"package duke;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Bandov"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Bandov"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"Bandov"},"content":" * The Ui class is responsible for handling user interactions.","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"Bandov"},"content":" * It provides methods to display messages to the user and parse user input.","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"Bandov"},"content":"public class Ui {","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"Bandov"},"content":" Scanner scanner;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"Bandov"},"content":" * Constructs a Ui object, initializing a scanner to read user input.","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"Bandov"},"content":" public Ui() {","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"Bandov"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"Bandov"},"content":" * Prints one or more messages to the console, each separated by a line.","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"Bandov"},"content":" * @param messages An array of messages to be printed.","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"Bandov"},"content":" public static void printWithLines(String... messages) {","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"Bandov"},"content":" System.out.println(\"------------------------------------------\");","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"Bandov"},"content":" for (String message : messages) {","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"Bandov"},"content":" System.out.println(message);","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"Bandov"},"content":" * Displays an error message when there is an error loading the file.","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"Bandov"},"content":" public static void showLoadingError() {","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"Bandov"},"content":" printWithLines(\"Error loading file\");","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"Bandov"},"content":" * Parses and processes the user input string.","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"Bandov"},"content":" * It delegates the command handling to the Parser class.","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"Bandov"},"content":" * @param list The TaskList to be used for executing commands.","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"Bandov"},"content":" * @param message The user input string.","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"Bandov"},"content":" public static void parse(TaskList list, String message) {","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"Bandov"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"Bandov"},"content":" if (message.startsWith(\"todo\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"Bandov"},"content":" Parser.handleTodo(list, message);","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"Bandov"},"content":" } else if (message.startsWith(\"deadline\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"Bandov"},"content":" Parser.handleDeadline(list, message);","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"Bandov"},"content":" } else if (message.startsWith(\"event\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"Bandov"},"content":" Parser.handleEvent(list, message);","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"Bandov"},"content":" } else if (message.equals(\"list\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"Bandov"},"content":" Parser.handleList(list);","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"Bandov"},"content":" } else if (message.startsWith(\"mark\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"Bandov"},"content":" Parser.handleMark(list, message);","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"Bandov"},"content":" } else if (message.startsWith(\"unmark\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"Bandov"},"content":" Parser.handleUnmark(list, message);","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"Bandov"},"content":" } else if (message.startsWith(\"delete\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"Bandov"},"content":" Parser.deleteTask(list, message);","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"Bandov"},"content":" } else if (message.startsWith(\"find\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"Bandov"},"content":" Parser.findTask(list, message);","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"Bandov"},"content":" } else if (!message.equals(\"bye\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"Bandov"},"content":" throw new DukeException(\"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means buddy.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"Bandov"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"Bandov"},"content":" printWithLines(e.getMessage());","lastModifiedDate":"2024-01-25"},{"lineNumber":68,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":69,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"Bandov"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Bandov":71}},{"path":"src/main/java/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"Bandov"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Bandov"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Bandov"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Bandov"},"content":"then","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Bandov"},"content":" mkdir ../bin","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Bandov"},"content":"fi","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Bandov"},"content":"# delete output from previous run","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Bandov"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Bandov"},"content":"then","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Bandov"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Bandov"},"content":"fi","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Bandov"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Bandov"},"content":"if ! javac -Xlint:none -d ../bin /Users/dom/ip/src/main/java/duke/Duke.java","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"Bandov"},"content":"then","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"Bandov"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"Bandov"},"content":" exit 1","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"Bandov"},"content":"fi","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"Bandov"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"Bandov"},"content":"java Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"Bandov"},"content":"# compare the output to the expected output","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"Bandov"},"content":"diff ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"Bandov"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"Bandov"},"content":"then","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"Bandov"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"Bandov"},"content":" exit 0","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"Bandov"},"content":"else","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"Bandov"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"Bandov"},"content":" exit 1","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"Bandov"},"content":"fi","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Bandov":35}},{"path":"src/test/java/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Bandov"},"content":"import duke.*;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Bandov"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Bandov"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Bandov"},"content":"import org.junit.jupiter.api.function.Executable;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Bandov"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Bandov"},"content":"class ParserTest {","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Bandov"},"content":" private TaskList list;","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Bandov"},"content":" @BeforeEach","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Bandov"},"content":" void setUp() {","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Bandov"},"content":" list \u003d new TaskList();","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Bandov"},"content":" // Mocking Ui methods or ensure that Ui methods can run in a test environment","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Bandov"},"content":" @Test","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Bandov"},"content":" void handleTodo_validInput_addsTodo() {","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Bandov"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"Bandov"},"content":" Parser.handleTodo(list, \"todo read book\");","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"Bandov"},"content":" assertEquals(1, list.size());","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Bandov"},"content":" Task addedTask \u003d list.get(0);","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"Bandov"},"content":" assertEquals(\"read book\", addedTask.getDescription());","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"Bandov"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"Bandov"},"content":" fail(\"Exception should not be thrown for valid input\");","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"Bandov"},"content":" @Test","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"Bandov"},"content":" void handleTodo_emptyDescription_throwsDukeException() {","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"Bandov"},"content":" Executable todoWithEmptyDescription \u003d () -\u003e Parser.handleTodo(list, \"todo\");","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"Bandov"},"content":" assertThrows(DukeException.class, todoWithEmptyDescription, \"Exception was expected for empty todo description\");","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"Bandov"},"content":" @Test","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"Bandov"},"content":" void handleTodo_validInput_addsDeadline() {","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"Bandov"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"Bandov"},"content":" Parser.handleDeadline(list, \"deadline read book /by 2020-02-02\");","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"Bandov"},"content":" assertEquals(1, list.size());","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"Bandov"},"content":" Deadline addedTask \u003d (Deadline) list.get(0);","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"Bandov"},"content":" assertEquals(\"read book\", addedTask.getDescription());","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"Bandov"},"content":" assertEquals(\"2020-02-02\", addedTask.getDate());","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"Bandov"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"Bandov"},"content":" fail(\"Exception should not be thrown for valid input\");","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":48,"author":{"gitId":"Bandov"},"content":" @Test","lastModifiedDate":"2024-01-26"},{"lineNumber":49,"author":{"gitId":"Bandov"},"content":" void handleDeadline_emptyDescription_throwsDukeException() {","lastModifiedDate":"2024-01-26"},{"lineNumber":50,"author":{"gitId":"Bandov"},"content":" Executable todoWithEmptyDescription \u003d () -\u003e Parser.handleDeadline(list, \"deadline\");","lastModifiedDate":"2024-01-26"},{"lineNumber":51,"author":{"gitId":"Bandov"},"content":" assertThrows(DukeException.class, todoWithEmptyDescription, \"Exception was expected for empty todo description\");","lastModifiedDate":"2024-01-26"},{"lineNumber":52,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":53,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":54,"author":{"gitId":"Bandov"},"content":" @Test","lastModifiedDate":"2024-01-26"},{"lineNumber":55,"author":{"gitId":"Bandov"},"content":" void handleTodo_validInput_addsEvent() {","lastModifiedDate":"2024-01-26"},{"lineNumber":56,"author":{"gitId":"Bandov"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":57,"author":{"gitId":"Bandov"},"content":" Parser.handleEvent(list, \"event read book /from 2020-02-02 23:00 /to 2020-02-03 23:15\");","lastModifiedDate":"2024-01-26"},{"lineNumber":58,"author":{"gitId":"Bandov"},"content":" assertEquals(1, list.size());","lastModifiedDate":"2024-01-26"},{"lineNumber":59,"author":{"gitId":"Bandov"},"content":" Event addedTask \u003d (Event) list.get(0);","lastModifiedDate":"2024-01-26"},{"lineNumber":60,"author":{"gitId":"Bandov"},"content":" assertEquals(\"read book\", addedTask.getDescription());","lastModifiedDate":"2024-01-26"},{"lineNumber":61,"author":{"gitId":"Bandov"},"content":" assertEquals(\"2020-02-02T23:00\", addedTask.getFromDate());","lastModifiedDate":"2024-01-26"},{"lineNumber":62,"author":{"gitId":"Bandov"},"content":" assertEquals(\"2020-02-03T23:15\", addedTask.getToDate());","lastModifiedDate":"2024-01-26"},{"lineNumber":63,"author":{"gitId":"Bandov"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":64,"author":{"gitId":"Bandov"},"content":" fail(\"Exception should not be thrown for valid input\");","lastModifiedDate":"2024-01-26"},{"lineNumber":65,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":66,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":67,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":68,"author":{"gitId":"Bandov"},"content":" @Test","lastModifiedDate":"2024-01-26"},{"lineNumber":69,"author":{"gitId":"Bandov"},"content":" void handleEvent_emptyDescription_throwsDukeException() {","lastModifiedDate":"2024-01-26"},{"lineNumber":70,"author":{"gitId":"Bandov"},"content":" Executable todoWithEmptyDescription \u003d () -\u003e Parser.handleDeadline(list, \"event\");","lastModifiedDate":"2024-01-26"},{"lineNumber":71,"author":{"gitId":"Bandov"},"content":" assertThrows(DukeException.class, todoWithEmptyDescription, \"Exception was expected for empty todo description\");","lastModifiedDate":"2024-01-26"},{"lineNumber":72,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":73,"author":{"gitId":"Bandov"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Bandov":73}},{"path":"src/test/java/StorageTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Bandov"},"content":"import duke.DukeException;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Bandov"},"content":"import duke.Storage;","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Bandov"},"content":"import duke.Task;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Bandov"},"content":"import duke.TaskList;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Bandov"},"content":"import org.junit.jupiter.api.AfterEach;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Bandov"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Bandov"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Bandov"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Bandov"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Bandov"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Bandov"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Bandov"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Bandov"},"content":"class StorageTest {","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Bandov"},"content":" private Path tempFile;","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Bandov"},"content":" private Storage storage;","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Bandov"},"content":" @BeforeEach","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"Bandov"},"content":" void setUp() throws IOException, DukeException {","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"Bandov"},"content":" // Create a temporary file","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Bandov"},"content":" tempFile \u003d Files.createTempFile(\"test\", \".txt\");","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"Bandov"},"content":" // Initialize Storage with the temporary file path","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"Bandov"},"content":" storage \u003d new Storage(tempFile.toString());","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"Bandov"},"content":" @AfterEach","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"Bandov"},"content":" void tearDown() throws IOException {","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"Bandov"},"content":" // Delete the temporary file after each test","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"Bandov"},"content":" Files.deleteIfExists(tempFile);","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"Bandov"},"content":" @Test","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"Bandov"},"content":" void saveAndLoad_TodoTask() throws IOException, DukeException {","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"Bandov"},"content":" TaskList list \u003d new TaskList();","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"Bandov"},"content":" list.add(new Task(\"read book\")); // Assuming Task is a valid type for simplicity","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"Bandov"},"content":" // Save the list to the file","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"Bandov"},"content":" Storage.saveCurrentList(list);","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"Bandov"},"content":" // Load the list back","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"Bandov"},"content":" ArrayList\u003cTask\u003e loadedList \u003d storage.load();","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"Bandov"},"content":" // Check if the loaded list matches the saved list","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"Bandov"},"content":" assertEquals(1, loadedList.size());","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"Bandov"},"content":" assertEquals(\"read book\", loadedList.get(0).getDescription());","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":48,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":49,"author":{"gitId":"Bandov"},"content":"}","lastModifiedDate":"2024-01-26"},{"lineNumber":50,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Bandov":50}},{"path":"src/test/java/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Bandov"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Bandov"},"content":"import duke.Task;","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Bandov"},"content":"import duke.TaskList;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Bandov"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Bandov"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Bandov"},"content":"public class TaskListTest {","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Bandov"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Bandov"},"content":" @BeforeEach","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Bandov"},"content":" void setUp() {","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Bandov"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Bandov"},"content":" @Test","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Bandov"},"content":" void testAddTask() {","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Bandov"},"content":" Task task \u003d new Task(\"Read book\");","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Bandov"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Bandov"},"content":" assertEquals(1, tasks.size());","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"Bandov"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Bandov":21}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Bandov"},"content":"todo Read a book","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Bandov"},"content":"deadline Submit assignment /by 2024-01-30","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Bandov"},"content":"event Team meeting /from 2024-01-25 10:00 /to 2024-01-25 12:00","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Bandov"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Bandov"},"content":"mark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Bandov"},"content":"unmark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Bandov"},"content":"todo","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Bandov"},"content":"deadline Finish project","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Bandov"},"content":"event Conference /from 2024-01-28","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Bandov"},"content":"mark 100","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Bandov"},"content":"unmark 100","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Bandov"},"content":"unmark","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Bandov"},"content":"dance","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Bandov"},"content":"todo Complete Java project","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Bandov"},"content":"deadline File taxes /by 2024-04-15","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Bandov"},"content":"event Birthday Party /from 2024-03-10 18:00 /to 2024-03-10 22:00","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"Bandov"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"Bandov"},"content":"mark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"Bandov"},"content":"unmark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"Bandov"},"content":"deadline Prepare presentation /by 2024-03-05","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"Bandov"},"content":"event Workshop /from 2024-02-20 09:00 /to 2024-02-20 12:00","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"Bandov"},"content":"todo Clean the house","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"Bandov"},"content":"delete 1","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"Bandov"},"content":"delete 3","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"Bandov"},"content":"delete 100","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"Bandov"},"content":"delete","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"Bandov"},"content":"todo Grocery Shopping","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"Bandov"},"content":"todo Call Mom","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"Bandov"},"content":"deadline Renew Insurance /by 2024-05-01","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"Bandov"},"content":"event Doctor\u0027s Appointment /from 2024-04-20 15:00 /to 2024-04-20 16:00","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"Bandov"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"Bandov"},"content":"mark 4","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"Bandov"},"content":"mark 5","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"Bandov"},"content":"unmark 4","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"Bandov"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Bandov":35}},{"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":"Bandov"},"content":"if ! javac -Xlint:none -d ../bin /Users/dom/ip/src/main/java/*.java","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"Bandov"},"content":"java -cp ../bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"Bandov"},"content":"diff ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Bandov":4,"-":31}}] +[{"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":"Bandov"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2024-01-27"},{"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":"Bandov"},"content":"checkstyle {","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"Bandov"},"content":" toolVersion \u003d \"10.2\"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Bandov"},"content":"}","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-27"},{"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":"Bandov"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"Bandov"},"content":" archiveFileName \u003d \u0027duke.jar\u0027","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Bandov":7,"-":41}},{"path":"src/main/java/duke/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Bandov"},"content":"package duke;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Bandov"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Bandov"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"Bandov"},"content":" * The Deadline class represents a task with a deadline.","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"Bandov"},"content":" * It is a subclass of the Task class.","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"Bandov"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-20"},{"lineNumber":10,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":11,"author":{"gitId":"Bandov"},"content":" protected LocalDate by;","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":13,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"Bandov"},"content":" * Constructor for Deadline.","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"Bandov"},"content":" * @param description The description of the deadline.","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"Bandov"},"content":" * @param by The deadline of the deadline.","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"Bandov"},"content":" public Deadline(String description, LocalDate by) {","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"Bandov"},"content":" super(description);","lastModifiedDate":"2024-01-20"},{"lineNumber":21,"author":{"gitId":"Bandov"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-20"},{"lineNumber":22,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":23,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":24,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"Bandov"},"content":" * Returns the string representation of the deadline.","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"Bandov"},"content":" * @return The string representation of the deadline.","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"Bandov"},"content":" @Override","lastModifiedDate":"2024-01-20"},{"lineNumber":30,"author":{"gitId":"Bandov"},"content":" public String toString() {","lastModifiedDate":"2024-01-20"},{"lineNumber":31,"author":{"gitId":"Bandov"},"content":" return \"[D]\" + (isDone ? \"[X] \" : \"[ ] \") + super.description + \" (by: \" + by + \")\";","lastModifiedDate":"2024-01-20"},{"lineNumber":32,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":33,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"Bandov"},"content":" * Returns the string representation of the deadline to be stored in the file.","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"Bandov"},"content":" * @return The string representation of the deadline to be stored in the file.","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"Bandov"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"Bandov"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"Bandov"},"content":" return \"D\" + \" | \" + (isDone ? \"1\" : \"0\") + \" | \" + description + \" | \" + by;","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"Bandov"},"content":" * Returns a Deadline instance from the string representation of the deadline stored in the file.","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"Bandov"},"content":" * @param str The string representation of the deadline stored in the file.","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"Bandov"},"content":" * @return The Deadline instance from the string representation of the deadline stored in the file.","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"Bandov"},"content":" public static Deadline fromFileString(String str) {","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"Bandov"},"content":" String[] parts \u003d str.split(\" \\\\| \");","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"Bandov"},"content":" if (!parts[0].equals(\"D\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"Bandov"},"content":" return null;","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"Bandov"},"content":" String description \u003d parts[2].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"Bandov"},"content":" LocalDate by \u003d LocalDate.parse(parts[3].trim());","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"Bandov"},"content":" boolean isDone \u003d parts[1].trim().equals(\"1\");","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"Bandov"},"content":" Deadline deadline \u003d new Deadline(description, by);","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"Bandov"},"content":" if (isDone) {","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"Bandov"},"content":" deadline.markAsDone();","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"Bandov"},"content":" return deadline;","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":65,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":66,"author":{"gitId":"Bandov"},"content":" * Returns the date of the deadline.","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":68,"author":{"gitId":"Bandov"},"content":" * @return The date of the deadline.","lastModifiedDate":"2024-01-27"},{"lineNumber":69,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":70,"author":{"gitId":"Bandov"},"content":" public String getDate() {","lastModifiedDate":"2024-01-26"},{"lineNumber":71,"author":{"gitId":"Bandov"},"content":" return by.toString();","lastModifiedDate":"2024-01-26"},{"lineNumber":72,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":73,"author":{"gitId":"Bandov"},"content":"}","lastModifiedDate":"2024-01-20"}],"authorContributionMap":{"Bandov":73}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Bandov"},"content":"package duke;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Bandov"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Bandov"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":7,"author":{"gitId":"Bandov"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"Bandov"},"content":" * The Duke class is the main class of the Duke application.","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"Bandov"},"content":" * It is responsible for the initialization of the Storage and TaskList instances.","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"Bandov"},"content":" * It also contains the main method that serves as the entry point for the Duke application.","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"Bandov"},"content":"public class Duke {","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"Bandov"},"content":" private static TaskList tasks;","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"Bandov"},"content":" private Storage storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"Bandov"},"content":" * Constructor for Duke.","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"Bandov"},"content":" * Initializes the Storage and TaskList instances.","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"Bandov"},"content":" * @param filePath The path to the file where the task list is stored.","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"Bandov"},"content":" * @throws DukeException If an error occurs while loading the task list.","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"Bandov"},"content":" public Duke(String filePath) throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"Bandov"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"Bandov"},"content":" try {","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"Bandov"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"Bandov"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"Bandov"},"content":" Ui.showLoadingError();","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"Bandov"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"Bandov"},"content":" * The main method that serves as the entry point for the Duke application.","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"Bandov"},"content":" * Initializes the Duke instance and processes the user input until the \"bye\" command is given.","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"Bandov"},"content":" * @param args Command line arguments (not used).","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"Bandov"},"content":" * @throws IOException If an I/O error occurs.","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"Bandov"},"content":" public static void main(String[] args) throws IOException {","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"Bandov"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"Bandov"},"content":" Duke duke \u003d new Duke(\"./data/duke.txt\");","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"Bandov"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"Bandov"},"content":" Ui.showLoadingError();","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"Bandov"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":48,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":49,"author":{"gitId":"Bandov"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"Bandov"},"content":" Ui.printWithLines(\"Hello! I\u0027m Bob!\", \"What can I do for you?\");","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":52,"author":{"gitId":"Bandov"},"content":" boolean isRunning \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"Bandov"},"content":" while (isRunning) {","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"Bandov"},"content":" String message \u003d scanner.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"Bandov"},"content":" Ui.parse(tasks, message);","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"Bandov"},"content":" isRunning \u003d !message.equals(\"bye\");","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":58,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":59,"author":{"gitId":"Bandov"},"content":" Storage.saveCurrentList(tasks);","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"Bandov"},"content":" Ui.printWithLines(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"Bandov"},"content":" System.out.println(\"------------------------------------------\");","lastModifiedDate":"2024-01-20"},{"lineNumber":62,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"Bandov":63,"-":1}},{"path":"src/main/java/duke/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Bandov"},"content":"package duke;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"Bandov"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"Bandov"},"content":" * The DukeException class represents an exception specific to the Duke application.","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"Bandov"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"Bandov"},"content":" * Constructor for DukeException.","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"Bandov"},"content":" * @param message The error message.","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"Bandov"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"Bandov"},"content":" super(message);","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"Bandov"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Bandov":16}},{"path":"src/main/java/duke/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Bandov"},"content":"package duke;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Bandov"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Bandov"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"Bandov"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"Bandov"},"content":" * Represents an event task with a description, start time, and end time.","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"Bandov"},"content":" * It extends the Task class by adding time-specific information.","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"Bandov"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-20"},{"lineNumber":11,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":12,"author":{"gitId":"Bandov"},"content":" protected LocalDateTime from;","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"Bandov"},"content":" protected LocalDateTime to;","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":15,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"Bandov"},"content":" * Constructs an Event task with the specified description, start time, and end time.","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"Bandov"},"content":" * @param description The description of the event.","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"Bandov"},"content":" * @param from The start time of the event.","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"Bandov"},"content":" * @param to The end time of the event.","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"Bandov"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"Bandov"},"content":" super(description);","lastModifiedDate":"2024-01-20"},{"lineNumber":24,"author":{"gitId":"Bandov"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-20"},{"lineNumber":25,"author":{"gitId":"Bandov"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-20"},{"lineNumber":26,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":27,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":28,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"Bandov"},"content":" * Returns a string representation of the event task, including its type, status, description, and timing.","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"Bandov"},"content":" * @return A string representation of the event task.","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"Bandov"},"content":" @Override","lastModifiedDate":"2024-01-20"},{"lineNumber":34,"author":{"gitId":"Bandov"},"content":" public String toString() {","lastModifiedDate":"2024-01-20"},{"lineNumber":35,"author":{"gitId":"Bandov"},"content":" return \"[E]\" + (isDone ? \"[X] \" : \"[ ] \") + super.description + \" (from: \" + from + \" to: \" + to + \")\";","lastModifiedDate":"2024-01-20"},{"lineNumber":36,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":37,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"Bandov"},"content":" * Returns a string representation of the event task formatted for file storage.","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"Bandov"},"content":" * @return A string formatted for file storage.","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"Bandov"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"Bandov"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"Bandov"},"content":" return \"E\" + \" | \" + (isDone ? \"1\" : \"0\") + \" | \" + description + \" | \" + from + \" - \" + to;","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"Bandov"},"content":" * Creates an Event object from a string representation formatted for file storage.","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"Bandov"},"content":" * @param str The string representation of the event from a file.","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"Bandov"},"content":" * @return An Event object, or null if the string format is invalid.","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"Bandov"},"content":" public static Event fromFileString(String str) {","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"Bandov"},"content":" String[] parts \u003d str.split(\" \\\\| \");","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"Bandov"},"content":" if (!parts[0].equals(\"E\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"Bandov"},"content":" return null; // or throw an exception","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"Bandov"},"content":" String description \u003d parts[2].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"Bandov"},"content":" String[] times \u003d parts[3].split(\" - \");","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"Bandov"},"content":" if (times.length \u003c 2) {","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"Bandov"},"content":" return null;","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"Bandov"},"content":" String from \u003d times[0].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"Bandov"},"content":" String to \u003d times[1].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"Bandov"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\u0027T\u0027HH:mm\");","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"Bandov"},"content":" LocalDateTime dateTimeFrom \u003d LocalDateTime.parse(from, formatter);","lastModifiedDate":"2024-01-25"},{"lineNumber":68,"author":{"gitId":"Bandov"},"content":" LocalDateTime dateTimeTo \u003d LocalDateTime.parse(to, formatter);","lastModifiedDate":"2024-01-25"},{"lineNumber":69,"author":{"gitId":"Bandov"},"content":" boolean isDone \u003d parts[1].trim().equals(\"1\");","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"Bandov"},"content":" Event event \u003d new Event(description, dateTimeFrom, dateTimeTo);","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"Bandov"},"content":" if (isDone) {","lastModifiedDate":"2024-01-27"},{"lineNumber":72,"author":{"gitId":"Bandov"},"content":" event.markAsDone();","lastModifiedDate":"2024-01-27"},{"lineNumber":73,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":74,"author":{"gitId":"Bandov"},"content":" return event;","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":78,"author":{"gitId":"Bandov"},"content":" * Returns the start time of the event.","lastModifiedDate":"2024-01-27"},{"lineNumber":79,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":80,"author":{"gitId":"Bandov"},"content":" * @return A string representation of the start time.","lastModifiedDate":"2024-01-27"},{"lineNumber":81,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":82,"author":{"gitId":"Bandov"},"content":" public String getFromDate() {","lastModifiedDate":"2024-01-26"},{"lineNumber":83,"author":{"gitId":"Bandov"},"content":" return from.toString();","lastModifiedDate":"2024-01-26"},{"lineNumber":84,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":85,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":86,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":87,"author":{"gitId":"Bandov"},"content":" * Returns the end time of the event.","lastModifiedDate":"2024-01-27"},{"lineNumber":88,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":89,"author":{"gitId":"Bandov"},"content":" * @return A string representation of the end time.","lastModifiedDate":"2024-01-27"},{"lineNumber":90,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":91,"author":{"gitId":"Bandov"},"content":" public String getToDate() {","lastModifiedDate":"2024-01-26"},{"lineNumber":92,"author":{"gitId":"Bandov"},"content":" return to.toString();","lastModifiedDate":"2024-01-26"},{"lineNumber":93,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":94,"author":{"gitId":"Bandov"},"content":"}","lastModifiedDate":"2024-01-20"}],"authorContributionMap":{"Bandov":94}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Bandov"},"content":"package duke;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Bandov"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Bandov"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Bandov"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Bandov"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Bandov"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"Bandov"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"Bandov"},"content":" * The Parser class represents a parser that parses the user input.","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"Bandov"},"content":"public class Parser {","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"Bandov"},"content":" * Parses the user input for a \"todo\" command and adds a new Todo task to the task list.","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"Bandov"},"content":" * It throws an exception if the input does not contain a description for the todo.","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"Bandov"},"content":" * @param list The TaskList to which the new todo task is added.","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"Bandov"},"content":" * @param message The user input string.","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"Bandov"},"content":" * @throws DukeException If the todo description is empty.","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"Bandov"},"content":" public static void handleTodo(TaskList list, String message) throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"Bandov"},"content":" if (message.trim().equals(\"todo\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"Bandov"},"content":" throw new DukeException(\"OOPS!!! The description of a todo cannot be empty buddy.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"Bandov"},"content":" String description \u003d message.substring(5).trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"Bandov"},"content":" Task task \u003d new Task(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"Bandov"},"content":" list.add(task);","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"Bandov"},"content":" Ui.printWithLines(\"Got it. I\u0027ve added this task:\", task.toString(),","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"Bandov"},"content":" \"Now you have \" + list.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"Bandov"},"content":" * Parses and handles the \"deadline\" command.","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"Bandov"},"content":" * Adds a deadline task to the task list with a specified due date.","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"Bandov"},"content":" * @param list The task list to add the deadline to.","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"Bandov"},"content":" * @param message The user input string.","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"Bandov"},"content":" * @throws DukeException If the deadline or its date/time format is incorrect.","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"Bandov"},"content":" public static void handleDeadline(TaskList list, String message) throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"Bandov"},"content":" String[] parts \u003d message.split(\"/by\", 2);","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"Bandov"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"Bandov"},"content":" throw new DukeException(\"OOPS!!! The deadline date/time is missing buddy.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"Bandov"},"content":" String description \u003d parts[0].substring(9).trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"Bandov"},"content":" String by \u003d parts[1].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"Bandov"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"Bandov"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"Bandov"},"content":" LocalDate date \u003d LocalDate.parse(by, formatter);","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"Bandov"},"content":" Deadline task \u003d new Deadline(description, date);","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"Bandov"},"content":" list.add(task);","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"Bandov"},"content":" Ui.printWithLines(\"Got it. I\u0027ve added this task:\", task.toString(),","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"Bandov"},"content":" \"Now you have \" + list.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"Bandov"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"Bandov"},"content":" throw new DukeException(\"OOPS!!! The deadline date format is incorrect. Please use yyyy-MM-dd format.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"Bandov"},"content":" * Parses and handles the \"event\" command.","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"Bandov"},"content":" * Adds an event task to the task list with specified start and end times.","lastModifiedDate":"2024-01-27"},{"lineNumber":64,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":65,"author":{"gitId":"Bandov"},"content":" * @param list The task list to add the event to.","lastModifiedDate":"2024-01-27"},{"lineNumber":66,"author":{"gitId":"Bandov"},"content":" * @param message The user input string.","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"Bandov"},"content":" * @throws DukeException If the event time is missing or the date/time format is incorrect.","lastModifiedDate":"2024-01-27"},{"lineNumber":68,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":69,"author":{"gitId":"Bandov"},"content":" public static void handleEvent(TaskList list, String message) throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"Bandov"},"content":" String[] parts \u003d message.split(\" /from \", 2);","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"Bandov"},"content":" if (parts.length \u003c 2 || !parts[1].contains(\" /to \")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"Bandov"},"content":" throw new DukeException(\"OOPS!!! The event time is missing or incomplete buddy.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"Bandov"},"content":" String description \u003d parts[0].substring(6).trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"Bandov"},"content":" String[] timeParts \u003d parts[1].split(\" /to \", 2);","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"Bandov"},"content":" String fromTime \u003d timeParts[0].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"Bandov"},"content":" String toTime \u003d timeParts[1].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"Bandov"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":79,"author":{"gitId":"Bandov"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2024-01-25"},{"lineNumber":80,"author":{"gitId":"Bandov"},"content":" LocalDateTime dateTimeFrom \u003d LocalDateTime.parse(fromTime, formatter);","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"Bandov"},"content":" LocalDateTime dateTimeTo \u003d LocalDateTime.parse(toTime, formatter);","lastModifiedDate":"2024-01-25"},{"lineNumber":82,"author":{"gitId":"Bandov"},"content":" Event task \u003d new Event(description, dateTimeFrom, dateTimeTo);","lastModifiedDate":"2024-01-25"},{"lineNumber":83,"author":{"gitId":"Bandov"},"content":" list.add(task);","lastModifiedDate":"2024-01-25"},{"lineNumber":84,"author":{"gitId":"Bandov"},"content":" Ui.printWithLines(\"Got it. I\u0027ve added this task:\", task.toString(),","lastModifiedDate":"2024-01-27"},{"lineNumber":85,"author":{"gitId":"Bandov"},"content":" \"Now you have \" + list.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":86,"author":{"gitId":"Bandov"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":87,"author":{"gitId":"Bandov"},"content":" throw new DukeException(\"OOPS!!! The deadline date format is incorrect. \"","lastModifiedDate":"2024-01-27"},{"lineNumber":88,"author":{"gitId":"Bandov"},"content":" + \"Please use yyyy-MM-dd HH:mm format.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":89,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":90,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":91,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":92,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":93,"author":{"gitId":"Bandov"},"content":" * Handles the \"list\" command.","lastModifiedDate":"2024-01-27"},{"lineNumber":94,"author":{"gitId":"Bandov"},"content":" * Displays all tasks in the task list.","lastModifiedDate":"2024-01-27"},{"lineNumber":95,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":96,"author":{"gitId":"Bandov"},"content":" * @param list The task list to display.","lastModifiedDate":"2024-01-27"},{"lineNumber":97,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":98,"author":{"gitId":"Bandov"},"content":" public static void handleList(TaskList list) {","lastModifiedDate":"2024-01-25"},{"lineNumber":99,"author":{"gitId":"Bandov"},"content":" ArrayList\u003cString\u003e taskDescriptions \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-25"},{"lineNumber":100,"author":{"gitId":"Bandov"},"content":" taskDescriptions.add(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":101,"author":{"gitId":"Bandov"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2024-01-25"},{"lineNumber":102,"author":{"gitId":"Bandov"},"content":" taskDescriptions.add((i + 1) + \". \" + list.get(i).toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":103,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":104,"author":{"gitId":"Bandov"},"content":" Ui.printWithLines(taskDescriptions.toArray(new String[0]));","lastModifiedDate":"2024-01-25"},{"lineNumber":105,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":106,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":107,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":108,"author":{"gitId":"Bandov"},"content":" * Parses and handles the \"mark\" command.","lastModifiedDate":"2024-01-27"},{"lineNumber":109,"author":{"gitId":"Bandov"},"content":" * Marks a task as done based on the specified task number.","lastModifiedDate":"2024-01-27"},{"lineNumber":110,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":111,"author":{"gitId":"Bandov"},"content":" * @param list The task list containing the task to be marked.","lastModifiedDate":"2024-01-27"},{"lineNumber":112,"author":{"gitId":"Bandov"},"content":" * @param message The user input string.","lastModifiedDate":"2024-01-27"},{"lineNumber":113,"author":{"gitId":"Bandov"},"content":" * @throws DukeException If the task number is missing or invalid.","lastModifiedDate":"2024-01-27"},{"lineNumber":114,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":115,"author":{"gitId":"Bandov"},"content":" public static void handleMark(TaskList list, String message) throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":116,"author":{"gitId":"Bandov"},"content":" if (message.trim().equals(\"mark\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":117,"author":{"gitId":"Bandov"},"content":" throw new DukeException(\"OOPS!!! The task number is missing buddy.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":118,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":119,"author":{"gitId":"Bandov"},"content":" int index \u003d Integer.parseInt(message.substring(5).trim()) - 1;","lastModifiedDate":"2024-01-25"},{"lineNumber":120,"author":{"gitId":"Bandov"},"content":" if (index \u003c 0 || index \u003e\u003d list.size()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":121,"author":{"gitId":"Bandov"},"content":" throw new DukeException(\"OOPS!!! Task number is invalid buddy.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":122,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":123,"author":{"gitId":"Bandov"},"content":" Task task \u003d list.get(index);","lastModifiedDate":"2024-01-25"},{"lineNumber":124,"author":{"gitId":"Bandov"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-25"},{"lineNumber":125,"author":{"gitId":"Bandov"},"content":" Ui.printWithLines(\"Nice! I\u0027ve marked this task as done:\", task.toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":126,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":127,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":128,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":129,"author":{"gitId":"Bandov"},"content":" * Parses and handles the \"unmark\" command.","lastModifiedDate":"2024-01-27"},{"lineNumber":130,"author":{"gitId":"Bandov"},"content":" * Marks a task as not done based on the specified task number.","lastModifiedDate":"2024-01-27"},{"lineNumber":131,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":132,"author":{"gitId":"Bandov"},"content":" * @param list The task list containing the task to be unmarked.","lastModifiedDate":"2024-01-27"},{"lineNumber":133,"author":{"gitId":"Bandov"},"content":" * @param message The user input string.","lastModifiedDate":"2024-01-27"},{"lineNumber":134,"author":{"gitId":"Bandov"},"content":" * @throws DukeException If the task number is missing or invalid.","lastModifiedDate":"2024-01-27"},{"lineNumber":135,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":136,"author":{"gitId":"Bandov"},"content":" public static void handleUnmark(TaskList list, String message) throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":137,"author":{"gitId":"Bandov"},"content":" if (message.trim().equals(\"unmark\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":138,"author":{"gitId":"Bandov"},"content":" throw new DukeException(\"OOPS!!! The task number is missing buddy.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":139,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":140,"author":{"gitId":"Bandov"},"content":" int index \u003d Integer.parseInt(message.substring(7).trim()) - 1;","lastModifiedDate":"2024-01-25"},{"lineNumber":141,"author":{"gitId":"Bandov"},"content":" if (index \u003c 0 || index \u003e\u003d list.size()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":142,"author":{"gitId":"Bandov"},"content":" throw new DukeException(\"OOPS!!! Task number is invalid buddy.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":143,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":144,"author":{"gitId":"Bandov"},"content":" Task task \u003d list.get(index);","lastModifiedDate":"2024-01-25"},{"lineNumber":145,"author":{"gitId":"Bandov"},"content":" task.unMarkAsDone();","lastModifiedDate":"2024-01-25"},{"lineNumber":146,"author":{"gitId":"Bandov"},"content":" Ui.printWithLines(\"OK, I\u0027ve marked this task as not done yet:\", task.toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":147,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":148,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":149,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":150,"author":{"gitId":"Bandov"},"content":" * Parses and handles the \"delete\" command.","lastModifiedDate":"2024-01-27"},{"lineNumber":151,"author":{"gitId":"Bandov"},"content":" * Deletes a task from the task list based on the specified task number.","lastModifiedDate":"2024-01-27"},{"lineNumber":152,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":153,"author":{"gitId":"Bandov"},"content":" * @param list The task list from which to delete the task.","lastModifiedDate":"2024-01-27"},{"lineNumber":154,"author":{"gitId":"Bandov"},"content":" * @param message The user input string.","lastModifiedDate":"2024-01-27"},{"lineNumber":155,"author":{"gitId":"Bandov"},"content":" * @throws DukeException If the task number is missing or invalid.","lastModifiedDate":"2024-01-27"},{"lineNumber":156,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":157,"author":{"gitId":"Bandov"},"content":" public static void deleteTask(TaskList list, String message) throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":158,"author":{"gitId":"Bandov"},"content":" if (message.trim().equals(\"delete\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":159,"author":{"gitId":"Bandov"},"content":" throw new DukeException(\"OOPS!!! The task number is missing buddy.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":160,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":161,"author":{"gitId":"Bandov"},"content":" int index \u003d Integer.parseInt(message.substring(7).trim()) - 1;","lastModifiedDate":"2024-01-25"},{"lineNumber":162,"author":{"gitId":"Bandov"},"content":" if (index \u003c 0 || index \u003e\u003d list.size()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":163,"author":{"gitId":"Bandov"},"content":" throw new DukeException(\"OOPS!!! Task number is invalid buddy.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":164,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":165,"author":{"gitId":"Bandov"},"content":" Task task \u003d list.get(index);","lastModifiedDate":"2024-01-25"},{"lineNumber":166,"author":{"gitId":"Bandov"},"content":" list.remove(index);","lastModifiedDate":"2024-01-25"},{"lineNumber":167,"author":{"gitId":"Bandov"},"content":" Ui.printWithLines(\"OK, I\u0027ve deleted this task:\", task.toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":168,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":169,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":170,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":171,"author":{"gitId":"Bandov"},"content":" * Parses and handles the \"find\" command.","lastModifiedDate":"2024-01-27"},{"lineNumber":172,"author":{"gitId":"Bandov"},"content":" * Finds all tasks in the task list that contain the specified keyword.","lastModifiedDate":"2024-01-27"},{"lineNumber":173,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":174,"author":{"gitId":"Bandov"},"content":" * @param list The task list to search for matching tasks.","lastModifiedDate":"2024-01-27"},{"lineNumber":175,"author":{"gitId":"Bandov"},"content":" * @param message The user input string.","lastModifiedDate":"2024-01-27"},{"lineNumber":176,"author":{"gitId":"Bandov"},"content":" * @throws DukeException If the keyword is missing.","lastModifiedDate":"2024-01-27"},{"lineNumber":177,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":178,"author":{"gitId":"Bandov"},"content":" public static void findTask(TaskList list, String message) throws DukeException {","lastModifiedDate":"2024-01-27"},{"lineNumber":179,"author":{"gitId":"Bandov"},"content":" if (message.trim().equals(\"find\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":180,"author":{"gitId":"Bandov"},"content":" throw new DukeException(\"OOPS!!! The keyword is missing buddy.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":181,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":182,"author":{"gitId":"Bandov"},"content":" String keyword \u003d message.substring(5).trim();","lastModifiedDate":"2024-01-27"},{"lineNumber":183,"author":{"gitId":"Bandov"},"content":" ArrayList\u003cTask\u003e matchingTasks \u003d list.find(keyword);","lastModifiedDate":"2024-01-27"},{"lineNumber":184,"author":{"gitId":"Bandov"},"content":" if (matchingTasks.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-27"},{"lineNumber":185,"author":{"gitId":"Bandov"},"content":" Ui.printWithLines(\"No matching task found.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":186,"author":{"gitId":"Bandov"},"content":" } else {","lastModifiedDate":"2024-01-27"},{"lineNumber":187,"author":{"gitId":"Bandov"},"content":" Ui.printWithLines(\"Here is the matching tasks in your list: \");","lastModifiedDate":"2024-01-27"},{"lineNumber":188,"author":{"gitId":"Bandov"},"content":" for (int i \u003d 0; i \u003c matchingTasks.size(); i++) {","lastModifiedDate":"2024-01-27"},{"lineNumber":189,"author":{"gitId":"Bandov"},"content":" System.out.println((i + 1) + \". \" + matchingTasks.get(i).toString());","lastModifiedDate":"2024-01-27"},{"lineNumber":190,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":191,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":192,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":193,"author":{"gitId":"Bandov"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Bandov":193}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Bandov"},"content":"package duke;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Bandov"},"content":"import java.io.File;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Bandov"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Bandov"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Bandov"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Bandov"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"Bandov"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"Bandov"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"Bandov"},"content":" * The Storage class is responsible for handling file operations including","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"Bandov"},"content":" * loading tasks from a file and saving tasks to a file.","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"Bandov"},"content":"public class Storage {","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"Bandov"},"content":" protected static String filePath;","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"Bandov"},"content":" protected Scanner scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Bandov"},"content":" protected File file;","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"Bandov"},"content":" * Creates a Storage object which initializes a Scanner for reading from a file.","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"Bandov"},"content":" * The file path is specified by the provided string.","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"Bandov"},"content":" * @param filePath The file path of the storage file.","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"Bandov"},"content":" * @throws DukeException If the file is not found.","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"Bandov"},"content":" public Storage(String filePath) throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"Bandov"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"Bandov"},"content":" Storage.filePath \u003d filePath;","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"Bandov"},"content":" this.file \u003d new File(filePath);","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"Bandov"},"content":" this.scanner \u003d new Scanner(file);","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"Bandov"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"Bandov"},"content":" throw new DukeException(\"Error loading file\");","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"Bandov"},"content":" * Writes the given text to a file at the specified file path.","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"Bandov"},"content":" * @param filePath The file path where the text is to be written.","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"Bandov"},"content":" * @param textToAdd The text to write to the file.","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"Bandov"},"content":" * @throws IOException If an I/O error occurs.","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"Bandov"},"content":" private static void writeToFile(String filePath, String textToAdd) throws IOException {","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"Bandov"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"Bandov"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"Bandov"},"content":" FileWriter fw \u003d new FileWriter(file);","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"Bandov"},"content":" fw.write(textToAdd);","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"Bandov"},"content":" fw.close();","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"Bandov"},"content":" * Saves the current list of tasks to the file.","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"Bandov"},"content":" * @param list The task list to be saved.","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"Bandov"},"content":" * @throws IOException If an I/O error occurs during writing.","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"Bandov"},"content":" public static void saveCurrentList(TaskList list) throws IOException {","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"Bandov"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"Bandov"},"content":" for (Task task : list.getList()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"Bandov"},"content":" sb.append(task.toFileString());","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"Bandov"},"content":" sb.append(\"\\n\");","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"Bandov"},"content":" writeToFile(filePath, sb.toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"Bandov"},"content":" * Loads tasks from the file and returns them as an ArrayList of Task objects.","lastModifiedDate":"2024-01-27"},{"lineNumber":68,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":69,"author":{"gitId":"Bandov"},"content":" * @return An ArrayList of Task objects.","lastModifiedDate":"2024-01-27"},{"lineNumber":70,"author":{"gitId":"Bandov"},"content":" * @throws DukeException If an error occurs while reading from the file.","lastModifiedDate":"2024-01-27"},{"lineNumber":71,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":72,"author":{"gitId":"Bandov"},"content":" public ArrayList\u003cTask\u003e load() throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"Bandov"},"content":" ArrayList\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"Bandov"},"content":" while (scanner.hasNext()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"Bandov"},"content":" String line \u003d scanner.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"Bandov"},"content":" String type \u003d line.substring(0, 1);","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"Bandov"},"content":" switch (type) {","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"Bandov"},"content":" case \"T\":","lastModifiedDate":"2024-01-25"},{"lineNumber":79,"author":{"gitId":"Bandov"},"content":" list.add(Task.fromFileString(line));","lastModifiedDate":"2024-01-25"},{"lineNumber":80,"author":{"gitId":"Bandov"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"Bandov"},"content":" case \"D\":","lastModifiedDate":"2024-01-25"},{"lineNumber":82,"author":{"gitId":"Bandov"},"content":" list.add(Deadline.fromFileString(line));","lastModifiedDate":"2024-01-25"},{"lineNumber":83,"author":{"gitId":"Bandov"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":84,"author":{"gitId":"Bandov"},"content":" case \"E\":","lastModifiedDate":"2024-01-25"},{"lineNumber":85,"author":{"gitId":"Bandov"},"content":" list.add(Event.fromFileString(line));","lastModifiedDate":"2024-01-25"},{"lineNumber":86,"author":{"gitId":"Bandov"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":87,"author":{"gitId":"Bandov"},"content":" default:","lastModifiedDate":"2024-01-27"},{"lineNumber":88,"author":{"gitId":"Bandov"},"content":" throw new DukeException(\"Error loading file\");","lastModifiedDate":"2024-01-27"},{"lineNumber":89,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":90,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":91,"author":{"gitId":"Bandov"},"content":" return list;","lastModifiedDate":"2024-01-25"},{"lineNumber":92,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":93,"author":{"gitId":"Bandov"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Bandov":93}},{"path":"src/main/java/duke/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Bandov"},"content":"package duke;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"Bandov"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"Bandov"},"content":" * Represents a task with a description and a completion status.","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"Bandov"},"content":" * This class serves as the base class for more specific types of tasks.","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"Bandov"},"content":"public class Task {","lastModifiedDate":"2024-01-20"},{"lineNumber":8,"author":{"gitId":"Bandov"},"content":" protected String description;","lastModifiedDate":"2024-01-20"},{"lineNumber":9,"author":{"gitId":"Bandov"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-20"},{"lineNumber":10,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":11,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"Bandov"},"content":" * Constructs a Task with the specified description. The task is initially not done.","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"Bandov"},"content":" * @param description The description of the task.","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"Bandov"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-20"},{"lineNumber":17,"author":{"gitId":"Bandov"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-20"},{"lineNumber":18,"author":{"gitId":"Bandov"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-20"},{"lineNumber":19,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":20,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":21,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"Bandov"},"content":" * Returns the description of the task.","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"Bandov"},"content":" * @return The description of the task.","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"Bandov"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-20"},{"lineNumber":27,"author":{"gitId":"Bandov"},"content":" return description;","lastModifiedDate":"2024-01-20"},{"lineNumber":28,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":29,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":30,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"Bandov"},"content":" * Returns the completion status of the task.","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"Bandov"},"content":" * @return true if the task is done, false otherwise.","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"Bandov"},"content":" public boolean isDone() {","lastModifiedDate":"2024-01-20"},{"lineNumber":36,"author":{"gitId":"Bandov"},"content":" return isDone;","lastModifiedDate":"2024-01-20"},{"lineNumber":37,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":38,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":39,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"Bandov"},"content":" * Marks the task as done.","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"Bandov"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-20"},{"lineNumber":43,"author":{"gitId":"Bandov"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-20"},{"lineNumber":44,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":45,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":46,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"Bandov"},"content":" * Marks the task as not done.","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"Bandov"},"content":" public void unMarkAsDone() {","lastModifiedDate":"2024-01-20"},{"lineNumber":50,"author":{"gitId":"Bandov"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-20"},{"lineNumber":51,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":52,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":53,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"Bandov"},"content":" * Returns a string representation of the task,","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"Bandov"},"content":" * including its type, completion status, and description.","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"Bandov"},"content":" * @return A string representation of the task.","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"Bandov"},"content":" @Override","lastModifiedDate":"2024-01-20"},{"lineNumber":60,"author":{"gitId":"Bandov"},"content":" public String toString() {","lastModifiedDate":"2024-01-20"},{"lineNumber":61,"author":{"gitId":"Bandov"},"content":" return \"[T]\" + (isDone ? \"[X] \" : \"[ ] \") + description;","lastModifiedDate":"2024-01-20"},{"lineNumber":62,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":63,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":65,"author":{"gitId":"Bandov"},"content":" * Returns a string representation of the task formatted for file storage,","lastModifiedDate":"2024-01-27"},{"lineNumber":66,"author":{"gitId":"Bandov"},"content":" * including its type, completion status, and description.","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":68,"author":{"gitId":"Bandov"},"content":" * @return A string formatted for file storage.","lastModifiedDate":"2024-01-27"},{"lineNumber":69,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":70,"author":{"gitId":"Bandov"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"Bandov"},"content":" return \"T\" + \" | \" + (isDone ? \"1\" : \"0\") + \" | \" + description;","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":75,"author":{"gitId":"Bandov"},"content":" * Returns a Task instance from the string representation of the task stored in the file.","lastModifiedDate":"2024-01-27"},{"lineNumber":76,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":77,"author":{"gitId":"Bandov"},"content":" * @param str The string representation of the task stored in the file.","lastModifiedDate":"2024-01-27"},{"lineNumber":78,"author":{"gitId":"Bandov"},"content":" * @return The Task instance from the string representation of the task stored in the file.","lastModifiedDate":"2024-01-27"},{"lineNumber":79,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":80,"author":{"gitId":"Bandov"},"content":" public static Task fromFileString(String str) {","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"Bandov"},"content":" String[] parts \u003d str.split(\" \\\\| \");","lastModifiedDate":"2024-01-25"},{"lineNumber":82,"author":{"gitId":"Bandov"},"content":" if (!parts[0].equals(\"T\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":83,"author":{"gitId":"Bandov"},"content":" return null;","lastModifiedDate":"2024-01-25"},{"lineNumber":84,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":85,"author":{"gitId":"Bandov"},"content":" String description \u003d parts[2].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":86,"author":{"gitId":"Bandov"},"content":" boolean isDone \u003d parts[1].trim().equals(\"1\");","lastModifiedDate":"2024-01-25"},{"lineNumber":87,"author":{"gitId":"Bandov"},"content":" Task task \u003d new Task(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":88,"author":{"gitId":"Bandov"},"content":" if (isDone) {","lastModifiedDate":"2024-01-27"},{"lineNumber":89,"author":{"gitId":"Bandov"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-27"},{"lineNumber":90,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":91,"author":{"gitId":"Bandov"},"content":" return task;","lastModifiedDate":"2024-01-25"},{"lineNumber":92,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":93,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":94,"author":{"gitId":"Bandov"},"content":"}","lastModifiedDate":"2024-01-20"}],"authorContributionMap":{"Bandov":94}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Bandov"},"content":"package duke;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Bandov"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Bandov"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"Bandov"},"content":" * The TaskList class represents a list of tasks.","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"Bandov"},"content":" * It encapsulates an ArrayList of Task objects and","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"Bandov"},"content":" * provides methods to manipulate the list.","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"Bandov"},"content":"public class TaskList {","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"Bandov"},"content":" private ArrayList\u003cTask\u003e list;","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"Bandov"},"content":" * Constructs a TaskList with the specified list of tasks.","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"Bandov"},"content":" * @param list An ArrayList of Task objects.","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"Bandov"},"content":" public TaskList(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"Bandov"},"content":" this.list \u003d list;","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"Bandov"},"content":" * Constructs an empty TaskList.","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"Bandov"},"content":" public TaskList() {","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"Bandov"},"content":" this.list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"Bandov"},"content":" * Adds a task to the task list.","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"Bandov"},"content":" * @param task The Task object to be added.","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"Bandov"},"content":" public void add(Task task) {","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"Bandov"},"content":" list.add(task);","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"Bandov"},"content":" * Removes a task from the task list at the specified index.","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"Bandov"},"content":" * @param index The index of the task to be removed.","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"Bandov"},"content":" public void remove(int index) {","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"Bandov"},"content":" list.remove(index);","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"Bandov"},"content":" * Retrieves a task from the task list at the specified index.","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"Bandov"},"content":" * @param index The index of the task to be retrieved.","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"Bandov"},"content":" * @return The Task object at the specified index.","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"Bandov"},"content":" public Task get(int index) {","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"Bandov"},"content":" return list.get(index);","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"Bandov"},"content":" * Returns the number of tasks in the task list.","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"Bandov"},"content":" * @return The size of the task list.","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"Bandov"},"content":" public int size() {","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"Bandov"},"content":" return list.size();","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"Bandov"},"content":" * Returns the ArrayList containing all the tasks.","lastModifiedDate":"2024-01-27"},{"lineNumber":68,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":69,"author":{"gitId":"Bandov"},"content":" * @return An ArrayList of Task objects.","lastModifiedDate":"2024-01-27"},{"lineNumber":70,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":71,"author":{"gitId":"Bandov"},"content":" public ArrayList\u003cTask\u003e getList() {","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"Bandov"},"content":" return list;","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":76,"author":{"gitId":"Bandov"},"content":" * Finds all tasks in the task list that contain the specified keyword.","lastModifiedDate":"2024-01-27"},{"lineNumber":77,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":78,"author":{"gitId":"Bandov"},"content":" * @param keyword The keyword to search for.","lastModifiedDate":"2024-01-27"},{"lineNumber":79,"author":{"gitId":"Bandov"},"content":" * @return An ArrayList of Task objects that contain the keyword.","lastModifiedDate":"2024-01-27"},{"lineNumber":80,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":81,"author":{"gitId":"Bandov"},"content":" public ArrayList\u003cTask\u003e find(String keyword) {","lastModifiedDate":"2024-01-27"},{"lineNumber":82,"author":{"gitId":"Bandov"},"content":" ArrayList\u003cTask\u003e matchingTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-27"},{"lineNumber":83,"author":{"gitId":"Bandov"},"content":" for (Task task : list) {","lastModifiedDate":"2024-01-27"},{"lineNumber":84,"author":{"gitId":"Bandov"},"content":" if (task.getDescription().contains(keyword)) {","lastModifiedDate":"2024-01-27"},{"lineNumber":85,"author":{"gitId":"Bandov"},"content":" matchingTasks.add(task);","lastModifiedDate":"2024-01-27"},{"lineNumber":86,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":87,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":88,"author":{"gitId":"Bandov"},"content":" return matchingTasks;","lastModifiedDate":"2024-01-27"},{"lineNumber":89,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":90,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":91,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":92,"author":{"gitId":"Bandov"},"content":" * Returns a string representation of the task list.","lastModifiedDate":"2024-01-27"},{"lineNumber":93,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":94,"author":{"gitId":"Bandov"},"content":" * @return A string representation of the task list.","lastModifiedDate":"2024-01-27"},{"lineNumber":95,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":96,"author":{"gitId":"Bandov"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":97,"author":{"gitId":"Bandov"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":98,"author":{"gitId":"Bandov"},"content":" return list.toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":99,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":100,"author":{"gitId":"Bandov"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Bandov":100}},{"path":"src/main/java/duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Bandov"},"content":"package duke;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Bandov"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Bandov"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"Bandov"},"content":" * The Ui class is responsible for handling user interactions.","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"Bandov"},"content":" * It provides methods to display messages to the user and parse user input.","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"Bandov"},"content":"public class Ui {","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"Bandov"},"content":" private Scanner scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"Bandov"},"content":" * Constructs a Ui object, initializing a scanner to read user input.","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"Bandov"},"content":" public Ui() {","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"Bandov"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"Bandov"},"content":" * Prints one or more messages to the console, each separated by a line.","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"Bandov"},"content":" * @param messages An array of messages to be printed.","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"Bandov"},"content":" public static void printWithLines(String... messages) {","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"Bandov"},"content":" System.out.println(\"------------------------------------------\");","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"Bandov"},"content":" for (String message : messages) {","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"Bandov"},"content":" System.out.println(message);","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"Bandov"},"content":" * Displays an error message when there is an error loading the file.","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"Bandov"},"content":" public static void showLoadingError() {","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"Bandov"},"content":" printWithLines(\"Error loading file\");","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"Bandov"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"Bandov"},"content":" * Parses and processes the user input string.","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"Bandov"},"content":" * It delegates the command handling to the Parser class.","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"Bandov"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"Bandov"},"content":" * @param list The TaskList to be used for executing commands.","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"Bandov"},"content":" * @param message The user input string.","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"Bandov"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"Bandov"},"content":" public static void parse(TaskList list, String message) {","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"Bandov"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"Bandov"},"content":" if (message.startsWith(\"todo\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"Bandov"},"content":" Parser.handleTodo(list, message);","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"Bandov"},"content":" } else if (message.startsWith(\"deadline\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"Bandov"},"content":" Parser.handleDeadline(list, message);","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"Bandov"},"content":" } else if (message.startsWith(\"event\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"Bandov"},"content":" Parser.handleEvent(list, message);","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"Bandov"},"content":" } else if (message.equals(\"list\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"Bandov"},"content":" Parser.handleList(list);","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"Bandov"},"content":" } else if (message.startsWith(\"mark\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"Bandov"},"content":" Parser.handleMark(list, message);","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"Bandov"},"content":" } else if (message.startsWith(\"unmark\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"Bandov"},"content":" Parser.handleUnmark(list, message);","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"Bandov"},"content":" } else if (message.startsWith(\"delete\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"Bandov"},"content":" Parser.deleteTask(list, message);","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"Bandov"},"content":" } else if (message.startsWith(\"find\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"Bandov"},"content":" Parser.findTask(list, message);","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"Bandov"},"content":" } else if (!message.equals(\"bye\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"Bandov"},"content":" throw new DukeException(\"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means buddy.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"Bandov"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"Bandov"},"content":" printWithLines(e.getMessage());","lastModifiedDate":"2024-01-25"},{"lineNumber":68,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":69,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"Bandov"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Bandov":71}},{"path":"src/main/java/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"Bandov"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Bandov"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Bandov"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Bandov"},"content":"then","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Bandov"},"content":" mkdir ../bin","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Bandov"},"content":"fi","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Bandov"},"content":"# delete output from previous run","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Bandov"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Bandov"},"content":"then","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Bandov"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Bandov"},"content":"fi","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Bandov"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Bandov"},"content":"if ! javac -Xlint:none -d ../bin /Users/dom/ip/src/main/java/duke/Duke.java","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"Bandov"},"content":"then","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"Bandov"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"Bandov"},"content":" exit 1","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"Bandov"},"content":"fi","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"Bandov"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"Bandov"},"content":"java Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"Bandov"},"content":"# compare the output to the expected output","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"Bandov"},"content":"diff ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"Bandov"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"Bandov"},"content":"then","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"Bandov"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"Bandov"},"content":" exit 0","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"Bandov"},"content":"else","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"Bandov"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"Bandov"},"content":" exit 1","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"Bandov"},"content":"fi","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Bandov":35}},{"path":"src/test/java/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Bandov"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Bandov"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Bandov"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Bandov"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Bandov"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Bandov"},"content":"import org.junit.jupiter.api.function.Executable;","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Bandov"},"content":"import duke.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Bandov"},"content":"import duke.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Bandov"},"content":"import duke.Event;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Bandov"},"content":"import duke.Parser;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Bandov"},"content":"import duke.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Bandov"},"content":"import duke.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Bandov"},"content":"class ParserTest {","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Bandov"},"content":" private TaskList list;","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Bandov"},"content":" @BeforeEach","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"Bandov"},"content":" void setUp() {","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"Bandov"},"content":" list \u003d new TaskList();","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Bandov"},"content":" // Mocking Ui methods or ensure that Ui methods can run in a test environment","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"Bandov"},"content":" @Test","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"Bandov"},"content":" void handleTodo_validInput_addsTodo() {","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"Bandov"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"Bandov"},"content":" Parser.handleTodo(list, \"todo read book\");","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"Bandov"},"content":" assertEquals(1, list.size());","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"Bandov"},"content":" Task addedTask \u003d list.get(0);","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"Bandov"},"content":" assertEquals(\"read book\", addedTask.getDescription());","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"Bandov"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"Bandov"},"content":" fail(\"Exception should not be thrown for valid input\");","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"Bandov"},"content":" @Test","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"Bandov"},"content":" void handleTodo_emptyDescription_throwsDukeException() {","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"Bandov"},"content":" Executable todoWithEmptyDescription \u003d () -\u003e Parser.handleTodo(list, \"todo\");","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"Bandov"},"content":" assertThrows(DukeException.class, todoWithEmptyDescription,","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Bandov"},"content":" \"Exception was expected for empty todo description\");","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"Bandov"},"content":" @Test","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"Bandov"},"content":" void handleTodo_validInput_addsDeadline() {","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"Bandov"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"Bandov"},"content":" Parser.handleDeadline(list, \"deadline read book /by 2020-02-02\");","lastModifiedDate":"2024-01-26"},{"lineNumber":48,"author":{"gitId":"Bandov"},"content":" assertEquals(1, list.size());","lastModifiedDate":"2024-01-26"},{"lineNumber":49,"author":{"gitId":"Bandov"},"content":" Deadline addedTask \u003d (Deadline) list.get(0);","lastModifiedDate":"2024-01-26"},{"lineNumber":50,"author":{"gitId":"Bandov"},"content":" assertEquals(\"read book\", addedTask.getDescription());","lastModifiedDate":"2024-01-26"},{"lineNumber":51,"author":{"gitId":"Bandov"},"content":" assertEquals(\"2020-02-02\", addedTask.getDate());","lastModifiedDate":"2024-01-26"},{"lineNumber":52,"author":{"gitId":"Bandov"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":53,"author":{"gitId":"Bandov"},"content":" fail(\"Exception should not be thrown for valid input\");","lastModifiedDate":"2024-01-26"},{"lineNumber":54,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":55,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":56,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":57,"author":{"gitId":"Bandov"},"content":" @Test","lastModifiedDate":"2024-01-26"},{"lineNumber":58,"author":{"gitId":"Bandov"},"content":" void handleDeadline_emptyDescription_throwsDukeException() {","lastModifiedDate":"2024-01-26"},{"lineNumber":59,"author":{"gitId":"Bandov"},"content":" Executable todoWithEmptyDescription \u003d () -\u003e Parser.handleDeadline(list, \"deadline\");","lastModifiedDate":"2024-01-26"},{"lineNumber":60,"author":{"gitId":"Bandov"},"content":" assertThrows(DukeException.class, todoWithEmptyDescription,","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"Bandov"},"content":" \"Exception was expected for empty todo description\");","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":63,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":64,"author":{"gitId":"Bandov"},"content":" @Test","lastModifiedDate":"2024-01-26"},{"lineNumber":65,"author":{"gitId":"Bandov"},"content":" void handleTodo_validInput_addsEvent() {","lastModifiedDate":"2024-01-26"},{"lineNumber":66,"author":{"gitId":"Bandov"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":67,"author":{"gitId":"Bandov"},"content":" Parser.handleEvent(list, \"event read book /from 2020-02-02 23:00 /to 2020-02-03 23:15\");","lastModifiedDate":"2024-01-26"},{"lineNumber":68,"author":{"gitId":"Bandov"},"content":" assertEquals(1, list.size());","lastModifiedDate":"2024-01-26"},{"lineNumber":69,"author":{"gitId":"Bandov"},"content":" Event addedTask \u003d (Event) list.get(0);","lastModifiedDate":"2024-01-26"},{"lineNumber":70,"author":{"gitId":"Bandov"},"content":" assertEquals(\"read book\", addedTask.getDescription());","lastModifiedDate":"2024-01-26"},{"lineNumber":71,"author":{"gitId":"Bandov"},"content":" assertEquals(\"2020-02-02T23:00\", addedTask.getFromDate());","lastModifiedDate":"2024-01-26"},{"lineNumber":72,"author":{"gitId":"Bandov"},"content":" assertEquals(\"2020-02-03T23:15\", addedTask.getToDate());","lastModifiedDate":"2024-01-26"},{"lineNumber":73,"author":{"gitId":"Bandov"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":74,"author":{"gitId":"Bandov"},"content":" fail(\"Exception should not be thrown for valid input\");","lastModifiedDate":"2024-01-26"},{"lineNumber":75,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":76,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":77,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":78,"author":{"gitId":"Bandov"},"content":" @Test","lastModifiedDate":"2024-01-26"},{"lineNumber":79,"author":{"gitId":"Bandov"},"content":" void handleEvent_emptyDescription_throwsDukeException() {","lastModifiedDate":"2024-01-26"},{"lineNumber":80,"author":{"gitId":"Bandov"},"content":" Executable todoWithEmptyDescription \u003d () -\u003e Parser.handleDeadline(list, \"event\");","lastModifiedDate":"2024-01-26"},{"lineNumber":81,"author":{"gitId":"Bandov"},"content":" assertThrows(DukeException.class, todoWithEmptyDescription,","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"Bandov"},"content":" \"Exception was expected for empty todo description\");","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":84,"author":{"gitId":"Bandov"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Bandov":84}},{"path":"src/test/java/StorageTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Bandov"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Bandov"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Bandov"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Bandov"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Bandov"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Bandov"},"content":"import org.junit.jupiter.api.AfterEach;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Bandov"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Bandov"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Bandov"},"content":"import duke.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Bandov"},"content":"import duke.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Bandov"},"content":"import duke.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Bandov"},"content":"import duke.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Bandov"},"content":"class StorageTest {","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Bandov"},"content":" private Path tempFile;","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Bandov"},"content":" private Storage storage;","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"Bandov"},"content":" @BeforeEach","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Bandov"},"content":" void setUp() throws IOException, DukeException {","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"Bandov"},"content":" // Create a temporary file","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"Bandov"},"content":" tempFile \u003d Files.createTempFile(\"test\", \".txt\");","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"Bandov"},"content":" // Initialize Storage with the temporary file path","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"Bandov"},"content":" storage \u003d new Storage(tempFile.toString());","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"Bandov"},"content":" @AfterEach","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"Bandov"},"content":" void tearDown() throws IOException {","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"Bandov"},"content":" // Delete the temporary file after each test","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"Bandov"},"content":" Files.deleteIfExists(tempFile);","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"Bandov"},"content":" @Test","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"Bandov"},"content":" void saveAndLoadTodoTask() throws IOException, DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Bandov"},"content":" TaskList list \u003d new TaskList();","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"Bandov"},"content":" list.add(new Task(\"read book\")); // Assuming Task is a valid type for simplicity","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"Bandov"},"content":" // Save the list to the file","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"Bandov"},"content":" Storage.saveCurrentList(list);","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"Bandov"},"content":" // Load the list back","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"Bandov"},"content":" ArrayList\u003cTask\u003e loadedList \u003d storage.load();","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"Bandov"},"content":" // Check if the loaded list matches the saved list","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"Bandov"},"content":" assertEquals(1, loadedList.size());","lastModifiedDate":"2024-01-26"},{"lineNumber":48,"author":{"gitId":"Bandov"},"content":" assertEquals(\"read book\", loadedList.get(0).getDescription());","lastModifiedDate":"2024-01-26"},{"lineNumber":49,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":50,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":51,"author":{"gitId":"Bandov"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Bandov":51}},{"path":"src/test/java/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Bandov"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Bandov"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Bandov"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Bandov"},"content":"import duke.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Bandov"},"content":"import duke.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Bandov"},"content":"public class TaskListTest {","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Bandov"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Bandov"},"content":" @BeforeEach","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Bandov"},"content":" void setUp() {","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Bandov"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Bandov"},"content":" @Test","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Bandov"},"content":" void testAddTask() {","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Bandov"},"content":" Task task \u003d new Task(\"Read book\");","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Bandov"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"Bandov"},"content":" assertEquals(1, tasks.size());","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"Bandov"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Bandov"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Bandov":22}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Bandov"},"content":"todo Read a book","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Bandov"},"content":"deadline Submit assignment /by 2024-01-30","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Bandov"},"content":"event Team meeting /from 2024-01-25 10:00 /to 2024-01-25 12:00","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Bandov"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Bandov"},"content":"mark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Bandov"},"content":"unmark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Bandov"},"content":"todo","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Bandov"},"content":"deadline Finish project","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Bandov"},"content":"event Conference /from 2024-01-28","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Bandov"},"content":"mark 100","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Bandov"},"content":"unmark 100","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Bandov"},"content":"unmark","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Bandov"},"content":"dance","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Bandov"},"content":"todo Complete Java project","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Bandov"},"content":"deadline File taxes /by 2024-04-15","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Bandov"},"content":"event Birthday Party /from 2024-03-10 18:00 /to 2024-03-10 22:00","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"Bandov"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"Bandov"},"content":"mark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"Bandov"},"content":"unmark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"Bandov"},"content":"deadline Prepare presentation /by 2024-03-05","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"Bandov"},"content":"event Workshop /from 2024-02-20 09:00 /to 2024-02-20 12:00","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"Bandov"},"content":"todo Clean the house","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"Bandov"},"content":"delete 1","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"Bandov"},"content":"delete 3","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"Bandov"},"content":"delete 100","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"Bandov"},"content":"delete","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"Bandov"},"content":"todo Grocery Shopping","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"Bandov"},"content":"todo Call Mom","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"Bandov"},"content":"deadline Renew Insurance /by 2024-05-01","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"Bandov"},"content":"event Doctor\u0027s Appointment /from 2024-04-20 15:00 /to 2024-04-20 16:00","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"Bandov"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"Bandov"},"content":"mark 4","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"Bandov"},"content":"mark 5","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"Bandov"},"content":"unmark 4","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"Bandov"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Bandov":35}},{"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":"Bandov"},"content":"if ! javac -Xlint:none -d ../bin /Users/dom/ip/src/main/java/*.java","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"Bandov"},"content":"java -cp ../bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"Bandov"},"content":"diff ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"Bandov"},"content":"","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Bandov":4,"-":31}}] diff --git a/Bandov_ip_master/commits.json b/Bandov_ip_master/commits.json index 7a91cffe..497ad705 100644 --- a/Bandov_ip_master/commits.json +++ b/Bandov_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Bandov":[{"date":"2024-01-20","commitResults":[{"hash":"d939adc145f25fee22667cef2ae516e5d55e0dca","isMergeCommit":false,"messageTitle":"Level 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":6}}},{"hash":"dd5d0b4f0bee7a29eab8bdcb3048322af6eed788","isMergeCommit":false,"messageTitle":"Level 1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":0}}},{"hash":"1fa5b091ef40551faed487252bc4a6247d15f335","isMergeCommit":false,"messageTitle":"Level 2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":2}}},{"hash":"7ea9a42b8613d90a6d2d65d045acaddf8ddcf3c5","isMergeCommit":false,"messageTitle":"Level 3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":59,"deletions":7}}},{"hash":"413d537eac2b2a2882d7b248ce4f0d8b27154762","isMergeCommit":false,"messageTitle":"Level 4","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":76,"deletions":36}}},{"hash":"eba8bbc136546a09580c24c60f48e2a2a6f93ea5","isMergeCommit":false,"messageTitle":"fixed double lining","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}}]},{"date":"2024-01-22","commitResults":[{"hash":"3965a0c45171cd863925c3e37e0195a210e8333c","isMergeCommit":false,"messageTitle":"Added error catching functionality","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":99,"deletions":49}}},{"hash":"36865521f1d995737e8019d3c09dcb17f39599c3","isMergeCommit":false,"messageTitle":"deleting of tasks from task list","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":0}}}]},{"date":"2024-01-24","commitResults":[{"hash":"412f760d56a2cc994b396706e0930108f8b4f921","isMergeCommit":false,"messageTitle":"Add the autorunning of tests","messageBody":"","fileTypesAndContributionMap":{"sh":{"insertions":35,"deletions":0}}},{"hash":"64174a43ea5b15682ac1dd81618539f17e9e4c4d","isMergeCommit":false,"messageTitle":"correct testing methodology","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":35,"deletions":0},"sh":{"insertions":5,"deletions":8}}}]},{"date":"2024-01-25","commitResults":[{"hash":"ff165f0efb8aa20279176104c86114513a1898c7","isMergeCommit":false,"messageTitle":"added saving","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":110,"deletions":4}}},{"hash":"c811695f16030aaa41af03d2952a318064c8fce5","isMergeCommit":false,"messageTitle":"added time functionality","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":13}}},{"hash":"8a6cf9e4beb4cf8fec44ae36d470c96607f02909","isMergeCommit":false,"messageTitle":"OOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":272,"deletions":185}}},{"hash":"4478a954777931fd1fd77ec1f2113f72d29066f3","isMergeCommit":false,"messageTitle":"added to package duke","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":3},"sh":{"insertions":1,"deletions":1}}}]},{"date":"2024-01-26","commitResults":[{"hash":"1379e3307de176da605b8a99bf2597e80a415471","isMergeCommit":true,"messageTitle":"Merge commit \u0027a6f73244a20539e20c2189973ebf597df34ef631\u0027 into A-Packages","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"52aa6682b94a6380ce7eeaf2c9109d285b64c8b8","isMergeCommit":false,"messageTitle":"Added gradle testing and functionality","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"java":{"insertions":73,"deletions":0}}},{"hash":"d4feed0adddf5bbc883646054c1dce2315873f0a","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["A-Packages","A-Gradle"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":0}}},{"hash":"8e306b2824bc9526df886a0b189bd9129111259d","isMergeCommit":false,"messageTitle":"Added more JUnit tests","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":77,"deletions":0}}},{"hash":"617d11991d293964e69a49215390bf20aa8bccd7","isMergeCommit":false,"messageTitle":"Jar file creation","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0}}}]},{"date":"2024-01-27","commitResults":[{"hash":"0f6233802a04de9ffc20ee654356bdf14fde4970","isMergeCommit":false,"messageTitle":"gradle checkstyle plus javadocs","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"gradle":{"insertions":11,"deletions":0},"java":{"insertions":294,"deletions":1}}},{"hash":"3436a90f145e1ebdbee3d0930fa1b59e05c40193","isMergeCommit":false,"messageTitle":"coding standard","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"java":{"insertions":31,"deletions":16}}},{"hash":"4b4e97813ca03afcc541ff621eddd2c88671e8d5","isMergeCommit":false,"messageTitle":"added find capability","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":0}}},{"hash":"5c15a053dc46dda43959f2cd52f82b7b9ed0f5d2","isMergeCommit":false,"messageTitle":"changed indentation to follow checkstyle","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":11}}}]},{"date":"2024-01-29","commitResults":[{"hash":"e7485a33153f814dddfc4cdd82dfef9d3e4ab8a3","isMergeCommit":false,"messageTitle":"fix wrong branching","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":0}}},{"hash":"1b361110f07265935271189ad111348123ef5107","isMergeCommit":true,"messageTitle":"Merge commit \u0027e7485a33153f814dddfc4cdd82dfef9d3e4ab8a3\u0027 into branch-Level-8","messageBody":"* commit \u0027e7485a33153f814dddfc4cdd82dfef9d3e4ab8a3\u0027:\n fix wrong branching\n","fileTypesAndContributionMap":{}},{"hash":"219a8459f416f419b8a73422e0b010a776dcdea9","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"* branch-Level-8:\n fix wrong branching\n\n# Conflicts:\n#\tsrc/main/java/Duke.java\n","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Bandov":{"java":940,"md":0,"fxml":0,"sh":39,"bat":0,"gradle":13,"txt":35}},"authorContributionVariance":{"Bandov":40479.42},"authorDisplayNameMap":{"Bandov":"CS2103T-T11-1 SONG..INIC"}} +{"authorDailyContributionsMap":{"Bandov":[{"date":"2024-01-20","commitResults":[{"hash":"d939adc145f25fee22667cef2ae516e5d55e0dca","isMergeCommit":false,"messageTitle":"Level 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":6}}},{"hash":"dd5d0b4f0bee7a29eab8bdcb3048322af6eed788","isMergeCommit":false,"messageTitle":"Level 1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":0}}},{"hash":"1fa5b091ef40551faed487252bc4a6247d15f335","isMergeCommit":false,"messageTitle":"Level 2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":2}}},{"hash":"7ea9a42b8613d90a6d2d65d045acaddf8ddcf3c5","isMergeCommit":false,"messageTitle":"Level 3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":59,"deletions":7}}},{"hash":"413d537eac2b2a2882d7b248ce4f0d8b27154762","isMergeCommit":false,"messageTitle":"Level 4","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":76,"deletions":36}}},{"hash":"eba8bbc136546a09580c24c60f48e2a2a6f93ea5","isMergeCommit":false,"messageTitle":"fixed double lining","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}}]},{"date":"2024-01-22","commitResults":[{"hash":"3965a0c45171cd863925c3e37e0195a210e8333c","isMergeCommit":false,"messageTitle":"Added error catching functionality","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":99,"deletions":49}}},{"hash":"36865521f1d995737e8019d3c09dcb17f39599c3","isMergeCommit":false,"messageTitle":"deleting of tasks from task list","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":0}}}]},{"date":"2024-01-24","commitResults":[{"hash":"412f760d56a2cc994b396706e0930108f8b4f921","isMergeCommit":false,"messageTitle":"Add the autorunning of tests","messageBody":"","fileTypesAndContributionMap":{"sh":{"insertions":35,"deletions":0}}},{"hash":"64174a43ea5b15682ac1dd81618539f17e9e4c4d","isMergeCommit":false,"messageTitle":"correct testing methodology","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":35,"deletions":0},"sh":{"insertions":5,"deletions":8}}}]},{"date":"2024-01-25","commitResults":[{"hash":"ff165f0efb8aa20279176104c86114513a1898c7","isMergeCommit":false,"messageTitle":"added saving","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":110,"deletions":4}}},{"hash":"c811695f16030aaa41af03d2952a318064c8fce5","isMergeCommit":false,"messageTitle":"added time functionality","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":13}}},{"hash":"8a6cf9e4beb4cf8fec44ae36d470c96607f02909","isMergeCommit":false,"messageTitle":"OOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":272,"deletions":185}}},{"hash":"4478a954777931fd1fd77ec1f2113f72d29066f3","isMergeCommit":false,"messageTitle":"added to package duke","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":3},"sh":{"insertions":1,"deletions":1}}}]},{"date":"2024-01-26","commitResults":[{"hash":"1379e3307de176da605b8a99bf2597e80a415471","isMergeCommit":true,"messageTitle":"Merge commit \u0027a6f73244a20539e20c2189973ebf597df34ef631\u0027 into A-Packages","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"52aa6682b94a6380ce7eeaf2c9109d285b64c8b8","isMergeCommit":false,"messageTitle":"Added gradle testing and functionality","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"java":{"insertions":73,"deletions":0}}},{"hash":"d4feed0adddf5bbc883646054c1dce2315873f0a","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["A-Packages","A-Gradle"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":0}}},{"hash":"8e306b2824bc9526df886a0b189bd9129111259d","isMergeCommit":false,"messageTitle":"Added more JUnit tests","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":77,"deletions":0}}},{"hash":"617d11991d293964e69a49215390bf20aa8bccd7","isMergeCommit":false,"messageTitle":"Jar file creation","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0}}}]},{"date":"2024-01-27","commitResults":[{"hash":"0f6233802a04de9ffc20ee654356bdf14fde4970","isMergeCommit":false,"messageTitle":"gradle checkstyle plus javadocs","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"gradle":{"insertions":11,"deletions":0},"java":{"insertions":294,"deletions":1}}},{"hash":"3436a90f145e1ebdbee3d0930fa1b59e05c40193","isMergeCommit":false,"messageTitle":"coding standard","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"java":{"insertions":31,"deletions":16}}},{"hash":"4b4e97813ca03afcc541ff621eddd2c88671e8d5","isMergeCommit":false,"messageTitle":"added find capability","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":0}}},{"hash":"5c15a053dc46dda43959f2cd52f82b7b9ed0f5d2","isMergeCommit":false,"messageTitle":"changed indentation to follow checkstyle","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":11}}}]},{"date":"2024-01-29","commitResults":[{"hash":"e7485a33153f814dddfc4cdd82dfef9d3e4ab8a3","isMergeCommit":false,"messageTitle":"fix wrong branching","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":0}}},{"hash":"1b361110f07265935271189ad111348123ef5107","isMergeCommit":true,"messageTitle":"Merge commit \u0027e7485a33153f814dddfc4cdd82dfef9d3e4ab8a3\u0027 into branch-Level-8","messageBody":"* commit \u0027e7485a33153f814dddfc4cdd82dfef9d3e4ab8a3\u0027:\n fix wrong branching\n","fileTypesAndContributionMap":{}},{"hash":"219a8459f416f419b8a73422e0b010a776dcdea9","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"* branch-Level-8:\n fix wrong branching\n\n# Conflicts:\n#\tsrc/main/java/Duke.java\n","fileTypesAndContributionMap":{}}]},{"date":"2024-01-30","commitResults":[{"hash":"a00a335d4e86d85012411e90244b2aab6960cf67","isMergeCommit":false,"messageTitle":"Updated to fit checkstyle requirements","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":7},"java":{"insertions":37,"deletions":23}}}]}]},"authorFileTypeContributionMap":{"Bandov":{"java":954,"md":0,"fxml":0,"sh":39,"bat":0,"gradle":7,"txt":35}},"authorContributionVariance":{"Bandov":37681.914},"authorDisplayNameMap":{"Bandov":"CS2103T-T11-1 SONG..INIC"}} diff --git a/ChrysanthemumT_ip_master/authorship.json b/ChrysanthemumT_ip_master/authorship.json index 28d1eed6..4b58fc6f 100644 --- a/ChrysanthemumT_ip_master/authorship.json +++ b/ChrysanthemumT_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"import DukeException.InvalidCommandException;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":"import DukeException.ListOutofBoundsException;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":"import DukeException.MissingArgumentsException;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":"import Storage.Deadlines;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":"import Storage.Events;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":"import Storage.Todos;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":"import UI.UI;","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":"import Parser.Parser;","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":"import Storage.Task;","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":15,"author":{"gitId":"ChrysanthemumT"},"content":" UI ui \u003d new UI();","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":" UI.greeting();","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"ChrysanthemumT"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"ChrysanthemumT"},"content":" boolean flag \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"ChrysanthemumT"},"content":" while(flag) {","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"ChrysanthemumT"},"content":" String input \u003d scanner.nextLine().trim();","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"ChrysanthemumT"},"content":" parser.feed(input);","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"ChrysanthemumT"},"content":" String[] output;","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"ChrysanthemumT"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"ChrysanthemumT"},"content":" output \u003d parser.parse();","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"ChrysanthemumT"},"content":" } catch (InvalidCommandException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"ChrysanthemumT"},"content":" ui.error(e.getMessage());","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"ChrysanthemumT"},"content":" continue;","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"ChrysanthemumT"},"content":" } catch (MissingArgumentsException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"ChrysanthemumT"},"content":" ui.error(e.getMessage());","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"ChrysanthemumT"},"content":" continue;","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"ChrysanthemumT"},"content":" Task task;","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"ChrysanthemumT"},"content":" switch (output[0]) {","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"ChrysanthemumT"},"content":" case \"bye\":","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"ChrysanthemumT"},"content":" UI.goodbye();","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"ChrysanthemumT"},"content":" flag \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"ChrysanthemumT"},"content":" case \"list\":","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"ChrysanthemumT"},"content":" ui.listItems();","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"ChrysanthemumT"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"ChrysanthemumT"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"ChrysanthemumT"},"content":" ui.unMarkTask(Integer.parseInt(output[1]) - 1);","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"ChrysanthemumT"},"content":" } catch (ListOutofBoundsException e){","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"ChrysanthemumT"},"content":" ui.error(e.getMessage());","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"ChrysanthemumT"},"content":" case \"mark\":","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"ChrysanthemumT"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"ChrysanthemumT"},"content":" ui.markTaskUI(Integer.parseInt(output[1]) - 1);","lastModifiedDate":"2024-01-23"},{"lineNumber":52,"author":{"gitId":"ChrysanthemumT"},"content":" } catch (ListOutofBoundsException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"ChrysanthemumT"},"content":" ui.error(e.getMessage());","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"ChrysanthemumT"},"content":" case \"todo\":","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"ChrysanthemumT"},"content":" task \u003d new Todos(output[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"ChrysanthemumT"},"content":" ui.addItem(task);","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"ChrysanthemumT"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"ChrysanthemumT"},"content":" task \u003d new Deadlines(output[1], output[2]);","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"ChrysanthemumT"},"content":" ui.addItem(task);","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"ChrysanthemumT"},"content":" case \"event\":","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"ChrysanthemumT"},"content":" task \u003d new Events(output[1], output[2], output[3]);","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"ChrysanthemumT"},"content":" ui.addItem(task);","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":68,"author":{"gitId":"ChrysanthemumT"},"content":" case \"delete\":","lastModifiedDate":"2024-01-25"},{"lineNumber":69,"author":{"gitId":"ChrysanthemumT"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"ChrysanthemumT"},"content":" ui.removeTask(Integer.parseInt(output[1]) - 1);","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"ChrysanthemumT"},"content":" } catch (ListOutofBoundsException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"ChrysanthemumT"},"content":" ui.error(e.getMessage());","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"ChrysanthemumT"},"content":" default:","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":78,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"ChrysanthemumT":76,"-":4}},{"path":"src/main/java/DukeException/InvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package DukeException;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"public class InvalidCommandException extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":" public InvalidCommandException(String message) {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":" super(message);","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":" public String getMessage() {","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":" return \" \" + super.getMessage() + \"\\n You have entered an invalid command:\\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" \" Try todo, event, deadline, list , delete , mark {index},\\n or unmark {index} instead.\";","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ChrysanthemumT":13}},{"path":"src/main/java/DukeException/ListOutofBoundsException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package DukeException;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"public class ListOutofBoundsException extends Exception{","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":" public ListOutofBoundsException(String string) {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":" super(string);","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":" public String getMessage() {","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":" return \" ListOutofBoundsException\\n You have entered an invalid list index:\\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" \" List size:\" + super.getMessage();","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ChrysanthemumT":13}},{"path":"src/main/java/DukeException/MissingArgumentsException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package DukeException;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"public class MissingArgumentsException extends Exception{","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":" public MissingArgumentsException(String string) {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":" super(string);","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":" public String getMessage() {","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":" return \" MissingArgumentException\\n You have missing arguments:\\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":" \" Try \" + super.getMessage();","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ChrysanthemumT":12}},{"path":"src/main/java/DukeException/MissingArgumentsExceptionDeadlines.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package DukeException;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"public class MissingArgumentsExceptionDeadlines extends MissingArgumentsExceptionTodo{","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":" public MissingArgumentsExceptionDeadlines(String string) {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":" super(string);","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":" public String getMessage() {","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":" return super.getMessage() + \" /by {your deadline}\";","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ChrysanthemumT":13}},{"path":"src/main/java/DukeException/MissingArgumentsExceptionEvents.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package DukeException;","lastModifiedDate":"2024-01-24"},{"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":" public MissingArgumentsExceptionEvents(String string) {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":" super(string);","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":" public String getMessage() {","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":" return super.getMessage() + \" /from {your starting time} /to {your ending time}\";","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ChrysanthemumT":11}},{"path":"src/main/java/DukeException/MissingArgumentsExceptionMarking.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package DukeException;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"public class MissingArgumentsExceptionMarking extends MissingArgumentsException{","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":" public MissingArgumentsExceptionMarking(String string) {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":" super(string);","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":" public String getMessage() {","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":" return super.getMessage() + \" {index of item in list}\";","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ChrysanthemumT":12}},{"path":"src/main/java/DukeException/MissingArgumentsExceptionTodo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package DukeException;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"public class MissingArgumentsExceptionTodo extends MissingArgumentsException {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":" public MissingArgumentsExceptionTodo(String string) {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":" super(string);","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":" public String getMessage() {","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":" return super.getMessage() + \" {your item}\";","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ChrysanthemumT":13}},{"path":"src/main/java/Parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package Parser;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"import DukeException.*;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":"public class Parser {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":" private String input;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":" public Parser() {","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":" this.input \u003d \"\";","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":" public Parser(String input) {","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":" this.input \u003d input;","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":" public void feed(String input) {","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":" this.input \u003d input;","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"ChrysanthemumT"},"content":" public String[] parse() throws InvalidCommandException, MissingArgumentsException {","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"ChrysanthemumT"},"content":" String[] ans \u003d new String[4];","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"ChrysanthemumT"},"content":" String[] split \u003d this.input.split(\" \");","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"ChrysanthemumT"},"content":" int flag;","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"ChrysanthemumT"},"content":" int flag2;","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"ChrysanthemumT"},"content":" switch(split[0]) {","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"ChrysanthemumT"},"content":" case \"list\":","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"ChrysanthemumT"},"content":" if (split.length !\u003d 1) {","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"ChrysanthemumT"},"content":" throw new InvalidCommandException(\"InvalidCommandException\");","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"ChrysanthemumT"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"ChrysanthemumT"},"content":" ans[0] \u003d \"list\";","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"ChrysanthemumT"},"content":" case \"bye\":","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"ChrysanthemumT"},"content":" if (split.length !\u003d 1) {","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"ChrysanthemumT"},"content":" throw new InvalidCommandException(\"InvalidCommandException\");","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"ChrysanthemumT"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"ChrysanthemumT"},"content":" ans[0] \u003d \"bye\";","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"ChrysanthemumT"},"content":" case \"delete\":","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"ChrysanthemumT"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"ChrysanthemumT"},"content":" case \"mark\":","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"ChrysanthemumT"},"content":" if (split.length !\u003d 2) {","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"ChrysanthemumT"},"content":" throw new MissingArgumentsExceptionMarking(split[0]);","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"ChrysanthemumT"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"ChrysanthemumT"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"ChrysanthemumT"},"content":" flag \u003d Integer.parseInt(split[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"ChrysanthemumT"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"ChrysanthemumT"},"content":" throw new InvalidCommandException(\"InvalidCommandException\");","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"ChrysanthemumT"},"content":" ans \u003d split;","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"ChrysanthemumT"},"content":" case \"todo\":","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"ChrysanthemumT"},"content":" if (split.length \u003d\u003d 1) {","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"ChrysanthemumT"},"content":" throw new MissingArgumentsExceptionTodo(\"todo\");","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"ChrysanthemumT"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"ChrysanthemumT"},"content":" int space \u003d this.input.indexOf(\" \");","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"ChrysanthemumT"},"content":" ans[0] \u003d \"todo\";","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"ChrysanthemumT"},"content":" ans[1] \u003d this.input.substring(space + 1, this.input.length());","lastModifiedDate":"2024-01-24"},{"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 \"event\":","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"ChrysanthemumT"},"content":" flag \u003d Arrays.asList(split).indexOf(\"/from\");","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"ChrysanthemumT"},"content":" flag2 \u003d Arrays.asList(split).indexOf(\"/to\");","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"ChrysanthemumT"},"content":" if (split.length \u003c 5) {","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"ChrysanthemumT"},"content":" throw new MissingArgumentsExceptionEvents(\"event\");","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"ChrysanthemumT"},"content":" } else if (flag \u003c 2 || flag2 \u003d\u003d split.length -1 || flag2 - flag \u003c\u003d 1) {","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"ChrysanthemumT"},"content":" throw new MissingArgumentsExceptionEvents(\"event\");","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"ChrysanthemumT"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"ChrysanthemumT"},"content":" int space \u003d this.input.indexOf(\" \");","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"ChrysanthemumT"},"content":" int slash \u003d this.input.indexOf(\"/\");","lastModifiedDate":"2024-01-24"},{"lineNumber":73,"author":{"gitId":"ChrysanthemumT"},"content":" int sSlash \u003d this.input.indexOf(\"/\", slash + 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"ChrysanthemumT"},"content":" ans[0] \u003d \"event\";","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"ChrysanthemumT"},"content":" ans[1] \u003d this.input.substring(space + 1, slash).trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":76,"author":{"gitId":"ChrysanthemumT"},"content":" int from \u003d this.input.indexOf(\" \", slash + 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":77,"author":{"gitId":"ChrysanthemumT"},"content":" ans[2] \u003d this.input.substring(from + 1, sSlash).trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":78,"author":{"gitId":"ChrysanthemumT"},"content":" int to \u003d this.input.indexOf(\" \", sSlash + 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":79,"author":{"gitId":"ChrysanthemumT"},"content":" ans[3] \u003d this.input.substring(to + 1, this.input.length()).trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":80,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":81,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":82,"author":{"gitId":"ChrysanthemumT"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-24"},{"lineNumber":83,"author":{"gitId":"ChrysanthemumT"},"content":" flag \u003d Arrays.asList(split).indexOf(\"/by\");","lastModifiedDate":"2024-01-24"},{"lineNumber":84,"author":{"gitId":"ChrysanthemumT"},"content":" if (split.length \u003c 4) {","lastModifiedDate":"2024-01-24"},{"lineNumber":85,"author":{"gitId":"ChrysanthemumT"},"content":" throw new MissingArgumentsExceptionDeadlines(\"deadline\");","lastModifiedDate":"2024-01-24"},{"lineNumber":86,"author":{"gitId":"ChrysanthemumT"},"content":" } else if (flag \u003c 2 || flag \u003d\u003d split.length -1) {","lastModifiedDate":"2024-01-24"},{"lineNumber":87,"author":{"gitId":"ChrysanthemumT"},"content":" throw new MissingArgumentsExceptionDeadlines(\"deadline\");","lastModifiedDate":"2024-01-24"},{"lineNumber":88,"author":{"gitId":"ChrysanthemumT"},"content":" }else {","lastModifiedDate":"2024-01-24"},{"lineNumber":89,"author":{"gitId":"ChrysanthemumT"},"content":" int space \u003d this.input.indexOf(\" \");","lastModifiedDate":"2024-01-24"},{"lineNumber":90,"author":{"gitId":"ChrysanthemumT"},"content":" int slash \u003d this.input.indexOf(\"/\");","lastModifiedDate":"2024-01-24"},{"lineNumber":91,"author":{"gitId":"ChrysanthemumT"},"content":" ans[0] \u003d \"deadline\";","lastModifiedDate":"2024-01-24"},{"lineNumber":92,"author":{"gitId":"ChrysanthemumT"},"content":" ans[1] \u003d this.input.substring(space + 1, slash).trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":93,"author":{"gitId":"ChrysanthemumT"},"content":" int by \u003d this.input.indexOf(\" \", slash + 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":94,"author":{"gitId":"ChrysanthemumT"},"content":" ans[2] \u003d this.input.substring(by+1, this.input.length()).trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":95,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":96,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":97,"author":{"gitId":"ChrysanthemumT"},"content":" default:","lastModifiedDate":"2024-01-24"},{"lineNumber":98,"author":{"gitId":"ChrysanthemumT"},"content":" throw new InvalidCommandException(\"InvalidCommandException\");","lastModifiedDate":"2024-01-24"},{"lineNumber":99,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":100,"author":{"gitId":"ChrysanthemumT"},"content":" return ans;","lastModifiedDate":"2024-01-24"},{"lineNumber":101,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":102,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":103,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"ChrysanthemumT":103}},{"path":"src/main/java/Storage/Deadlines.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package Storage;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"public class Deadlines extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":" protected String by;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":" public Deadlines(String description, String by) {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ChrysanthemumT":13}},{"path":"src/main/java/Storage/Events.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package Storage;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"public class Events extends Task{","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":" protected String from;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":" protected String to;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":" public Events(String description,String from,String to) {","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"ChrysanthemumT"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"ChrysanthemumT"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.from + \" to: \" + this.to + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ChrysanthemumT":17}},{"path":"src/main/java/Storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package Storage;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":"public class Storage {","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":" private static final String lines \u003d \" ____________________________________________________________\";","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":" private final ArrayList\u003cTask\u003e storage;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":" public Storage() {","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":" this.storage \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":" public void add(Task task) {","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":" this.storage.add(task);","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":" public void markTask(int number) {","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":" this.storage.get(number).mark();","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(\" \" + this.storage.get(number).toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"ChrysanthemumT"},"content":" public void unMarkTask(int number) {","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"ChrysanthemumT"},"content":" this.storage.get(number).unMark();","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(\" \" + this.storage.get(number).toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"ChrysanthemumT"},"content":" public void remove(int number) {","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(\" \" + this.storage.get(number).toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"ChrysanthemumT"},"content":" this.storage.remove(number);","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"ChrysanthemumT"},"content":" public int taskLength() {","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"ChrysanthemumT"},"content":" return this.storage.size();","lastModifiedDate":"2024-01-24"},{"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":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"ChrysanthemumT"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"ChrysanthemumT"},"content":" StringBuilder result \u003d new StringBuilder();","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"ChrysanthemumT"},"content":" result.append(lines).append(\"\\n\");","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"ChrysanthemumT"},"content":" for(int i\u003d1;i\u003c\u003dstorage.size();i++) {","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"ChrysanthemumT"},"content":" result.append(String.format(\" %d.\",i)).append(this.storage.get(i-1).toString()).append(\"\\n\");","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"ChrysanthemumT"},"content":" result.append(lines);","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"ChrysanthemumT"},"content":" return result.toString();","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-01-23"},{"lineNumber":46,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"ChrysanthemumT":46}},{"path":"src/main/java/Storage/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package Storage;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"import java.text.Normalizer;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":"public class Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":" protected String description;","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"ChrysanthemumT"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"ChrysanthemumT"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"ChrysanthemumT"},"content":" public void mark() {","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"ChrysanthemumT"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"ChrysanthemumT"},"content":" public void unMark() {","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":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"ChrysanthemumT"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"ChrysanthemumT"},"content":" return String.format(\"[%s] \", getStatusIcon()) + description;","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"ChrysanthemumT":31}},{"path":"src/main/java/Storage/Todos.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package Storage;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"public class Todos extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":" public Todos(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ChrysanthemumT":12}},{"path":"src/main/java/UI/UI.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package UI;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"import Storage.Storage;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":"import Storage.Task;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":"import DukeException.*;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":"public class UI {","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":" private static final String lines \u003d \" ____________________________________________________________\";","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":" private static final String name \u003d \"Wang\";","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" private final Storage storage;","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":" public UI() {","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"ChrysanthemumT"},"content":" this.storage \u003d new Storage();","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":" public static void greeting() {","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.printf(\" Hello! I\u0027m %s\\n\", name);","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(\" What can I do for you?\");","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(lines);","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"ChrysanthemumT"},"content":" public static void goodbye() {","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(lines);","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(\" Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(lines);","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"ChrysanthemumT"},"content":" public void addItem(Task task) {","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"ChrysanthemumT"},"content":" this.storage.add(task);","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(lines);","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(\" \" + \"Got it. I\u0027ve added this task:\\n\" + \" \" + task + \"\\n\" + \"\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"ChrysanthemumT"},"content":" String.format(\" Now you have %d tasks in the list.\", this.storage.taskLength()));","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(lines);","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"ChrysanthemumT"},"content":" public void markTaskUI(int input) throws ListOutofBoundsException{","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"ChrysanthemumT"},"content":" if (input \u003c0 || input \u003e this.storage.taskLength() - 1) {","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"ChrysanthemumT"},"content":" throw new ListOutofBoundsException(String.format(\"%d\", this.storage.taskLength()));","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(lines);","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(\" Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"ChrysanthemumT"},"content":" this.storage.markTask(input);","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(lines);","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"ChrysanthemumT"},"content":" public void unMarkTask(int input) throws ListOutofBoundsException{","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"ChrysanthemumT"},"content":" if (input \u003c 0 || input \u003e this.storage.taskLength() - 1) {","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"ChrysanthemumT"},"content":" throw new ListOutofBoundsException(String.format(\"%d\", this.storage.taskLength()));","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(lines);","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(\" OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":52,"author":{"gitId":"ChrysanthemumT"},"content":" this.storage.unMarkTask(input);","lastModifiedDate":"2024-01-23"},{"lineNumber":53,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(lines);","lastModifiedDate":"2024-01-23"},{"lineNumber":54,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":55,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":56,"author":{"gitId":"ChrysanthemumT"},"content":" public void removeTask(int input) throws ListOutofBoundsException {","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"ChrysanthemumT"},"content":" if (input \u003c 0 || input \u003e this.storage.taskLength() - 1) {","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"ChrysanthemumT"},"content":" throw new ListOutofBoundsException(String.format(\"%d\", this.storage.taskLength()));","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(lines);","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(\" Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"ChrysanthemumT"},"content":" this.storage.remove(input);","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(String.format(\" Now you have %d tasks in the list.\",this.storage.taskLength()));","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(lines);","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":68,"author":{"gitId":"ChrysanthemumT"},"content":" public void listItems() {","lastModifiedDate":"2024-01-23"},{"lineNumber":69,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(storage);","lastModifiedDate":"2024-01-23"},{"lineNumber":70,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":71,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":72,"author":{"gitId":"ChrysanthemumT"},"content":" public void error(String error) {","lastModifiedDate":"2024-01-24"},{"lineNumber":73,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(lines);","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(error);","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(lines);","lastModifiedDate":"2024-01-24"},{"lineNumber":76,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":77,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":78,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":79,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"ChrysanthemumT":79}},{"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":"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.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"import DukeException.InvalidCommandException;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":"import DukeException.ListOutofBoundsException;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":"import DukeException.MissingArgumentsException;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":"import Storage.Deadlines;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":"import Storage.Events;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":"import Storage.Todos;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":"import UI.UI;","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":"import Parser.Parser;","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":"import Storage.Task;","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":" UI ui \u003d new UI();","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":" UI.greeting();","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"ChrysanthemumT"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"ChrysanthemumT"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"ChrysanthemumT"},"content":" boolean flag \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"ChrysanthemumT"},"content":" while(flag) {","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"ChrysanthemumT"},"content":" String input \u003d scanner.nextLine().trim();","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"ChrysanthemumT"},"content":" parser.feed(input);","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"ChrysanthemumT"},"content":" String[] output;","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"ChrysanthemumT"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"ChrysanthemumT"},"content":" output \u003d parser.parse();","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"ChrysanthemumT"},"content":" } catch (InvalidCommandException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"ChrysanthemumT"},"content":" ui.error(e.getMessage());","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"ChrysanthemumT"},"content":" continue;","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"ChrysanthemumT"},"content":" } catch (MissingArgumentsException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"ChrysanthemumT"},"content":" ui.error(e.getMessage());","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"ChrysanthemumT"},"content":" continue;","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"ChrysanthemumT"},"content":" Task task;","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"ChrysanthemumT"},"content":" switch (output[0]) {","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"ChrysanthemumT"},"content":" case \"bye\":","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"ChrysanthemumT"},"content":" UI.goodbye();","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"ChrysanthemumT"},"content":" flag \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"ChrysanthemumT"},"content":" case \"list\":","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"ChrysanthemumT"},"content":" ui.listItems();","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"ChrysanthemumT"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"ChrysanthemumT"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"ChrysanthemumT"},"content":" ui.unMarkTask(Integer.parseInt(output[1]) - 1);","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"ChrysanthemumT"},"content":" } catch (ListOutofBoundsException e){","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"ChrysanthemumT"},"content":" ui.error(e.getMessage());","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"ChrysanthemumT"},"content":" case \"mark\":","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"ChrysanthemumT"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"ChrysanthemumT"},"content":" ui.markTaskUI(Integer.parseInt(output[1]) - 1);","lastModifiedDate":"2024-01-23"},{"lineNumber":53,"author":{"gitId":"ChrysanthemumT"},"content":" } catch (ListOutofBoundsException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"ChrysanthemumT"},"content":" ui.error(e.getMessage());","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"ChrysanthemumT"},"content":" case \"todo\":","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"ChrysanthemumT"},"content":" task \u003d new Todos(output[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"ChrysanthemumT"},"content":" ui.addItem(task);","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"ChrysanthemumT"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"ChrysanthemumT"},"content":" task \u003d new Deadlines(output[1], output[2]);","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"ChrysanthemumT"},"content":" ui.addItem(task);","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"ChrysanthemumT"},"content":" case \"event\":","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"ChrysanthemumT"},"content":" task \u003d new Events(output[1], output[2], output[3]);","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"ChrysanthemumT"},"content":" ui.addItem(task);","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":69,"author":{"gitId":"ChrysanthemumT"},"content":" case \"delete\":","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"ChrysanthemumT"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"ChrysanthemumT"},"content":" ui.removeTask(Integer.parseInt(output[1]) - 1);","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"ChrysanthemumT"},"content":" } catch (ListOutofBoundsException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"ChrysanthemumT"},"content":" ui.error(e.getMessage());","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"ChrysanthemumT"},"content":" default:","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":79,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":81,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"ChrysanthemumT":77,"-":4}},{"path":"src/main/java/DukeException/InvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package DukeException;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"public class InvalidCommandException extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":" public InvalidCommandException(String message) {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":" super(message);","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":" public String getMessage() {","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":" return \" \" + super.getMessage() + \"\\n You have entered an invalid command:\\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" \" Try todo, event, deadline, list , delete , mark {index},\\n or unmark {index} instead.\";","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ChrysanthemumT":13}},{"path":"src/main/java/DukeException/ListOutofBoundsException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package DukeException;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"public class ListOutofBoundsException extends Exception{","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":" public ListOutofBoundsException(String string) {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":" super(string);","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":" public String getMessage() {","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":" return \" ListOutofBoundsException\\n You have entered an invalid list index:\\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" \" List size:\" + super.getMessage();","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ChrysanthemumT":13}},{"path":"src/main/java/DukeException/MissingArgumentsException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package DukeException;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"public class MissingArgumentsException extends Exception{","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":" public MissingArgumentsException(String string) {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":" super(string);","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":" public String getMessage() {","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":" return \" MissingArgumentException\\n You have missing arguments:\\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":" \" Try \" + super.getMessage();","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ChrysanthemumT":12}},{"path":"src/main/java/DukeException/MissingArgumentsExceptionDeadlines.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package DukeException;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"public class MissingArgumentsExceptionDeadlines extends MissingArgumentsExceptionTodo{","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":" public MissingArgumentsExceptionDeadlines(String string) {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":" super(string);","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":" public String getMessage() {","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":" return super.getMessage() + \" /by {your deadline}\";","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ChrysanthemumT":13}},{"path":"src/main/java/DukeException/MissingArgumentsExceptionEvents.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package DukeException;","lastModifiedDate":"2024-01-24"},{"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":" public MissingArgumentsExceptionEvents(String string) {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":" super(string);","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":" public String getMessage() {","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":" return super.getMessage() + \" /from {your starting time} /to {your ending time}\";","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ChrysanthemumT":11}},{"path":"src/main/java/DukeException/MissingArgumentsExceptionMarking.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package DukeException;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"public class MissingArgumentsExceptionMarking extends MissingArgumentsException{","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":" public MissingArgumentsExceptionMarking(String string) {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":" super(string);","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":" public String getMessage() {","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":" return super.getMessage() + \" {index of item in list}\";","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ChrysanthemumT":12}},{"path":"src/main/java/DukeException/MissingArgumentsExceptionTodo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package DukeException;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"public class MissingArgumentsExceptionTodo extends MissingArgumentsException {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":" public MissingArgumentsExceptionTodo(String string) {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":" super(string);","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":" public String getMessage() {","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":" return super.getMessage() + \" {your item}\";","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ChrysanthemumT":13}},{"path":"src/main/java/Parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package Parser;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"import DukeException.*;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":"enum COMMANDS {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":" LIST, BYE, DELETE, UNMARK, MARK, TODO, EVENT, DEADLINE, INVALID","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":"public class Parser {","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" private String input;","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":" public Parser() {","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"ChrysanthemumT"},"content":" this.input \u003d \"\";","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":" public Parser(String input) {","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":" this.input \u003d input;","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"ChrysanthemumT"},"content":" public void feed(String input) {","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"ChrysanthemumT"},"content":" this.input \u003d input;","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"ChrysanthemumT"},"content":" public String[] parse() throws InvalidCommandException, MissingArgumentsException {","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"ChrysanthemumT"},"content":" String[] ans \u003d new String[4];","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"ChrysanthemumT"},"content":" String[] split \u003d this.input.split(\" \");","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"ChrysanthemumT"},"content":" int flag;","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"ChrysanthemumT"},"content":" int flag2;","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"ChrysanthemumT"},"content":" switch(split[0]) {","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"ChrysanthemumT"},"content":" case \"list\":","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"ChrysanthemumT"},"content":" if (split.length !\u003d 1) {","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"ChrysanthemumT"},"content":" throw new InvalidCommandException(\"InvalidCommandException\");","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"ChrysanthemumT"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"ChrysanthemumT"},"content":" ans[0] \u003d \"list\";","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"ChrysanthemumT"},"content":" case \"bye\":","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"ChrysanthemumT"},"content":" if (split.length !\u003d 1) {","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"ChrysanthemumT"},"content":" throw new InvalidCommandException(\"InvalidCommandException\");","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"ChrysanthemumT"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"ChrysanthemumT"},"content":" ans[0] \u003d \"bye\";","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"ChrysanthemumT"},"content":" case \"delete\":","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"ChrysanthemumT"},"content":" // Fallthrough","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"ChrysanthemumT"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"ChrysanthemumT"},"content":" // Fallthrough","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"ChrysanthemumT"},"content":" case \"mark\":","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"ChrysanthemumT"},"content":" if (split.length !\u003d 2) {","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"ChrysanthemumT"},"content":" throw new MissingArgumentsExceptionMarking(split[0]);","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"ChrysanthemumT"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"ChrysanthemumT"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"ChrysanthemumT"},"content":" flag \u003d Integer.parseInt(split[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"ChrysanthemumT"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"ChrysanthemumT"},"content":" throw new InvalidCommandException(\"InvalidCommandException\");","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"ChrysanthemumT"},"content":" ans \u003d split;","lastModifiedDate":"2024-01-24"},{"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 \"todo\":","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"ChrysanthemumT"},"content":" if (split.length \u003d\u003d 1) {","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"ChrysanthemumT"},"content":" throw new MissingArgumentsExceptionTodo(\"todo\");","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"ChrysanthemumT"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"ChrysanthemumT"},"content":" int space \u003d this.input.indexOf(\" \");","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"ChrysanthemumT"},"content":" ans[0] \u003d \"todo\";","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"ChrysanthemumT"},"content":" ans[1] \u003d this.input.substring(space + 1, this.input.length());","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"ChrysanthemumT"},"content":" case \"event\":","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"ChrysanthemumT"},"content":" flag \u003d Arrays.asList(split).indexOf(\"/from\");","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"ChrysanthemumT"},"content":" flag2 \u003d Arrays.asList(split).indexOf(\"/to\");","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"ChrysanthemumT"},"content":" if (split.length \u003c 5) {","lastModifiedDate":"2024-01-24"},{"lineNumber":73,"author":{"gitId":"ChrysanthemumT"},"content":" throw new MissingArgumentsExceptionEvents(\"event\");","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"ChrysanthemumT"},"content":" } else if (flag \u003c 2 || flag2 \u003d\u003d split.length -1 || flag2 - flag \u003c\u003d 1) {","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"ChrysanthemumT"},"content":" throw new MissingArgumentsExceptionEvents(\"event\");","lastModifiedDate":"2024-01-24"},{"lineNumber":76,"author":{"gitId":"ChrysanthemumT"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":77,"author":{"gitId":"ChrysanthemumT"},"content":" int space \u003d this.input.indexOf(\" \");","lastModifiedDate":"2024-01-24"},{"lineNumber":78,"author":{"gitId":"ChrysanthemumT"},"content":" int slash \u003d this.input.indexOf(\"/\");","lastModifiedDate":"2024-01-24"},{"lineNumber":79,"author":{"gitId":"ChrysanthemumT"},"content":" int sSlash \u003d this.input.indexOf(\"/\", slash + 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":80,"author":{"gitId":"ChrysanthemumT"},"content":" ans[0] \u003d \"event\";","lastModifiedDate":"2024-01-24"},{"lineNumber":81,"author":{"gitId":"ChrysanthemumT"},"content":" ans[1] \u003d this.input.substring(space + 1, slash).trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":82,"author":{"gitId":"ChrysanthemumT"},"content":" int from \u003d this.input.indexOf(\" \", slash + 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":83,"author":{"gitId":"ChrysanthemumT"},"content":" ans[2] \u003d this.input.substring(from + 1, sSlash).trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":84,"author":{"gitId":"ChrysanthemumT"},"content":" int to \u003d this.input.indexOf(\" \", sSlash + 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":85,"author":{"gitId":"ChrysanthemumT"},"content":" ans[3] \u003d this.input.substring(to + 1, this.input.length()).trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":86,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":87,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":88,"author":{"gitId":"ChrysanthemumT"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-24"},{"lineNumber":89,"author":{"gitId":"ChrysanthemumT"},"content":" flag \u003d Arrays.asList(split).indexOf(\"/by\");","lastModifiedDate":"2024-01-24"},{"lineNumber":90,"author":{"gitId":"ChrysanthemumT"},"content":" if (split.length \u003c 4) {","lastModifiedDate":"2024-01-24"},{"lineNumber":91,"author":{"gitId":"ChrysanthemumT"},"content":" throw new MissingArgumentsExceptionDeadlines(\"deadline\");","lastModifiedDate":"2024-01-24"},{"lineNumber":92,"author":{"gitId":"ChrysanthemumT"},"content":" } else if (flag \u003c 2 || flag \u003d\u003d split.length -1) {","lastModifiedDate":"2024-01-24"},{"lineNumber":93,"author":{"gitId":"ChrysanthemumT"},"content":" throw new MissingArgumentsExceptionDeadlines(\"deadline\");","lastModifiedDate":"2024-01-24"},{"lineNumber":94,"author":{"gitId":"ChrysanthemumT"},"content":" }else {","lastModifiedDate":"2024-01-24"},{"lineNumber":95,"author":{"gitId":"ChrysanthemumT"},"content":" int space \u003d this.input.indexOf(\" \");","lastModifiedDate":"2024-01-24"},{"lineNumber":96,"author":{"gitId":"ChrysanthemumT"},"content":" int slash \u003d this.input.indexOf(\"/\");","lastModifiedDate":"2024-01-24"},{"lineNumber":97,"author":{"gitId":"ChrysanthemumT"},"content":" ans[0] \u003d \"deadline\";","lastModifiedDate":"2024-01-24"},{"lineNumber":98,"author":{"gitId":"ChrysanthemumT"},"content":" ans[1] \u003d this.input.substring(space + 1, slash).trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":99,"author":{"gitId":"ChrysanthemumT"},"content":" int by \u003d this.input.indexOf(\" \", slash + 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":100,"author":{"gitId":"ChrysanthemumT"},"content":" ans[2] \u003d this.input.substring(by+1, this.input.length()).trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":101,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":102,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":103,"author":{"gitId":"ChrysanthemumT"},"content":" default:","lastModifiedDate":"2024-01-24"},{"lineNumber":104,"author":{"gitId":"ChrysanthemumT"},"content":" throw new InvalidCommandException(\"InvalidCommandException\");","lastModifiedDate":"2024-01-24"},{"lineNumber":105,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":106,"author":{"gitId":"ChrysanthemumT"},"content":" return ans;","lastModifiedDate":"2024-01-24"},{"lineNumber":107,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":108,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":109,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"ChrysanthemumT":109}},{"path":"src/main/java/Storage/Deadlines.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package Storage;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"public class Deadlines extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":" protected String by;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":" public Deadlines(String description, String by) {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ChrysanthemumT":13}},{"path":"src/main/java/Storage/Events.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package Storage;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"public class Events extends Task{","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":" protected String from;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":" protected String to;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":" public Events(String description,String from,String to) {","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"ChrysanthemumT"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"ChrysanthemumT"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.from + \" to: \" + this.to + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ChrysanthemumT":17}},{"path":"src/main/java/Storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package Storage;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":"import UI.UI;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":"public class Storage {","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":" private static final String lines \u003d \" ____________________________________________________________\";","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":" private final ArrayList\u003cTask\u003e storage;","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"ChrysanthemumT"},"content":" public Storage() {","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":" this.storage \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"ChrysanthemumT"},"content":" public void add(Task task) {","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"ChrysanthemumT"},"content":" this.storage.add(task);","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"ChrysanthemumT"},"content":" saveToFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"ChrysanthemumT"},"content":" public void markTask(int number) {","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"ChrysanthemumT"},"content":" this.storage.get(number).mark();","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(\" \" + this.storage.get(number).toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"ChrysanthemumT"},"content":" saveToFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"ChrysanthemumT"},"content":" public void unMarkTask(int number) {","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"ChrysanthemumT"},"content":" this.storage.get(number).unMark();","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(\" \" + this.storage.get(number).toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"ChrysanthemumT"},"content":" saveToFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"ChrysanthemumT"},"content":" public void remove(int number) {","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(\" \" + this.storage.get(number).toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"ChrysanthemumT"},"content":" this.storage.remove(number);","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"ChrysanthemumT"},"content":" saveToFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"ChrysanthemumT"},"content":" public int taskLength() {","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"ChrysanthemumT"},"content":" return this.storage.size();","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"ChrysanthemumT"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"ChrysanthemumT"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"ChrysanthemumT"},"content":" StringBuilder result \u003d new StringBuilder();","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"ChrysanthemumT"},"content":" result.append(lines).append(\"\\n\");","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"ChrysanthemumT"},"content":" for(int i\u003d1;i\u003c\u003dstorage.size();i++) {","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"ChrysanthemumT"},"content":" result.append(String.format(\" %d.\",i)).append(this.storage.get(i-1).toString()).append(\"\\n\");","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"ChrysanthemumT"},"content":" result.append(lines);","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"ChrysanthemumT"},"content":" return result.toString();","lastModifiedDate":"2024-01-23"},{"lineNumber":52,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":53,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":54,"author":{"gitId":"ChrysanthemumT"},"content":" private void saveToFile() {","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"ChrysanthemumT"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"ChrysanthemumT"},"content":" FileWriter fileWriter \u003d new FileWriter(\"./tsrc/main/java/Storage/data.txt\");","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"ChrysanthemumT"},"content":" fileWriter.write(toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"ChrysanthemumT"},"content":" fileWriter.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"ChrysanthemumT"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"ChrysanthemumT"},"content":" UI.error(e.getMessage());","lastModifiedDate":"2024-01-30"},{"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"},{"lineNumber":64,"author":{"gitId":"ChrysanthemumT"},"content":" private String formatDataForFile() {","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"ChrysanthemumT"},"content":" return \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"ChrysanthemumT":67}},{"path":"src/main/java/Storage/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package Storage;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"import java.text.Normalizer;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":"public class Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":" protected String description;","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"ChrysanthemumT"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"ChrysanthemumT"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"ChrysanthemumT"},"content":" public void mark() {","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"ChrysanthemumT"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"ChrysanthemumT"},"content":" public void unMark() {","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":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"ChrysanthemumT"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"ChrysanthemumT"},"content":" return String.format(\"[%s] \", getStatusIcon()) + description;","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"ChrysanthemumT":31}},{"path":"src/main/java/Storage/Todos.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package Storage;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"public class Todos extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":" public Todos(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ChrysanthemumT":12}},{"path":"src/main/java/Storage/data.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":" ____________________________________________________________","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":" 1.[D][ ] ip (by: tonite)","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":" ____________________________________________________________","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"ChrysanthemumT":3}},{"path":"src/main/java/UI/UI.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package UI;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"import Storage.Storage;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":"import Storage.Task;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":"import DukeException.*;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":"public class UI {","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":" private static final String lines \u003d \" ____________________________________________________________\";","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":" private static final String name \u003d \"Wang\";","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" private final Storage storage;","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":" public UI() {","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"ChrysanthemumT"},"content":" this.storage \u003d new Storage();","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":" public static void greeting() {","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.printf(\" Hello! I\u0027m %s\\n\", name);","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(\" What can I do for you?\");","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(lines);","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"ChrysanthemumT"},"content":" public static void goodbye() {","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(lines);","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(\" Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(lines);","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"ChrysanthemumT"},"content":" public void addItem(Task task) {","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"ChrysanthemumT"},"content":" this.storage.add(task);","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(lines);","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(\" \" + \"Got it. I\u0027ve added this task:\\n\" + \" \" + task + \"\\n\" + \"\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"ChrysanthemumT"},"content":" String.format(\" Now you have %d tasks in the list.\", this.storage.taskLength()));","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(lines);","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"ChrysanthemumT"},"content":" public void markTaskUI(int input) throws ListOutofBoundsException{","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"ChrysanthemumT"},"content":" if (input \u003c0 || input \u003e this.storage.taskLength() - 1) {","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"ChrysanthemumT"},"content":" throw new ListOutofBoundsException(String.format(\"%d\", this.storage.taskLength()));","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(lines);","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(\" Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"ChrysanthemumT"},"content":" this.storage.markTask(input);","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(lines);","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"ChrysanthemumT"},"content":" public void unMarkTask(int input) throws ListOutofBoundsException{","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"ChrysanthemumT"},"content":" if (input \u003c 0 || input \u003e this.storage.taskLength() - 1) {","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"ChrysanthemumT"},"content":" throw new ListOutofBoundsException(String.format(\"%d\", this.storage.taskLength()));","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(lines);","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(\" OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":52,"author":{"gitId":"ChrysanthemumT"},"content":" this.storage.unMarkTask(input);","lastModifiedDate":"2024-01-23"},{"lineNumber":53,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(lines);","lastModifiedDate":"2024-01-23"},{"lineNumber":54,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":55,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":56,"author":{"gitId":"ChrysanthemumT"},"content":" public void removeTask(int input) throws ListOutofBoundsException {","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"ChrysanthemumT"},"content":" if (input \u003c 0 || input \u003e this.storage.taskLength() - 1) {","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"ChrysanthemumT"},"content":" throw new ListOutofBoundsException(String.format(\"%d\", this.storage.taskLength()));","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(lines);","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(\" Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"ChrysanthemumT"},"content":" this.storage.remove(input);","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(String.format(\" Now you have %d tasks in the list.\",this.storage.taskLength()));","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(lines);","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":68,"author":{"gitId":"ChrysanthemumT"},"content":" public void listItems() {","lastModifiedDate":"2024-01-23"},{"lineNumber":69,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(storage);","lastModifiedDate":"2024-01-23"},{"lineNumber":70,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":71,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":72,"author":{"gitId":"ChrysanthemumT"},"content":" public static void error(String error) {","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(lines);","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(error);","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(lines);","lastModifiedDate":"2024-01-24"},{"lineNumber":76,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":77,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":78,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":79,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"ChrysanthemumT":79}},{"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}}] diff --git a/ChrysanthemumT_ip_master/commits.json b/ChrysanthemumT_ip_master/commits.json index ab6ae918..f7898d52 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}}}]}]},"authorFileTypeContributionMap":{"ChrysanthemumT":{"java":464,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":8}},"authorContributionVariance":{"ChrysanthemumT":20129.834},"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":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"ChrysanthemumT":{"java":492,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":14}},"authorContributionVariance":{"ChrysanthemumT":17034.137},"authorDisplayNameMap":{"ChrysanthemumT":"CS2103T-W11-3 WANG..HONG"}} diff --git a/ChuaZiLong_ip_master/authorship.json b/ChuaZiLong_ip_master/authorship.json index 21706d21..c5f3bbc3 100644 --- a/ChuaZiLong_ip_master/authorship.json +++ b/ChuaZiLong_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChuaZiLong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"ChuaZiLong"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.File;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.PrintWriter;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ChuaZiLong"},"content":"class DukeException extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ChuaZiLong"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ChuaZiLong"},"content":" super(message);","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"ChuaZiLong"},"content":"enum TaskType {","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"ChuaZiLong"},"content":" TODO,","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"ChuaZiLong"},"content":" DEADLINE,","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"ChuaZiLong"},"content":" EVENT","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"ChuaZiLong"},"content":"class Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"ChuaZiLong"},"content":" protected String description;","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"ChuaZiLong"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"ChuaZiLong"},"content":" protected TaskType taskType;","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"ChuaZiLong"},"content":" public Task(String description, TaskType taskType) {","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"ChuaZiLong"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"ChuaZiLong"},"content":" this.taskType \u003d taskType;","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"ChuaZiLong"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"ChuaZiLong"},"content":" return \"[\" + taskType + \"]\" + (isDone ? \"[X] \" : \"[ ] \");","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"ChuaZiLong"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"ChuaZiLong"},"content":" return description;","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"ChuaZiLong"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"ChuaZiLong"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"ChuaZiLong"},"content":" public void markAsNotDone() {","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"ChuaZiLong"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"ChuaZiLong"},"content":"class Todo extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"ChuaZiLong"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"ChuaZiLong"},"content":" super(description, TaskType.TODO);","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"ChuaZiLong"},"content":"class Deadline extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"ChuaZiLong"},"content":" protected String by;","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"ChuaZiLong"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"ChuaZiLong"},"content":" super(description, TaskType.DEADLINE);","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"ChuaZiLong"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"ChuaZiLong"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"ChuaZiLong"},"content":" return super.getDescription() + \" (by: \" + by + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"ChuaZiLong"},"content":"class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"ChuaZiLong"},"content":" protected String from;","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"ChuaZiLong"},"content":" protected String to;","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"ChuaZiLong"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"ChuaZiLong"},"content":" super(description, TaskType.EVENT);","lastModifiedDate":"2024-01-24"},{"lineNumber":73,"author":{"gitId":"ChuaZiLong"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"ChuaZiLong"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":76,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":77,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":78,"author":{"gitId":"ChuaZiLong"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-24"},{"lineNumber":79,"author":{"gitId":"ChuaZiLong"},"content":" return super.getDescription() + \" (from: \" + from + \" to: \" + to + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":80,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":81,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":82,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":84,"author":{"gitId":"ChuaZiLong"},"content":" private static final String DIRECTORY_PATH \u003d \"./data/duke.txt\";","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"ChuaZiLong"},"content":" private static final String FILE_PATH \u003d DIRECTORY_PATH + File.separator + \"duke.txt\";","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"ChuaZiLong"},"content":" private static ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-24"},{"lineNumber":87,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":89,"author":{"gitId":"ChuaZiLong"},"content":" loadTasksFromFile();","lastModifiedDate":"2024-01-28"},{"lineNumber":90,"author":{"gitId":"ChuaZiLong"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-24"},{"lineNumber":91,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":92,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Hello! I\u0027m SCZL\");","lastModifiedDate":"2024-01-24"},{"lineNumber":93,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2024-01-24"},{"lineNumber":94,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":95,"author":{"gitId":"ChuaZiLong"},"content":" while (true) {","lastModifiedDate":"2024-01-24"},{"lineNumber":96,"author":{"gitId":"ChuaZiLong"},"content":" String userInput \u003d scanner.nextLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":97,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":98,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"____________________________________________________________\\n\");","lastModifiedDate":"2024-01-24"},{"lineNumber":99,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":100,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":101,"author":{"gitId":"ChuaZiLong"},"content":" if (userInput.equalsIgnoreCase(\"bye\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":102,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-24"},{"lineNumber":103,"author":{"gitId":"ChuaZiLong"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":104,"author":{"gitId":"ChuaZiLong"},"content":" } else if (userInput.equalsIgnoreCase(\"list\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":105,"author":{"gitId":"ChuaZiLong"},"content":" listTasks();","lastModifiedDate":"2024-01-24"},{"lineNumber":106,"author":{"gitId":"ChuaZiLong"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":107,"author":{"gitId":"ChuaZiLong"},"content":" processTaskInput(userInput);","lastModifiedDate":"2024-01-24"},{"lineNumber":108,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":109,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":110,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + e.getMessage());","lastModifiedDate":"2024-01-24"},{"lineNumber":111,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":112,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":113,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":114,"author":{"gitId":"ChuaZiLong"},"content":" scanner.close();","lastModifiedDate":"2024-01-24"},{"lineNumber":115,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":116,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":117,"author":{"gitId":"ChuaZiLong"},"content":" private static void processTaskInput(String userInput) throws DukeException {","lastModifiedDate":"2024-01-24"},{"lineNumber":118,"author":{"gitId":"ChuaZiLong"},"content":" if (userInput.startsWith(\"todo\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":119,"author":{"gitId":"ChuaZiLong"},"content":" addTodoTask(userInput.substring(5).trim());","lastModifiedDate":"2024-01-24"},{"lineNumber":120,"author":{"gitId":"ChuaZiLong"},"content":" } else if (userInput.startsWith(\"deadline\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":121,"author":{"gitId":"ChuaZiLong"},"content":" addDeadlineTask(userInput.substring(9).trim());","lastModifiedDate":"2024-01-24"},{"lineNumber":122,"author":{"gitId":"ChuaZiLong"},"content":" } else if (userInput.startsWith(\"event\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":123,"author":{"gitId":"ChuaZiLong"},"content":" addEventTask(userInput.substring(6).trim());","lastModifiedDate":"2024-01-24"},{"lineNumber":124,"author":{"gitId":"ChuaZiLong"},"content":" } else if (userInput.startsWith(\"mark\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":125,"author":{"gitId":"ChuaZiLong"},"content":" markTask(userInput);","lastModifiedDate":"2024-01-24"},{"lineNumber":126,"author":{"gitId":"ChuaZiLong"},"content":" } else if (userInput.startsWith(\"unmark\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":127,"author":{"gitId":"ChuaZiLong"},"content":" unmarkTask(userInput);","lastModifiedDate":"2024-01-24"},{"lineNumber":128,"author":{"gitId":"ChuaZiLong"},"content":" } else if (userInput.startsWith(\"delete\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":129,"author":{"gitId":"ChuaZiLong"},"content":" deleteTask(userInput);","lastModifiedDate":"2024-01-24"},{"lineNumber":130,"author":{"gitId":"ChuaZiLong"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":131,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2024-01-24"},{"lineNumber":132,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":133,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":134,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":135,"author":{"gitId":"ChuaZiLong"},"content":" private static void addTodoTask(String description) throws DukeException {","lastModifiedDate":"2024-01-24"},{"lineNumber":136,"author":{"gitId":"ChuaZiLong"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":137,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":138,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":139,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":140,"author":{"gitId":"ChuaZiLong"},"content":" tasks.add(new Todo(description));","lastModifiedDate":"2024-01-24"},{"lineNumber":141,"author":{"gitId":"ChuaZiLong"},"content":" printTaskAddedMessage(tasks.get(tasks.size() - 1));","lastModifiedDate":"2024-01-24"},{"lineNumber":142,"author":{"gitId":"ChuaZiLong"},"content":" saveTasksToFile();","lastModifiedDate":"2024-01-28"},{"lineNumber":143,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":144,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":145,"author":{"gitId":"ChuaZiLong"},"content":" private static void addDeadlineTask(String input) throws DukeException {","lastModifiedDate":"2024-01-24"},{"lineNumber":146,"author":{"gitId":"ChuaZiLong"},"content":" int byIndex \u003d input.indexOf(\"/by\");","lastModifiedDate":"2024-01-24"},{"lineNumber":147,"author":{"gitId":"ChuaZiLong"},"content":" if (byIndex !\u003d -1) {","lastModifiedDate":"2024-01-24"},{"lineNumber":148,"author":{"gitId":"ChuaZiLong"},"content":" String description \u003d input.substring(0, byIndex).trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":149,"author":{"gitId":"ChuaZiLong"},"content":" String by \u003d input.substring(byIndex + 3).trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":150,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":151,"author":{"gitId":"ChuaZiLong"},"content":" if (description.isEmpty() || by.isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":152,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"OOPS!!! The description and /by cannot be empty for a deadline.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":153,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":154,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":155,"author":{"gitId":"ChuaZiLong"},"content":" tasks.add(new Deadline(description, by));","lastModifiedDate":"2024-01-24"},{"lineNumber":156,"author":{"gitId":"ChuaZiLong"},"content":" printTaskAddedMessage(tasks.get(tasks.size() - 1));","lastModifiedDate":"2024-01-24"},{"lineNumber":157,"author":{"gitId":"ChuaZiLong"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":158,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"OOPS!!! Invalid deadline command format.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":159,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":160,"author":{"gitId":"ChuaZiLong"},"content":" saveTasksToFile();","lastModifiedDate":"2024-01-28"},{"lineNumber":161,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":162,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":163,"author":{"gitId":"ChuaZiLong"},"content":" private static void addEventTask(String input) throws DukeException {","lastModifiedDate":"2024-01-24"},{"lineNumber":164,"author":{"gitId":"ChuaZiLong"},"content":" int fromIndex \u003d input.indexOf(\"/from\");","lastModifiedDate":"2024-01-24"},{"lineNumber":165,"author":{"gitId":"ChuaZiLong"},"content":" int toIndex \u003d input.indexOf(\"/to\");","lastModifiedDate":"2024-01-24"},{"lineNumber":166,"author":{"gitId":"ChuaZiLong"},"content":" if (fromIndex !\u003d -1 \u0026\u0026 toIndex !\u003d -1) {","lastModifiedDate":"2024-01-24"},{"lineNumber":167,"author":{"gitId":"ChuaZiLong"},"content":" String description \u003d input.substring(0, fromIndex).trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":168,"author":{"gitId":"ChuaZiLong"},"content":" String from \u003d input.substring(fromIndex + 5, toIndex).trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":169,"author":{"gitId":"ChuaZiLong"},"content":" String to \u003d input.substring(toIndex + 3).trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":170,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":171,"author":{"gitId":"ChuaZiLong"},"content":" if (description.isEmpty() || from.isEmpty() || to.isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":172,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"OOPS!!! The description, /from, and /to cannot be empty for an event.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":173,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":174,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":175,"author":{"gitId":"ChuaZiLong"},"content":" tasks.add(new Event(description, from, to));","lastModifiedDate":"2024-01-24"},{"lineNumber":176,"author":{"gitId":"ChuaZiLong"},"content":" printTaskAddedMessage(tasks.get(tasks.size() - 1));","lastModifiedDate":"2024-01-24"},{"lineNumber":177,"author":{"gitId":"ChuaZiLong"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":178,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"OOPS!!! Invalid event command format.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":179,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":180,"author":{"gitId":"ChuaZiLong"},"content":" saveTasksToFile();","lastModifiedDate":"2024-01-28"},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":182,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":183,"author":{"gitId":"ChuaZiLong"},"content":" private static void markTask(String userInput) throws DukeException {","lastModifiedDate":"2024-01-24"},{"lineNumber":184,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":185,"author":{"gitId":"ChuaZiLong"},"content":" int taskIndex \u003d Integer.parseInt(userInput.substring(5).trim()) - 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":186,"author":{"gitId":"ChuaZiLong"},"content":" if (isValidTaskIndex(taskIndex)) {","lastModifiedDate":"2024-01-24"},{"lineNumber":187,"author":{"gitId":"ChuaZiLong"},"content":" tasks.get(taskIndex).markAsDone();","lastModifiedDate":"2024-01-24"},{"lineNumber":188,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":189,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + tasks.get(taskIndex).getStatusIcon() + tasks.get(taskIndex).getDescription());","lastModifiedDate":"2024-01-24"},{"lineNumber":190,"author":{"gitId":"ChuaZiLong"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":191,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"OOPS!!! Invalid task number.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":192,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":193,"author":{"gitId":"ChuaZiLong"},"content":" } catch (NumberFormatException | StringIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":194,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"OOPS!!! Invalid command format.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":195,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":196,"author":{"gitId":"ChuaZiLong"},"content":" saveTasksToFile();","lastModifiedDate":"2024-01-28"},{"lineNumber":197,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":198,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":199,"author":{"gitId":"ChuaZiLong"},"content":" private static void unmarkTask(String userInput) throws DukeException {","lastModifiedDate":"2024-01-24"},{"lineNumber":200,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":201,"author":{"gitId":"ChuaZiLong"},"content":" int taskIndex \u003d Integer.parseInt(userInput.substring(7).trim()) - 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":202,"author":{"gitId":"ChuaZiLong"},"content":" if (isValidTaskIndex(taskIndex)) {","lastModifiedDate":"2024-01-24"},{"lineNumber":203,"author":{"gitId":"ChuaZiLong"},"content":" tasks.get(taskIndex).markAsNotDone();","lastModifiedDate":"2024-01-24"},{"lineNumber":204,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":205,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + tasks.get(taskIndex).getStatusIcon() + tasks.get(taskIndex).getDescription());","lastModifiedDate":"2024-01-24"},{"lineNumber":206,"author":{"gitId":"ChuaZiLong"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":207,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"OOPS!!! Invalid task number.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":208,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":209,"author":{"gitId":"ChuaZiLong"},"content":" } catch (NumberFormatException | StringIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":210,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"OOPS!!! Invalid command format.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":211,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":212,"author":{"gitId":"ChuaZiLong"},"content":" saveTasksToFile();","lastModifiedDate":"2024-01-28"},{"lineNumber":213,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":214,"author":{"gitId":"ChuaZiLong"},"content":" private static void loadTasksFromFile() {","lastModifiedDate":"2024-01-28"},{"lineNumber":215,"author":{"gitId":"ChuaZiLong"},"content":" File directory \u003d new File(DIRECTORY_PATH);","lastModifiedDate":"2024-01-28"},{"lineNumber":216,"author":{"gitId":"ChuaZiLong"},"content":" if (!directory.exists()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":217,"author":{"gitId":"ChuaZiLong"},"content":" directory.mkdirs();","lastModifiedDate":"2024-01-28"},{"lineNumber":218,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":219,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":220,"author":{"gitId":"ChuaZiLong"},"content":" File file \u003d new File(FILE_PATH);","lastModifiedDate":"2024-01-28"},{"lineNumber":221,"author":{"gitId":"ChuaZiLong"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":222,"author":{"gitId":"ChuaZiLong"},"content":" return; // File will be created when saving tasks for the first time.","lastModifiedDate":"2024-01-28"},{"lineNumber":223,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":224,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":225,"author":{"gitId":"ChuaZiLong"},"content":" try (Scanner fileScanner \u003d new Scanner(file)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":226,"author":{"gitId":"ChuaZiLong"},"content":" while (fileScanner.hasNext()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":227,"author":{"gitId":"ChuaZiLong"},"content":" String line \u003d fileScanner.nextLine();","lastModifiedDate":"2024-01-28"},{"lineNumber":228,"author":{"gitId":"ChuaZiLong"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-01-28"},{"lineNumber":229,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":230,"author":{"gitId":"ChuaZiLong"},"content":" // Expected format: Type | Done | Description | Additional Info","lastModifiedDate":"2024-01-28"},{"lineNumber":231,"author":{"gitId":"ChuaZiLong"},"content":" String type \u003d parts[0];","lastModifiedDate":"2024-01-28"},{"lineNumber":232,"author":{"gitId":"ChuaZiLong"},"content":" boolean isDone \u003d parts[1].equals(\"1\");","lastModifiedDate":"2024-01-28"},{"lineNumber":233,"author":{"gitId":"ChuaZiLong"},"content":" String description \u003d parts[2];","lastModifiedDate":"2024-01-28"},{"lineNumber":234,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d null;","lastModifiedDate":"2024-01-28"},{"lineNumber":235,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":236,"author":{"gitId":"ChuaZiLong"},"content":" switch (type) {","lastModifiedDate":"2024-01-28"},{"lineNumber":237,"author":{"gitId":"ChuaZiLong"},"content":" case \"T\":","lastModifiedDate":"2024-01-28"},{"lineNumber":238,"author":{"gitId":"ChuaZiLong"},"content":" task \u003d new Todo(description);","lastModifiedDate":"2024-01-28"},{"lineNumber":239,"author":{"gitId":"ChuaZiLong"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":240,"author":{"gitId":"ChuaZiLong"},"content":" case \"D\":","lastModifiedDate":"2024-01-28"},{"lineNumber":241,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 4) throw new DukeException(\"Invalid deadline format in file.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":242,"author":{"gitId":"ChuaZiLong"},"content":" task \u003d new Deadline(description, parts[3]);","lastModifiedDate":"2024-01-28"},{"lineNumber":243,"author":{"gitId":"ChuaZiLong"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":244,"author":{"gitId":"ChuaZiLong"},"content":" case \"E\":","lastModifiedDate":"2024-01-28"},{"lineNumber":245,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 5) throw new DukeException(\"Invalid event format in file.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":246,"author":{"gitId":"ChuaZiLong"},"content":" task \u003d new Event(description, parts[3], parts[4]);","lastModifiedDate":"2024-01-28"},{"lineNumber":247,"author":{"gitId":"ChuaZiLong"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":248,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":249,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":250,"author":{"gitId":"ChuaZiLong"},"content":" if (task !\u003d null) {","lastModifiedDate":"2024-01-28"},{"lineNumber":251,"author":{"gitId":"ChuaZiLong"},"content":" if (isDone) {","lastModifiedDate":"2024-01-28"},{"lineNumber":252,"author":{"gitId":"ChuaZiLong"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-28"},{"lineNumber":253,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":254,"author":{"gitId":"ChuaZiLong"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":255,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":256,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":257,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Skipping invalid task: \" + line);","lastModifiedDate":"2024-01-28"},{"lineNumber":258,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":259,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":260,"author":{"gitId":"ChuaZiLong"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":261,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"File not found: \" + e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":262,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":263,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":264,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":265,"author":{"gitId":"ChuaZiLong"},"content":" private static void saveTasksToFile() {","lastModifiedDate":"2024-01-28"},{"lineNumber":266,"author":{"gitId":"ChuaZiLong"},"content":" try (PrintWriter writer \u003d new PrintWriter(FILE_PATH)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":267,"author":{"gitId":"ChuaZiLong"},"content":" for (Task task : tasks) {","lastModifiedDate":"2024-01-28"},{"lineNumber":268,"author":{"gitId":"ChuaZiLong"},"content":" String type \u003d task instanceof Todo ? \"T\" :","lastModifiedDate":"2024-01-28"},{"lineNumber":269,"author":{"gitId":"ChuaZiLong"},"content":" task instanceof Deadline ? \"D\" :","lastModifiedDate":"2024-01-28"},{"lineNumber":270,"author":{"gitId":"ChuaZiLong"},"content":" task instanceof Event ? \"E\" : \"\";","lastModifiedDate":"2024-01-28"},{"lineNumber":271,"author":{"gitId":"ChuaZiLong"},"content":" String status \u003d task.isDone ? \"1\" : \"0\";","lastModifiedDate":"2024-01-28"},{"lineNumber":272,"author":{"gitId":"ChuaZiLong"},"content":" String line \u003d type + \" | \" + status + \" | \" + task.getDescription();","lastModifiedDate":"2024-01-28"},{"lineNumber":273,"author":{"gitId":"ChuaZiLong"},"content":" if (task instanceof Deadline) {","lastModifiedDate":"2024-01-28"},{"lineNumber":274,"author":{"gitId":"ChuaZiLong"},"content":" line +\u003d \" | \" + ((Deadline) task).by;","lastModifiedDate":"2024-01-28"},{"lineNumber":275,"author":{"gitId":"ChuaZiLong"},"content":" } else if (task instanceof Event) {","lastModifiedDate":"2024-01-28"},{"lineNumber":276,"author":{"gitId":"ChuaZiLong"},"content":" line +\u003d \" | \" + ((Event) task).from + \" | \" + ((Event) task).to;","lastModifiedDate":"2024-01-28"},{"lineNumber":277,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":278,"author":{"gitId":"ChuaZiLong"},"content":" writer.println(line);","lastModifiedDate":"2024-01-28"},{"lineNumber":279,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":280,"author":{"gitId":"ChuaZiLong"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":281,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Unable to save tasks: \" + e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":282,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":283,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":284,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":285,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":286,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":287,"author":{"gitId":"ChuaZiLong"},"content":" private static void deleteTask(String userInput) throws DukeException {","lastModifiedDate":"2024-01-24"},{"lineNumber":288,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":289,"author":{"gitId":"ChuaZiLong"},"content":" int taskIndex \u003d Integer.parseInt(userInput.substring(7).trim()) - 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":290,"author":{"gitId":"ChuaZiLong"},"content":" if (isValidTaskIndex(taskIndex)) {","lastModifiedDate":"2024-01-24"},{"lineNumber":291,"author":{"gitId":"ChuaZiLong"},"content":" Task removedTask \u003d tasks.remove(taskIndex);","lastModifiedDate":"2024-01-24"},{"lineNumber":292,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":293,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + removedTask.getStatusIcon() + removedTask.getDescription());","lastModifiedDate":"2024-01-24"},{"lineNumber":294,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":295,"author":{"gitId":"ChuaZiLong"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":296,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"OOPS!!! Invalid task number.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":297,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":298,"author":{"gitId":"ChuaZiLong"},"content":" } catch (NumberFormatException | StringIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":299,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"OOPS!!! Invalid command format.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":300,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":301,"author":{"gitId":"ChuaZiLong"},"content":" saveTasksToFile();","lastModifiedDate":"2024-01-28"},{"lineNumber":302,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":303,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":304,"author":{"gitId":"ChuaZiLong"},"content":" private static void listTasks() {","lastModifiedDate":"2024-01-24"},{"lineNumber":305,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":306,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" Here are the tasks in your list:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":307,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":308,"author":{"gitId":"ChuaZiLong"},"content":" if (tasks.isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":309,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" No tasks yet.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":310,"author":{"gitId":"ChuaZiLong"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":311,"author":{"gitId":"ChuaZiLong"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":312,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + (i + 1) + \".\" + tasks.get(i).getStatusIcon() + tasks.get(i).getDescription());","lastModifiedDate":"2024-01-24"},{"lineNumber":313,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":314,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":315,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":316,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":317,"author":{"gitId":"ChuaZiLong"},"content":" private static void printTaskAddedMessage(Task task) {","lastModifiedDate":"2024-01-24"},{"lineNumber":318,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":319,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task.getStatusIcon() + task.getDescription());","lastModifiedDate":"2024-01-24"},{"lineNumber":320,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":321,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":322,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":323,"author":{"gitId":"ChuaZiLong"},"content":" private static boolean isValidTaskIndex(int index) {","lastModifiedDate":"2024-01-24"},{"lineNumber":324,"author":{"gitId":"ChuaZiLong"},"content":" return index \u003e\u003d 0 \u0026\u0026 index \u003c tasks.size();","lastModifiedDate":"2024-01-24"},{"lineNumber":325,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":326,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"},{"lineNumber":327,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"-":5,"ChuaZiLong":322}}] +[{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"ChuaZiLong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ChuaZiLong"},"content":"import java.util.Date;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"ChuaZiLong"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.File;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.PrintWriter;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"ChuaZiLong"},"content":"class DukeException extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"ChuaZiLong"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"ChuaZiLong"},"content":" super(message);","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"ChuaZiLong"},"content":"class Ui {","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"ChuaZiLong"},"content":" private Scanner scanner;","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"ChuaZiLong"},"content":" public Ui() {","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"ChuaZiLong"},"content":" scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"ChuaZiLong"},"content":" public void showWelcome() {","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Hello! I\u0027m SCZL\");","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"ChuaZiLong"},"content":" public void showGoodbye() {","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"ChuaZiLong"},"content":" public void showError(String message) {","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(message);","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"ChuaZiLong"},"content":" public void showTaskAdded(Task task, int taskCount) {","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Now you have \" + taskCount + \" tasks in the list.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"ChuaZiLong"},"content":" public void showTaskList(TaskList tasks) {","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"ChuaZiLong"},"content":" for (int i \u003d 0; i \u003c tasks.getSize(); i++) {","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println((i + 1) + \".\" + tasks.getTask(i));","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"ChuaZiLong"},"content":" public String readCommand() {","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"ChuaZiLong"},"content":" return scanner.nextLine();","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"ChuaZiLong"},"content":" public void showLoadingError() {","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Error loading file.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"ChuaZiLong"},"content":" public void closeScanner() {","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"ChuaZiLong"},"content":" scanner.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"ChuaZiLong"},"content":" public void showMarkedTask(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"ChuaZiLong"},"content":" public void showUnmarkedTask(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"ChuaZiLong"},"content":" public void showDeletedTask(Task task, int taskCount) {","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Now you have \" + taskCount + \" tasks in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"ChuaZiLong"},"content":"class Storage {","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"ChuaZiLong"},"content":" private String filePath;","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"ChuaZiLong"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"ChuaZiLong"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-28"},{"lineNumber":90,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":91,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":92,"author":{"gitId":"ChuaZiLong"},"content":" public ArrayList\u003cTask\u003e load() throws DukeException {","lastModifiedDate":"2024-01-28"},{"lineNumber":93,"author":{"gitId":"ChuaZiLong"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":94,"author":{"gitId":"ChuaZiLong"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-28"},{"lineNumber":95,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":96,"author":{"gitId":"ChuaZiLong"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":97,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"File not found\");","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":99,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":100,"author":{"gitId":"ChuaZiLong"},"content":" try (Scanner fileScanner \u003d new Scanner(file)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":101,"author":{"gitId":"ChuaZiLong"},"content":" while (fileScanner.hasNext()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":102,"author":{"gitId":"ChuaZiLong"},"content":" String line \u003d fileScanner.nextLine();","lastModifiedDate":"2024-01-28"},{"lineNumber":103,"author":{"gitId":"ChuaZiLong"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-01-28"},{"lineNumber":104,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":105,"author":{"gitId":"ChuaZiLong"},"content":" String type \u003d parts[0];","lastModifiedDate":"2024-01-28"},{"lineNumber":106,"author":{"gitId":"ChuaZiLong"},"content":" boolean isDone \u003d parts[1].equals(\"1\");","lastModifiedDate":"2024-01-28"},{"lineNumber":107,"author":{"gitId":"ChuaZiLong"},"content":" String description \u003d parts[2];","lastModifiedDate":"2024-01-28"},{"lineNumber":108,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d null;","lastModifiedDate":"2024-01-28"},{"lineNumber":109,"author":{"gitId":"ChuaZiLong"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":110,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":111,"author":{"gitId":"ChuaZiLong"},"content":" switch (type) {","lastModifiedDate":"2024-01-28"},{"lineNumber":112,"author":{"gitId":"ChuaZiLong"},"content":" case \"T\":","lastModifiedDate":"2024-01-28"},{"lineNumber":113,"author":{"gitId":"ChuaZiLong"},"content":" task \u003d new Todo(description);","lastModifiedDate":"2024-01-28"},{"lineNumber":114,"author":{"gitId":"ChuaZiLong"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":115,"author":{"gitId":"ChuaZiLong"},"content":" case \"D\":","lastModifiedDate":"2024-01-28"},{"lineNumber":116,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 4) throw new DukeException(\"Invalid deadline format in file.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":117,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime byDate \u003d LocalDateTime.parse(parts[3], formatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":118,"author":{"gitId":"ChuaZiLong"},"content":" task \u003d new Deadline(description, byDate);","lastModifiedDate":"2024-01-28"},{"lineNumber":119,"author":{"gitId":"ChuaZiLong"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":120,"author":{"gitId":"ChuaZiLong"},"content":" case \"E\":","lastModifiedDate":"2024-01-28"},{"lineNumber":121,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 5) throw new DukeException(\"Invalid event format in file.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":122,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime from \u003d LocalDateTime.parse(parts[3], formatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":123,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime to \u003d LocalDateTime.parse(parts[4], formatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":124,"author":{"gitId":"ChuaZiLong"},"content":" task \u003d new Event(description, from, to);","lastModifiedDate":"2024-01-28"},{"lineNumber":125,"author":{"gitId":"ChuaZiLong"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":126,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":127,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":128,"author":{"gitId":"ChuaZiLong"},"content":" if (task !\u003d null) {","lastModifiedDate":"2024-01-28"},{"lineNumber":129,"author":{"gitId":"ChuaZiLong"},"content":" if (isDone) {","lastModifiedDate":"2024-01-28"},{"lineNumber":130,"author":{"gitId":"ChuaZiLong"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-28"},{"lineNumber":131,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":132,"author":{"gitId":"ChuaZiLong"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":133,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":134,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DukeException | DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":135,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Skipping invalid task: \" + line);","lastModifiedDate":"2024-01-28"},{"lineNumber":136,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":137,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":138,"author":{"gitId":"ChuaZiLong"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":139,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"File not found: \" + e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":140,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":141,"author":{"gitId":"ChuaZiLong"},"content":" return tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":142,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":143,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":144,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":145,"author":{"gitId":"ChuaZiLong"},"content":" public void save(TaskList tasks) {","lastModifiedDate":"2024-01-28"},{"lineNumber":146,"author":{"gitId":"ChuaZiLong"},"content":" try (PrintWriter writer \u003d new PrintWriter(new FileWriter(filePath))) {","lastModifiedDate":"2024-01-28"},{"lineNumber":147,"author":{"gitId":"ChuaZiLong"},"content":" for (int i \u003d 0; i \u003c tasks.getSize(); i++) {","lastModifiedDate":"2024-01-28"},{"lineNumber":148,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.getTask(i);","lastModifiedDate":"2024-01-28"},{"lineNumber":149,"author":{"gitId":"ChuaZiLong"},"content":" writer.println(taskToFileString(task));","lastModifiedDate":"2024-01-28"},{"lineNumber":150,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":151,"author":{"gitId":"ChuaZiLong"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":152,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"An error occurred while saving tasks to file: \" + e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":153,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":154,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":155,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":156,"author":{"gitId":"ChuaZiLong"},"content":" private String taskToFileString(Task task) {","lastModifiedDate":"2024-01-28"},{"lineNumber":157,"author":{"gitId":"ChuaZiLong"},"content":" String type \u003d task instanceof Todo ? \"T\" :","lastModifiedDate":"2024-01-28"},{"lineNumber":158,"author":{"gitId":"ChuaZiLong"},"content":" task instanceof Deadline ? \"D\" :","lastModifiedDate":"2024-01-28"},{"lineNumber":159,"author":{"gitId":"ChuaZiLong"},"content":" task instanceof Event ? \"E\" : \"\";","lastModifiedDate":"2024-01-28"},{"lineNumber":160,"author":{"gitId":"ChuaZiLong"},"content":" String status \u003d task.isDone ? \"1\" : \"0\";","lastModifiedDate":"2024-01-28"},{"lineNumber":161,"author":{"gitId":"ChuaZiLong"},"content":" String details \u003d task.getDescription();","lastModifiedDate":"2024-01-28"},{"lineNumber":162,"author":{"gitId":"ChuaZiLong"},"content":" String additionalInfo \u003d \"\";","lastModifiedDate":"2024-01-28"},{"lineNumber":163,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":164,"author":{"gitId":"ChuaZiLong"},"content":" if (task instanceof Deadline) {","lastModifiedDate":"2024-01-28"},{"lineNumber":165,"author":{"gitId":"ChuaZiLong"},"content":" Deadline deadline \u003d (Deadline) task;","lastModifiedDate":"2024-01-28"},{"lineNumber":166,"author":{"gitId":"ChuaZiLong"},"content":" additionalInfo \u003d \" | \" + deadline.getBy().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":167,"author":{"gitId":"ChuaZiLong"},"content":" } else if (task instanceof Event) {","lastModifiedDate":"2024-01-28"},{"lineNumber":168,"author":{"gitId":"ChuaZiLong"},"content":" Event event \u003d (Event) task;","lastModifiedDate":"2024-01-28"},{"lineNumber":169,"author":{"gitId":"ChuaZiLong"},"content":" additionalInfo \u003d \" | \" + event.getFrom().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\")) +","lastModifiedDate":"2024-01-28"},{"lineNumber":170,"author":{"gitId":"ChuaZiLong"},"content":" \" | \" + event.getTo().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":171,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":172,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":173,"author":{"gitId":"ChuaZiLong"},"content":" return type + \" | \" + status + \" | \" + details + additionalInfo;","lastModifiedDate":"2024-01-28"},{"lineNumber":174,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":175,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":176,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-28"},{"lineNumber":177,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":178,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":179,"author":{"gitId":"ChuaZiLong"},"content":"class Parser {","lastModifiedDate":"2024-01-28"},{"lineNumber":180,"author":{"gitId":"ChuaZiLong"},"content":" private static final DateTimeFormatter dateTimeFormatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":181,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":182,"author":{"gitId":"ChuaZiLong"},"content":" public static Command parse(String fullCommand) throws DukeException {","lastModifiedDate":"2024-01-28"},{"lineNumber":183,"author":{"gitId":"ChuaZiLong"},"content":" String[] commandParts \u003d fullCommand.split(\" \", 2);","lastModifiedDate":"2024-01-28"},{"lineNumber":184,"author":{"gitId":"ChuaZiLong"},"content":" String commandType \u003d commandParts[0];","lastModifiedDate":"2024-01-28"},{"lineNumber":185,"author":{"gitId":"ChuaZiLong"},"content":" String commandArgs \u003d commandParts.length \u003e 1 ? commandParts[1] : \"\";","lastModifiedDate":"2024-01-28"},{"lineNumber":186,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":187,"author":{"gitId":"ChuaZiLong"},"content":" switch (commandType) {","lastModifiedDate":"2024-01-28"},{"lineNumber":188,"author":{"gitId":"ChuaZiLong"},"content":" case \"todo\":","lastModifiedDate":"2024-01-28"},{"lineNumber":189,"author":{"gitId":"ChuaZiLong"},"content":" if (commandArgs.isEmpty()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":190,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"The description of a todo cannot be empty.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":191,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":192,"author":{"gitId":"ChuaZiLong"},"content":" return new AddTodoCommand(commandArgs);","lastModifiedDate":"2024-01-28"},{"lineNumber":193,"author":{"gitId":"ChuaZiLong"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-28"},{"lineNumber":194,"author":{"gitId":"ChuaZiLong"},"content":" return parseAddDeadlineCommand(commandArgs);","lastModifiedDate":"2024-01-28"},{"lineNumber":195,"author":{"gitId":"ChuaZiLong"},"content":" case \"event\":","lastModifiedDate":"2024-01-28"},{"lineNumber":196,"author":{"gitId":"ChuaZiLong"},"content":" return parseAddEventCommand(commandArgs);","lastModifiedDate":"2024-01-28"},{"lineNumber":197,"author":{"gitId":"ChuaZiLong"},"content":" case \"list\":","lastModifiedDate":"2024-01-28"},{"lineNumber":198,"author":{"gitId":"ChuaZiLong"},"content":" return new ListCommand();","lastModifiedDate":"2024-01-28"},{"lineNumber":199,"author":{"gitId":"ChuaZiLong"},"content":" case \"mark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":200,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":201,"author":{"gitId":"ChuaZiLong"},"content":" int index \u003d Integer.parseInt(commandArgs) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":202,"author":{"gitId":"ChuaZiLong"},"content":" return new MarkCommand(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":203,"author":{"gitId":"ChuaZiLong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":204,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":205,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":206,"author":{"gitId":"ChuaZiLong"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":207,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":208,"author":{"gitId":"ChuaZiLong"},"content":" int index \u003d Integer.parseInt(commandArgs) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":209,"author":{"gitId":"ChuaZiLong"},"content":" return new UnmarkCommand(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":210,"author":{"gitId":"ChuaZiLong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":211,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":212,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":213,"author":{"gitId":"ChuaZiLong"},"content":" case \"delete\":","lastModifiedDate":"2024-01-30"},{"lineNumber":214,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":215,"author":{"gitId":"ChuaZiLong"},"content":" int index \u003d Integer.parseInt(commandArgs) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":216,"author":{"gitId":"ChuaZiLong"},"content":" return new DeleteCommand(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":217,"author":{"gitId":"ChuaZiLong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":218,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":219,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":220,"author":{"gitId":"ChuaZiLong"},"content":" case \"bye\":","lastModifiedDate":"2024-01-30"},{"lineNumber":221,"author":{"gitId":"ChuaZiLong"},"content":" return new ExitCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":222,"author":{"gitId":"ChuaZiLong"},"content":" default:","lastModifiedDate":"2024-01-28"},{"lineNumber":223,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Unknown command\");","lastModifiedDate":"2024-01-28"},{"lineNumber":224,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":225,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":226,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":227,"author":{"gitId":"ChuaZiLong"},"content":" private static Command parseAddDeadlineCommand(String commandArgs) throws DukeException {","lastModifiedDate":"2024-01-28"},{"lineNumber":228,"author":{"gitId":"ChuaZiLong"},"content":" String[] parts \u003d commandArgs.split(\"/by\", 2);","lastModifiedDate":"2024-01-28"},{"lineNumber":229,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 2 || parts[0].trim().isEmpty() || parts[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":230,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid deadline command format.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":231,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":232,"author":{"gitId":"ChuaZiLong"},"content":" String description \u003d parts[0].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":233,"author":{"gitId":"ChuaZiLong"},"content":" String by \u003d parts[1].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":234,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":235,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime byDate \u003d LocalDateTime.parse(by, dateTimeFormatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":236,"author":{"gitId":"ChuaZiLong"},"content":" return new AddDeadlineCommand(description, byDate);","lastModifiedDate":"2024-01-28"},{"lineNumber":237,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":238,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid date format. Please use yyyy-MM-dd HHmm format.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":239,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":240,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":241,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":242,"author":{"gitId":"ChuaZiLong"},"content":" private static Command parseAddEventCommand(String commandArgs) throws DukeException {","lastModifiedDate":"2024-01-28"},{"lineNumber":243,"author":{"gitId":"ChuaZiLong"},"content":" String[] parts \u003d commandArgs.split(\"/at\", 2);","lastModifiedDate":"2024-01-28"},{"lineNumber":244,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 2 || parts[0].trim().isEmpty() || parts[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":245,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid event command format.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":246,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":247,"author":{"gitId":"ChuaZiLong"},"content":" String description \u003d parts[0].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":248,"author":{"gitId":"ChuaZiLong"},"content":" String at \u003d parts[1].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":249,"author":{"gitId":"ChuaZiLong"},"content":" String[] timeParts \u003d at.split(\"-\", 2);","lastModifiedDate":"2024-01-28"},{"lineNumber":250,"author":{"gitId":"ChuaZiLong"},"content":" if (timeParts.length \u003c 2 || timeParts[0].trim().isEmpty() || timeParts[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":251,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid time format for event command.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":252,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":253,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":254,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime startTime \u003d LocalDateTime.parse(timeParts[0].trim(), dateTimeFormatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":255,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime endTime \u003d LocalDateTime.parse(timeParts[1].trim(), dateTimeFormatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":256,"author":{"gitId":"ChuaZiLong"},"content":" return new AddEventCommand(description, startTime, endTime);","lastModifiedDate":"2024-01-28"},{"lineNumber":257,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":258,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid date format. Please use yyyy-MM-dd HHmm format.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":259,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":260,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":261,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-28"},{"lineNumber":262,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":263,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":264,"author":{"gitId":"ChuaZiLong"},"content":"class TaskList {","lastModifiedDate":"2024-01-28"},{"lineNumber":265,"author":{"gitId":"ChuaZiLong"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":266,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":267,"author":{"gitId":"ChuaZiLong"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-28"},{"lineNumber":268,"author":{"gitId":"ChuaZiLong"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":269,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":270,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":271,"author":{"gitId":"ChuaZiLong"},"content":" public TaskList() {","lastModifiedDate":"2024-01-28"},{"lineNumber":272,"author":{"gitId":"ChuaZiLong"},"content":" this(new ArrayList\u003c\u003e());","lastModifiedDate":"2024-01-28"},{"lineNumber":273,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":274,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":275,"author":{"gitId":"ChuaZiLong"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-28"},{"lineNumber":276,"author":{"gitId":"ChuaZiLong"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":277,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":278,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":279,"author":{"gitId":"ChuaZiLong"},"content":" public Task removeTask(int index) {","lastModifiedDate":"2024-01-28"},{"lineNumber":280,"author":{"gitId":"ChuaZiLong"},"content":" return tasks.remove(index);","lastModifiedDate":"2024-01-28"},{"lineNumber":281,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":282,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":283,"author":{"gitId":"ChuaZiLong"},"content":" public Task getTask(int index) {","lastModifiedDate":"2024-01-28"},{"lineNumber":284,"author":{"gitId":"ChuaZiLong"},"content":" return tasks.get(index);","lastModifiedDate":"2024-01-28"},{"lineNumber":285,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":286,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":287,"author":{"gitId":"ChuaZiLong"},"content":" public int getSize() {","lastModifiedDate":"2024-01-28"},{"lineNumber":288,"author":{"gitId":"ChuaZiLong"},"content":" return tasks.size();","lastModifiedDate":"2024-01-28"},{"lineNumber":289,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":290,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":291,"author":{"gitId":"ChuaZiLong"},"content":" // ... any other methods needed for task management ...","lastModifiedDate":"2024-01-28"},{"lineNumber":292,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-28"},{"lineNumber":293,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":294,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":295,"author":{"gitId":"ChuaZiLong"},"content":"enum TaskType {","lastModifiedDate":"2024-01-24"},{"lineNumber":296,"author":{"gitId":"ChuaZiLong"},"content":" TODO,","lastModifiedDate":"2024-01-24"},{"lineNumber":297,"author":{"gitId":"ChuaZiLong"},"content":" DEADLINE,","lastModifiedDate":"2024-01-24"},{"lineNumber":298,"author":{"gitId":"ChuaZiLong"},"content":" EVENT","lastModifiedDate":"2024-01-24"},{"lineNumber":299,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":300,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":301,"author":{"gitId":"ChuaZiLong"},"content":"class Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":302,"author":{"gitId":"ChuaZiLong"},"content":" protected String description;","lastModifiedDate":"2024-01-24"},{"lineNumber":303,"author":{"gitId":"ChuaZiLong"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-24"},{"lineNumber":304,"author":{"gitId":"ChuaZiLong"},"content":" protected TaskType taskType;","lastModifiedDate":"2024-01-24"},{"lineNumber":305,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":306,"author":{"gitId":"ChuaZiLong"},"content":" public Task(String description, TaskType taskType) {","lastModifiedDate":"2024-01-24"},{"lineNumber":307,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-24"},{"lineNumber":308,"author":{"gitId":"ChuaZiLong"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":309,"author":{"gitId":"ChuaZiLong"},"content":" this.taskType \u003d taskType;","lastModifiedDate":"2024-01-24"},{"lineNumber":310,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":311,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":312,"author":{"gitId":"ChuaZiLong"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-24"},{"lineNumber":313,"author":{"gitId":"ChuaZiLong"},"content":" return \"[\" + taskType + \"]\" + (isDone ? \"[X] \" : \"[ ] \");","lastModifiedDate":"2024-01-24"},{"lineNumber":314,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":315,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":316,"author":{"gitId":"ChuaZiLong"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-24"},{"lineNumber":317,"author":{"gitId":"ChuaZiLong"},"content":" return description;","lastModifiedDate":"2024-01-24"},{"lineNumber":318,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":319,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":320,"author":{"gitId":"ChuaZiLong"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-24"},{"lineNumber":321,"author":{"gitId":"ChuaZiLong"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":322,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":323,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":324,"author":{"gitId":"ChuaZiLong"},"content":" public void markAsNotDone() {","lastModifiedDate":"2024-01-24"},{"lineNumber":325,"author":{"gitId":"ChuaZiLong"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":326,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":327,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":328,"author":{"gitId":"ChuaZiLong"},"content":" public String toString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":329,"author":{"gitId":"ChuaZiLong"},"content":" return getStatusIcon() + getDescription();","lastModifiedDate":"2024-01-28"},{"lineNumber":330,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":331,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":332,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":333,"author":{"gitId":"ChuaZiLong"},"content":"class Todo extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":334,"author":{"gitId":"ChuaZiLong"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":335,"author":{"gitId":"ChuaZiLong"},"content":" super(description, TaskType.TODO);","lastModifiedDate":"2024-01-24"},{"lineNumber":336,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":337,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":338,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":339,"author":{"gitId":"ChuaZiLong"},"content":"class Deadline extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":340,"author":{"gitId":"ChuaZiLong"},"content":" protected LocalDateTime by;","lastModifiedDate":"2024-01-28"},{"lineNumber":341,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":342,"author":{"gitId":"ChuaZiLong"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2024-01-28"},{"lineNumber":343,"author":{"gitId":"ChuaZiLong"},"content":" super(description, TaskType.DEADLINE);","lastModifiedDate":"2024-01-24"},{"lineNumber":344,"author":{"gitId":"ChuaZiLong"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-24"},{"lineNumber":345,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":346,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":347,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":348,"author":{"gitId":"ChuaZiLong"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-24"},{"lineNumber":349,"author":{"gitId":"ChuaZiLong"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy, HH:mm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":350,"author":{"gitId":"ChuaZiLong"},"content":" return super.getDescription() + \" (by: \" + formatter.format(by) + \")\";","lastModifiedDate":"2024-01-28"},{"lineNumber":351,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":352,"author":{"gitId":"ChuaZiLong"},"content":" public LocalDateTime getBy() {","lastModifiedDate":"2024-01-28"},{"lineNumber":353,"author":{"gitId":"ChuaZiLong"},"content":" return by;","lastModifiedDate":"2024-01-28"},{"lineNumber":354,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":355,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":356,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":357,"author":{"gitId":"ChuaZiLong"},"content":"class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":358,"author":{"gitId":"ChuaZiLong"},"content":" protected LocalDateTime from;","lastModifiedDate":"2024-01-28"},{"lineNumber":359,"author":{"gitId":"ChuaZiLong"},"content":" protected LocalDateTime to;","lastModifiedDate":"2024-01-28"},{"lineNumber":360,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":361,"author":{"gitId":"ChuaZiLong"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2024-01-28"},{"lineNumber":362,"author":{"gitId":"ChuaZiLong"},"content":" super(description, TaskType.EVENT);","lastModifiedDate":"2024-01-24"},{"lineNumber":363,"author":{"gitId":"ChuaZiLong"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-24"},{"lineNumber":364,"author":{"gitId":"ChuaZiLong"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-24"},{"lineNumber":365,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":366,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":367,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":368,"author":{"gitId":"ChuaZiLong"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-24"},{"lineNumber":369,"author":{"gitId":"ChuaZiLong"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy, HH:mm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":370,"author":{"gitId":"ChuaZiLong"},"content":" return super.getDescription() + \" (from: \" + formatter.format(from) + \" to: \" + formatter.format(to) + \")\";","lastModifiedDate":"2024-01-28"},{"lineNumber":371,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":372,"author":{"gitId":"ChuaZiLong"},"content":" public LocalDateTime getFrom() {","lastModifiedDate":"2024-01-28"},{"lineNumber":373,"author":{"gitId":"ChuaZiLong"},"content":" return from;","lastModifiedDate":"2024-01-28"},{"lineNumber":374,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":375,"author":{"gitId":"ChuaZiLong"},"content":" public LocalDateTime getTo() {","lastModifiedDate":"2024-01-28"},{"lineNumber":376,"author":{"gitId":"ChuaZiLong"},"content":" return to;","lastModifiedDate":"2024-01-28"},{"lineNumber":377,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":378,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":379,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":380,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":381,"author":{"gitId":"ChuaZiLong"},"content":" private Storage storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":382,"author":{"gitId":"ChuaZiLong"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":383,"author":{"gitId":"ChuaZiLong"},"content":" private Ui ui;","lastModifiedDate":"2024-01-28"},{"lineNumber":384,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":385,"author":{"gitId":"ChuaZiLong"},"content":" public Duke(String filePath) {","lastModifiedDate":"2024-01-28"},{"lineNumber":386,"author":{"gitId":"ChuaZiLong"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-01-28"},{"lineNumber":387,"author":{"gitId":"ChuaZiLong"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-28"},{"lineNumber":388,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":389,"author":{"gitId":"ChuaZiLong"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2024-01-28"},{"lineNumber":390,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":391,"author":{"gitId":"ChuaZiLong"},"content":" ui.showLoadingError();","lastModifiedDate":"2024-01-28"},{"lineNumber":392,"author":{"gitId":"ChuaZiLong"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2024-01-28"},{"lineNumber":393,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":394,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":395,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":396,"author":{"gitId":"ChuaZiLong"},"content":" public void run() {","lastModifiedDate":"2024-01-28"},{"lineNumber":397,"author":{"gitId":"ChuaZiLong"},"content":" ui.showWelcome();","lastModifiedDate":"2024-01-28"},{"lineNumber":398,"author":{"gitId":"ChuaZiLong"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-01-28"},{"lineNumber":399,"author":{"gitId":"ChuaZiLong"},"content":" while (!isExit) {","lastModifiedDate":"2024-01-28"},{"lineNumber":400,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":401,"author":{"gitId":"ChuaZiLong"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2024-01-28"},{"lineNumber":402,"author":{"gitId":"ChuaZiLong"},"content":" Command command \u003d Parser.parse(fullCommand);","lastModifiedDate":"2024-01-30"},{"lineNumber":403,"author":{"gitId":"ChuaZiLong"},"content":" command.execute(tasks, ui, storage);","lastModifiedDate":"2024-01-30"},{"lineNumber":404,"author":{"gitId":"ChuaZiLong"},"content":" isExit \u003d command.isExit(); // Check if the command signals to exit","lastModifiedDate":"2024-01-30"},{"lineNumber":405,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":406,"author":{"gitId":"ChuaZiLong"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":407,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":408,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":409,"author":{"gitId":"ChuaZiLong"},"content":" ui.closeScanner();","lastModifiedDate":"2024-01-28"},{"lineNumber":410,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":411,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":412,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-28"},{"lineNumber":413,"author":{"gitId":"ChuaZiLong"},"content":" new Duke(\"./data/duke.txt/duke.txt\").run();","lastModifiedDate":"2024-01-28"},{"lineNumber":414,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":415,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":416,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":417,"author":{"gitId":"ChuaZiLong"},"content":"abstract class Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":418,"author":{"gitId":"ChuaZiLong"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException;","lastModifiedDate":"2024-01-28"},{"lineNumber":419,"author":{"gitId":"ChuaZiLong"},"content":" public abstract boolean isExit();","lastModifiedDate":"2024-01-28"},{"lineNumber":420,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":421,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":422,"author":{"gitId":"ChuaZiLong"},"content":"class MarkCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":423,"author":{"gitId":"ChuaZiLong"},"content":" private int index;","lastModifiedDate":"2024-01-30"},{"lineNumber":424,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":425,"author":{"gitId":"ChuaZiLong"},"content":" public MarkCommand(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":426,"author":{"gitId":"ChuaZiLong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-30"},{"lineNumber":427,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":428,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":429,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":430,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":431,"author":{"gitId":"ChuaZiLong"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.getSize()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":432,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":433,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":434,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.getTask(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":435,"author":{"gitId":"ChuaZiLong"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":436,"author":{"gitId":"ChuaZiLong"},"content":" ui.showMarkedTask(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":437,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":438,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":439,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":440,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":441,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":442,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":443,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":444,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":445,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":446,"author":{"gitId":"ChuaZiLong"},"content":"class UnmarkCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":447,"author":{"gitId":"ChuaZiLong"},"content":" private int index;","lastModifiedDate":"2024-01-30"},{"lineNumber":448,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":449,"author":{"gitId":"ChuaZiLong"},"content":" public UnmarkCommand(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":450,"author":{"gitId":"ChuaZiLong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-30"},{"lineNumber":451,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":452,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":453,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":454,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":455,"author":{"gitId":"ChuaZiLong"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.getSize()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":456,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":457,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":458,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.getTask(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":459,"author":{"gitId":"ChuaZiLong"},"content":" task.markAsNotDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":460,"author":{"gitId":"ChuaZiLong"},"content":" ui.showUnmarkedTask(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":461,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":462,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":463,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":464,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":465,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":466,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":467,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":468,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":469,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":470,"author":{"gitId":"ChuaZiLong"},"content":"class DeleteCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":471,"author":{"gitId":"ChuaZiLong"},"content":" private int index;","lastModifiedDate":"2024-01-30"},{"lineNumber":472,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":473,"author":{"gitId":"ChuaZiLong"},"content":" public DeleteCommand(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":474,"author":{"gitId":"ChuaZiLong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-30"},{"lineNumber":475,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":476,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":477,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":478,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":479,"author":{"gitId":"ChuaZiLong"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.getSize()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":480,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":481,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":482,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.removeTask(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":483,"author":{"gitId":"ChuaZiLong"},"content":" ui.showDeletedTask(task, tasks.getSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":484,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":485,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":486,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":487,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":488,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":489,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":490,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":491,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":492,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":493,"author":{"gitId":"ChuaZiLong"},"content":"class ExitCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":494,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":495,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":496,"author":{"gitId":"ChuaZiLong"},"content":" ui.showGoodbye();","lastModifiedDate":"2024-01-30"},{"lineNumber":497,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":498,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":499,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":500,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":501,"author":{"gitId":"ChuaZiLong"},"content":" return true; // Indicate that the application should exit","lastModifiedDate":"2024-01-30"},{"lineNumber":502,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":503,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":504,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":505,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":506,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":507,"author":{"gitId":"ChuaZiLong"},"content":"class ListCommand extends Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":508,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":509,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-28"},{"lineNumber":510,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskList(tasks);","lastModifiedDate":"2024-01-28"},{"lineNumber":511,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":512,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":513,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":514,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":515,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":516,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":517,"author":{"gitId":"ChuaZiLong"},"content":"class AddTodoCommand extends Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":518,"author":{"gitId":"ChuaZiLong"},"content":" private String description;","lastModifiedDate":"2024-01-28"},{"lineNumber":519,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":520,"author":{"gitId":"ChuaZiLong"},"content":" public AddTodoCommand(String description) {","lastModifiedDate":"2024-01-28"},{"lineNumber":521,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-28"},{"lineNumber":522,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":523,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":524,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":525,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-28"},{"lineNumber":526,"author":{"gitId":"ChuaZiLong"},"content":" Todo newTodo \u003d new Todo(description);","lastModifiedDate":"2024-01-28"},{"lineNumber":527,"author":{"gitId":"ChuaZiLong"},"content":" tasks.addTask(newTodo);","lastModifiedDate":"2024-01-28"},{"lineNumber":528,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskAdded(newTodo, tasks.getSize());","lastModifiedDate":"2024-01-28"},{"lineNumber":529,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-28"},{"lineNumber":530,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":531,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":532,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":533,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":534,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":535,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":536,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-28"},{"lineNumber":537,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":538,"author":{"gitId":"ChuaZiLong"},"content":"class AddDeadlineCommand extends Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":539,"author":{"gitId":"ChuaZiLong"},"content":" private String description;","lastModifiedDate":"2024-01-28"},{"lineNumber":540,"author":{"gitId":"ChuaZiLong"},"content":" private LocalDateTime by;","lastModifiedDate":"2024-01-28"},{"lineNumber":541,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":542,"author":{"gitId":"ChuaZiLong"},"content":" public AddDeadlineCommand(String description, LocalDateTime by) {","lastModifiedDate":"2024-01-28"},{"lineNumber":543,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-28"},{"lineNumber":544,"author":{"gitId":"ChuaZiLong"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-28"},{"lineNumber":545,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":546,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":547,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":548,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-28"},{"lineNumber":549,"author":{"gitId":"ChuaZiLong"},"content":" Deadline newDeadline \u003d new Deadline(description, by);","lastModifiedDate":"2024-01-28"},{"lineNumber":550,"author":{"gitId":"ChuaZiLong"},"content":" tasks.addTask(newDeadline);","lastModifiedDate":"2024-01-28"},{"lineNumber":551,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskAdded(newDeadline, tasks.getSize());","lastModifiedDate":"2024-01-28"},{"lineNumber":552,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-28"},{"lineNumber":553,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":554,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":555,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":556,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":557,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":558,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":559,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":560,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":561,"author":{"gitId":"ChuaZiLong"},"content":"class AddEventCommand extends Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":562,"author":{"gitId":"ChuaZiLong"},"content":" private String description;","lastModifiedDate":"2024-01-28"},{"lineNumber":563,"author":{"gitId":"ChuaZiLong"},"content":" private LocalDateTime start;","lastModifiedDate":"2024-01-28"},{"lineNumber":564,"author":{"gitId":"ChuaZiLong"},"content":" private LocalDateTime end;","lastModifiedDate":"2024-01-28"},{"lineNumber":565,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":566,"author":{"gitId":"ChuaZiLong"},"content":" public AddEventCommand(String description, LocalDateTime start, LocalDateTime end) {","lastModifiedDate":"2024-01-28"},{"lineNumber":567,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-28"},{"lineNumber":568,"author":{"gitId":"ChuaZiLong"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-28"},{"lineNumber":569,"author":{"gitId":"ChuaZiLong"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-28"},{"lineNumber":570,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":571,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":572,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":573,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-28"},{"lineNumber":574,"author":{"gitId":"ChuaZiLong"},"content":" Event newEvent \u003d new Event(description, start, end);","lastModifiedDate":"2024-01-28"},{"lineNumber":575,"author":{"gitId":"ChuaZiLong"},"content":" tasks.addTask(newEvent);","lastModifiedDate":"2024-01-28"},{"lineNumber":576,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskAdded(newEvent, tasks.getSize());","lastModifiedDate":"2024-01-28"},{"lineNumber":577,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-28"},{"lineNumber":578,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":579,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":580,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":581,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":582,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":583,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":584,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"-":5,"ChuaZiLong":579}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChuaZiLong"},"content":"package duke;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"ChuaZiLong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"ChuaZiLong"},"content":"import java.util.Date;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"ChuaZiLong"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.PrintWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"ChuaZiLong"},"content":"public class Duke {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"ChuaZiLong"},"content":" private Storage storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"ChuaZiLong"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"ChuaZiLong"},"content":" private Ui ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"ChuaZiLong"},"content":" public Duke(String filePath) {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"ChuaZiLong"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"ChuaZiLong"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"ChuaZiLong"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"ChuaZiLong"},"content":" ui.showLoadingError();","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"ChuaZiLong"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"ChuaZiLong"},"content":" public void run() {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"ChuaZiLong"},"content":" ui.showWelcome();","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"ChuaZiLong"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"ChuaZiLong"},"content":" while (!isExit) {","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"ChuaZiLong"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"ChuaZiLong"},"content":" Command command \u003d Parser.parse(fullCommand);","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"ChuaZiLong"},"content":" command.execute(tasks, ui, storage);","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"ChuaZiLong"},"content":" isExit \u003d command.isExit(); // Check if the command signals to exit","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"ChuaZiLong"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"ChuaZiLong"},"content":" ui.closeScanner();","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"ChuaZiLong"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"ChuaZiLong"},"content":" new Duke(\"./data/duke.txt/duke.txt\").run();","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"ChuaZiLong"},"content":"class DukeException extends Exception {","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"ChuaZiLong"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"ChuaZiLong"},"content":" super(message);","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"ChuaZiLong"},"content":"class Ui {","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"ChuaZiLong"},"content":" private Scanner scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"ChuaZiLong"},"content":" public Ui() {","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"ChuaZiLong"},"content":" scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"ChuaZiLong"},"content":" public void showWelcome() {","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Hello! I\u0027m SCZL\");","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"ChuaZiLong"},"content":" public void showGoodbye() {","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"ChuaZiLong"},"content":" public void showError(String message) {","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(message);","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"ChuaZiLong"},"content":" public void showTaskAdded(Task task, int taskCount) {","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Now you have \" + taskCount + \" tasks in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"ChuaZiLong"},"content":" public void showTaskList(TaskList tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"ChuaZiLong"},"content":" for (int i \u003d 0; i \u003c tasks.getSize(); i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println((i + 1) + \".\" + tasks.getTask(i));","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"ChuaZiLong"},"content":" public String readCommand() {","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"ChuaZiLong"},"content":" return scanner.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"ChuaZiLong"},"content":" public void showLoadingError() {","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Error loading file.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"ChuaZiLong"},"content":" public void closeScanner() {","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"ChuaZiLong"},"content":" scanner.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"ChuaZiLong"},"content":" public void showMarkedTask(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"ChuaZiLong"},"content":" public void showUnmarkedTask(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"ChuaZiLong"},"content":" public void showDeletedTask(Task task, int taskCount) {","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Now you have \" + taskCount + \" tasks in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":123,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":124,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"ChuaZiLong"},"content":"class Storage {","lastModifiedDate":"2024-01-30"},{"lineNumber":127,"author":{"gitId":"ChuaZiLong"},"content":" private String filePath;","lastModifiedDate":"2024-01-30"},{"lineNumber":128,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"ChuaZiLong"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"ChuaZiLong"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-30"},{"lineNumber":131,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":133,"author":{"gitId":"ChuaZiLong"},"content":" public ArrayList\u003cTask\u003e load() throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":134,"author":{"gitId":"ChuaZiLong"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":135,"author":{"gitId":"ChuaZiLong"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":136,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"ChuaZiLong"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"File not found\");","lastModifiedDate":"2024-01-30"},{"lineNumber":139,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":141,"author":{"gitId":"ChuaZiLong"},"content":" try (Scanner fileScanner \u003d new Scanner(file)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"ChuaZiLong"},"content":" while (fileScanner.hasNext()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":143,"author":{"gitId":"ChuaZiLong"},"content":" String line \u003d fileScanner.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":144,"author":{"gitId":"ChuaZiLong"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-01-30"},{"lineNumber":145,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":146,"author":{"gitId":"ChuaZiLong"},"content":" String type \u003d parts[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":147,"author":{"gitId":"ChuaZiLong"},"content":" boolean isDone \u003d parts[1].equals(\"1\");","lastModifiedDate":"2024-01-30"},{"lineNumber":148,"author":{"gitId":"ChuaZiLong"},"content":" String description \u003d parts[2];","lastModifiedDate":"2024-01-30"},{"lineNumber":149,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d null;","lastModifiedDate":"2024-01-30"},{"lineNumber":150,"author":{"gitId":"ChuaZiLong"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":151,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":152,"author":{"gitId":"ChuaZiLong"},"content":" switch (type) {","lastModifiedDate":"2024-01-30"},{"lineNumber":153,"author":{"gitId":"ChuaZiLong"},"content":" case \"T\":","lastModifiedDate":"2024-01-30"},{"lineNumber":154,"author":{"gitId":"ChuaZiLong"},"content":" task \u003d new Todo(description);","lastModifiedDate":"2024-01-30"},{"lineNumber":155,"author":{"gitId":"ChuaZiLong"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":156,"author":{"gitId":"ChuaZiLong"},"content":" case \"D\":","lastModifiedDate":"2024-01-30"},{"lineNumber":157,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 4) throw new DukeException(\"Invalid deadline format in file.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":158,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime byDate \u003d LocalDateTime.parse(parts[3], formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":159,"author":{"gitId":"ChuaZiLong"},"content":" task \u003d new Deadline(description, byDate);","lastModifiedDate":"2024-01-30"},{"lineNumber":160,"author":{"gitId":"ChuaZiLong"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":161,"author":{"gitId":"ChuaZiLong"},"content":" case \"E\":","lastModifiedDate":"2024-01-30"},{"lineNumber":162,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 5) throw new DukeException(\"Invalid event format in file.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":163,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime from \u003d LocalDateTime.parse(parts[3], formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":164,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime to \u003d LocalDateTime.parse(parts[4], formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":165,"author":{"gitId":"ChuaZiLong"},"content":" task \u003d new Event(description, from, to);","lastModifiedDate":"2024-01-30"},{"lineNumber":166,"author":{"gitId":"ChuaZiLong"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":167,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":168,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":169,"author":{"gitId":"ChuaZiLong"},"content":" if (task !\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":170,"author":{"gitId":"ChuaZiLong"},"content":" if (isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":171,"author":{"gitId":"ChuaZiLong"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":172,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":173,"author":{"gitId":"ChuaZiLong"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":174,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":175,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DukeException | DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":176,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Skipping invalid task: \" + line);","lastModifiedDate":"2024-01-30"},{"lineNumber":177,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":178,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":179,"author":{"gitId":"ChuaZiLong"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":180,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"File not found: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":181,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":182,"author":{"gitId":"ChuaZiLong"},"content":" return tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":183,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":184,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":185,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":186,"author":{"gitId":"ChuaZiLong"},"content":" public void save(TaskList tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":187,"author":{"gitId":"ChuaZiLong"},"content":" try (PrintWriter writer \u003d new PrintWriter(new FileWriter(filePath))) {","lastModifiedDate":"2024-01-30"},{"lineNumber":188,"author":{"gitId":"ChuaZiLong"},"content":" for (int i \u003d 0; i \u003c tasks.getSize(); i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":189,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.getTask(i);","lastModifiedDate":"2024-01-30"},{"lineNumber":190,"author":{"gitId":"ChuaZiLong"},"content":" writer.println(taskToFileString(task));","lastModifiedDate":"2024-01-30"},{"lineNumber":191,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":192,"author":{"gitId":"ChuaZiLong"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":193,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"An error occurred while saving tasks to file: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":194,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":195,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":196,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":197,"author":{"gitId":"ChuaZiLong"},"content":" private String taskToFileString(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":198,"author":{"gitId":"ChuaZiLong"},"content":" String type \u003d task instanceof Todo ? \"T\" :","lastModifiedDate":"2024-01-30"},{"lineNumber":199,"author":{"gitId":"ChuaZiLong"},"content":" task instanceof Deadline ? \"D\" :","lastModifiedDate":"2024-01-30"},{"lineNumber":200,"author":{"gitId":"ChuaZiLong"},"content":" task instanceof Event ? \"E\" : \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":201,"author":{"gitId":"ChuaZiLong"},"content":" String status \u003d task.isDone ? \"1\" : \"0\";","lastModifiedDate":"2024-01-30"},{"lineNumber":202,"author":{"gitId":"ChuaZiLong"},"content":" String details \u003d task.getDescription();","lastModifiedDate":"2024-01-30"},{"lineNumber":203,"author":{"gitId":"ChuaZiLong"},"content":" String additionalInfo \u003d \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":204,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":205,"author":{"gitId":"ChuaZiLong"},"content":" if (task instanceof Deadline) {","lastModifiedDate":"2024-01-30"},{"lineNumber":206,"author":{"gitId":"ChuaZiLong"},"content":" Deadline deadline \u003d (Deadline) task;","lastModifiedDate":"2024-01-30"},{"lineNumber":207,"author":{"gitId":"ChuaZiLong"},"content":" additionalInfo \u003d \" | \" + deadline.getBy().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":208,"author":{"gitId":"ChuaZiLong"},"content":" } else if (task instanceof Event) {","lastModifiedDate":"2024-01-30"},{"lineNumber":209,"author":{"gitId":"ChuaZiLong"},"content":" Event event \u003d (Event) task;","lastModifiedDate":"2024-01-30"},{"lineNumber":210,"author":{"gitId":"ChuaZiLong"},"content":" additionalInfo \u003d \" | \" + event.getFrom().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\")) +","lastModifiedDate":"2024-01-30"},{"lineNumber":211,"author":{"gitId":"ChuaZiLong"},"content":" \" | \" + event.getTo().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":212,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":213,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":214,"author":{"gitId":"ChuaZiLong"},"content":" return type + \" | \" + status + \" | \" + details + additionalInfo;","lastModifiedDate":"2024-01-30"},{"lineNumber":215,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":216,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":217,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":218,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":219,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":220,"author":{"gitId":"ChuaZiLong"},"content":"class Parser {","lastModifiedDate":"2024-01-30"},{"lineNumber":221,"author":{"gitId":"ChuaZiLong"},"content":" private static final DateTimeFormatter dateTimeFormatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":222,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":223,"author":{"gitId":"ChuaZiLong"},"content":" public static Command parse(String fullCommand) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":224,"author":{"gitId":"ChuaZiLong"},"content":" String[] commandParts \u003d fullCommand.split(\" \", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":225,"author":{"gitId":"ChuaZiLong"},"content":" String commandType \u003d commandParts[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":226,"author":{"gitId":"ChuaZiLong"},"content":" String commandArgs \u003d commandParts.length \u003e 1 ? commandParts[1] : \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":227,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":228,"author":{"gitId":"ChuaZiLong"},"content":" switch (commandType) {","lastModifiedDate":"2024-01-30"},{"lineNumber":229,"author":{"gitId":"ChuaZiLong"},"content":" case \"todo\":","lastModifiedDate":"2024-01-30"},{"lineNumber":230,"author":{"gitId":"ChuaZiLong"},"content":" if (commandArgs.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":231,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"The description of a todo cannot be empty.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":232,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":233,"author":{"gitId":"ChuaZiLong"},"content":" return new AddTodoCommand(commandArgs);","lastModifiedDate":"2024-01-30"},{"lineNumber":234,"author":{"gitId":"ChuaZiLong"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-30"},{"lineNumber":235,"author":{"gitId":"ChuaZiLong"},"content":" return parseAddDeadlineCommand(commandArgs);","lastModifiedDate":"2024-01-30"},{"lineNumber":236,"author":{"gitId":"ChuaZiLong"},"content":" case \"event\":","lastModifiedDate":"2024-01-30"},{"lineNumber":237,"author":{"gitId":"ChuaZiLong"},"content":" return parseAddEventCommand(commandArgs);","lastModifiedDate":"2024-01-30"},{"lineNumber":238,"author":{"gitId":"ChuaZiLong"},"content":" case \"list\":","lastModifiedDate":"2024-01-30"},{"lineNumber":239,"author":{"gitId":"ChuaZiLong"},"content":" return new ListCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":240,"author":{"gitId":"ChuaZiLong"},"content":" case \"mark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":241,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":242,"author":{"gitId":"ChuaZiLong"},"content":" int index \u003d Integer.parseInt(commandArgs) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":243,"author":{"gitId":"ChuaZiLong"},"content":" return new MarkCommand(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":244,"author":{"gitId":"ChuaZiLong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":245,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":246,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":247,"author":{"gitId":"ChuaZiLong"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":248,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":249,"author":{"gitId":"ChuaZiLong"},"content":" int index \u003d Integer.parseInt(commandArgs) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":250,"author":{"gitId":"ChuaZiLong"},"content":" return new UnmarkCommand(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":251,"author":{"gitId":"ChuaZiLong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":252,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":253,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":254,"author":{"gitId":"ChuaZiLong"},"content":" case \"delete\":","lastModifiedDate":"2024-01-30"},{"lineNumber":255,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":256,"author":{"gitId":"ChuaZiLong"},"content":" int index \u003d Integer.parseInt(commandArgs) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":257,"author":{"gitId":"ChuaZiLong"},"content":" return new DeleteCommand(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":258,"author":{"gitId":"ChuaZiLong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":259,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":260,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":261,"author":{"gitId":"ChuaZiLong"},"content":" case \"bye\":","lastModifiedDate":"2024-01-30"},{"lineNumber":262,"author":{"gitId":"ChuaZiLong"},"content":" return new ExitCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":263,"author":{"gitId":"ChuaZiLong"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":264,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Unknown command\");","lastModifiedDate":"2024-01-30"},{"lineNumber":265,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":266,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":267,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":268,"author":{"gitId":"ChuaZiLong"},"content":" private static Command parseAddDeadlineCommand(String commandArgs) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":269,"author":{"gitId":"ChuaZiLong"},"content":" String[] parts \u003d commandArgs.split(\"/by\", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":270,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 2 || parts[0].trim().isEmpty() || parts[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":271,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid deadline command format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":272,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":273,"author":{"gitId":"ChuaZiLong"},"content":" String description \u003d parts[0].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":274,"author":{"gitId":"ChuaZiLong"},"content":" String by \u003d parts[1].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":275,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":276,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime byDate \u003d LocalDateTime.parse(by, dateTimeFormatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":277,"author":{"gitId":"ChuaZiLong"},"content":" return new AddDeadlineCommand(description, byDate);","lastModifiedDate":"2024-01-30"},{"lineNumber":278,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":279,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid date format. Please use yyyy-MM-dd HHmm format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":280,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":281,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":282,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":283,"author":{"gitId":"ChuaZiLong"},"content":" private static Command parseAddEventCommand(String commandArgs) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":284,"author":{"gitId":"ChuaZiLong"},"content":" String[] parts \u003d commandArgs.split(\"/at\", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":285,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 2 || parts[0].trim().isEmpty() || parts[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":286,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid event command format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":287,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":288,"author":{"gitId":"ChuaZiLong"},"content":" String description \u003d parts[0].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":289,"author":{"gitId":"ChuaZiLong"},"content":" String at \u003d parts[1].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":290,"author":{"gitId":"ChuaZiLong"},"content":" String[] timeParts \u003d at.split(\"-\", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":291,"author":{"gitId":"ChuaZiLong"},"content":" if (timeParts.length \u003c 2 || timeParts[0].trim().isEmpty() || timeParts[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":292,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid time format for event command.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":293,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":294,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":295,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime startTime \u003d LocalDateTime.parse(timeParts[0].trim(), dateTimeFormatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":296,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime endTime \u003d LocalDateTime.parse(timeParts[1].trim(), dateTimeFormatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":297,"author":{"gitId":"ChuaZiLong"},"content":" return new AddEventCommand(description, startTime, endTime);","lastModifiedDate":"2024-01-30"},{"lineNumber":298,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":299,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid date format. Please use yyyy-MM-dd HHmm format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":300,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":301,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":302,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":303,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":304,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":305,"author":{"gitId":"ChuaZiLong"},"content":"class TaskList {","lastModifiedDate":"2024-01-30"},{"lineNumber":306,"author":{"gitId":"ChuaZiLong"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":307,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":308,"author":{"gitId":"ChuaZiLong"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":309,"author":{"gitId":"ChuaZiLong"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":310,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":311,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":312,"author":{"gitId":"ChuaZiLong"},"content":" public TaskList() {","lastModifiedDate":"2024-01-30"},{"lineNumber":313,"author":{"gitId":"ChuaZiLong"},"content":" this(new ArrayList\u003c\u003e());","lastModifiedDate":"2024-01-30"},{"lineNumber":314,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":315,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":316,"author":{"gitId":"ChuaZiLong"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":317,"author":{"gitId":"ChuaZiLong"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":318,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":319,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":320,"author":{"gitId":"ChuaZiLong"},"content":" public Task removeTask(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":321,"author":{"gitId":"ChuaZiLong"},"content":" return tasks.remove(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":322,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":323,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":324,"author":{"gitId":"ChuaZiLong"},"content":" public Task getTask(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":325,"author":{"gitId":"ChuaZiLong"},"content":" return tasks.get(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":326,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":327,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":328,"author":{"gitId":"ChuaZiLong"},"content":" public int getSize() {","lastModifiedDate":"2024-01-30"},{"lineNumber":329,"author":{"gitId":"ChuaZiLong"},"content":" return tasks.size();","lastModifiedDate":"2024-01-30"},{"lineNumber":330,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":331,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":332,"author":{"gitId":"ChuaZiLong"},"content":" // ... any other methods needed for task management ...","lastModifiedDate":"2024-01-30"},{"lineNumber":333,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":334,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":335,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":336,"author":{"gitId":"ChuaZiLong"},"content":"enum TaskType {","lastModifiedDate":"2024-01-30"},{"lineNumber":337,"author":{"gitId":"ChuaZiLong"},"content":" TODO,","lastModifiedDate":"2024-01-30"},{"lineNumber":338,"author":{"gitId":"ChuaZiLong"},"content":" DEADLINE,","lastModifiedDate":"2024-01-30"},{"lineNumber":339,"author":{"gitId":"ChuaZiLong"},"content":" EVENT","lastModifiedDate":"2024-01-30"},{"lineNumber":340,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":341,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":342,"author":{"gitId":"ChuaZiLong"},"content":"class Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":343,"author":{"gitId":"ChuaZiLong"},"content":" protected String description;","lastModifiedDate":"2024-01-30"},{"lineNumber":344,"author":{"gitId":"ChuaZiLong"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":345,"author":{"gitId":"ChuaZiLong"},"content":" protected TaskType taskType;","lastModifiedDate":"2024-01-30"},{"lineNumber":346,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":347,"author":{"gitId":"ChuaZiLong"},"content":" public Task(String description, TaskType taskType) {","lastModifiedDate":"2024-01-30"},{"lineNumber":348,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":349,"author":{"gitId":"ChuaZiLong"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":350,"author":{"gitId":"ChuaZiLong"},"content":" this.taskType \u003d taskType;","lastModifiedDate":"2024-01-30"},{"lineNumber":351,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":352,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":353,"author":{"gitId":"ChuaZiLong"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-30"},{"lineNumber":354,"author":{"gitId":"ChuaZiLong"},"content":" return \"[\" + taskType + \"]\" + (isDone ? \"[X] \" : \"[ ] \");","lastModifiedDate":"2024-01-30"},{"lineNumber":355,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":356,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":357,"author":{"gitId":"ChuaZiLong"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-30"},{"lineNumber":358,"author":{"gitId":"ChuaZiLong"},"content":" return description;","lastModifiedDate":"2024-01-30"},{"lineNumber":359,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":360,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":361,"author":{"gitId":"ChuaZiLong"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-30"},{"lineNumber":362,"author":{"gitId":"ChuaZiLong"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-30"},{"lineNumber":363,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":364,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":365,"author":{"gitId":"ChuaZiLong"},"content":" public void markAsNotDone() {","lastModifiedDate":"2024-01-30"},{"lineNumber":366,"author":{"gitId":"ChuaZiLong"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":367,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":368,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":369,"author":{"gitId":"ChuaZiLong"},"content":" public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":370,"author":{"gitId":"ChuaZiLong"},"content":" return getStatusIcon() + getDescription();","lastModifiedDate":"2024-01-30"},{"lineNumber":371,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":372,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":373,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":374,"author":{"gitId":"ChuaZiLong"},"content":"class Todo extends Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":375,"author":{"gitId":"ChuaZiLong"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-30"},{"lineNumber":376,"author":{"gitId":"ChuaZiLong"},"content":" super(description, TaskType.TODO);","lastModifiedDate":"2024-01-30"},{"lineNumber":377,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":378,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":379,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":380,"author":{"gitId":"ChuaZiLong"},"content":"class Deadline extends Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":381,"author":{"gitId":"ChuaZiLong"},"content":" protected LocalDateTime by;","lastModifiedDate":"2024-01-30"},{"lineNumber":382,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":383,"author":{"gitId":"ChuaZiLong"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2024-01-30"},{"lineNumber":384,"author":{"gitId":"ChuaZiLong"},"content":" super(description, TaskType.DEADLINE);","lastModifiedDate":"2024-01-30"},{"lineNumber":385,"author":{"gitId":"ChuaZiLong"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-30"},{"lineNumber":386,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":387,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":388,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":389,"author":{"gitId":"ChuaZiLong"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-30"},{"lineNumber":390,"author":{"gitId":"ChuaZiLong"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy, HH:mm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":391,"author":{"gitId":"ChuaZiLong"},"content":" return super.getDescription() + \" (by: \" + formatter.format(by) + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":392,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":393,"author":{"gitId":"ChuaZiLong"},"content":" public LocalDateTime getBy() {","lastModifiedDate":"2024-01-30"},{"lineNumber":394,"author":{"gitId":"ChuaZiLong"},"content":" return by;","lastModifiedDate":"2024-01-30"},{"lineNumber":395,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":396,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":397,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":398,"author":{"gitId":"ChuaZiLong"},"content":"class Event extends Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":399,"author":{"gitId":"ChuaZiLong"},"content":" protected LocalDateTime from;","lastModifiedDate":"2024-01-30"},{"lineNumber":400,"author":{"gitId":"ChuaZiLong"},"content":" protected LocalDateTime to;","lastModifiedDate":"2024-01-30"},{"lineNumber":401,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":402,"author":{"gitId":"ChuaZiLong"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2024-01-30"},{"lineNumber":403,"author":{"gitId":"ChuaZiLong"},"content":" super(description, TaskType.EVENT);","lastModifiedDate":"2024-01-30"},{"lineNumber":404,"author":{"gitId":"ChuaZiLong"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-30"},{"lineNumber":405,"author":{"gitId":"ChuaZiLong"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-30"},{"lineNumber":406,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":407,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":408,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":409,"author":{"gitId":"ChuaZiLong"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-30"},{"lineNumber":410,"author":{"gitId":"ChuaZiLong"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy, HH:mm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":411,"author":{"gitId":"ChuaZiLong"},"content":" return super.getDescription() + \" (from: \" + formatter.format(from) + \" to: \" + formatter.format(to) + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":412,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":413,"author":{"gitId":"ChuaZiLong"},"content":" public LocalDateTime getFrom() {","lastModifiedDate":"2024-01-30"},{"lineNumber":414,"author":{"gitId":"ChuaZiLong"},"content":" return from;","lastModifiedDate":"2024-01-30"},{"lineNumber":415,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":416,"author":{"gitId":"ChuaZiLong"},"content":" public LocalDateTime getTo() {","lastModifiedDate":"2024-01-30"},{"lineNumber":417,"author":{"gitId":"ChuaZiLong"},"content":" return to;","lastModifiedDate":"2024-01-30"},{"lineNumber":418,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":419,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":420,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":421,"author":{"gitId":"ChuaZiLong"},"content":"abstract class Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":422,"author":{"gitId":"ChuaZiLong"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":423,"author":{"gitId":"ChuaZiLong"},"content":" public abstract boolean isExit();","lastModifiedDate":"2024-01-30"},{"lineNumber":424,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":425,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":426,"author":{"gitId":"ChuaZiLong"},"content":"class MarkCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":427,"author":{"gitId":"ChuaZiLong"},"content":" private int index;","lastModifiedDate":"2024-01-30"},{"lineNumber":428,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":429,"author":{"gitId":"ChuaZiLong"},"content":" public MarkCommand(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":430,"author":{"gitId":"ChuaZiLong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-30"},{"lineNumber":431,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":432,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":433,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":434,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":435,"author":{"gitId":"ChuaZiLong"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.getSize()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":436,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":437,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":438,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.getTask(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":439,"author":{"gitId":"ChuaZiLong"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":440,"author":{"gitId":"ChuaZiLong"},"content":" ui.showMarkedTask(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":441,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":442,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":443,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":444,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":445,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":446,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":447,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":448,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":449,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":450,"author":{"gitId":"ChuaZiLong"},"content":"class UnmarkCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":451,"author":{"gitId":"ChuaZiLong"},"content":" private int index;","lastModifiedDate":"2024-01-30"},{"lineNumber":452,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":453,"author":{"gitId":"ChuaZiLong"},"content":" public UnmarkCommand(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":454,"author":{"gitId":"ChuaZiLong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-30"},{"lineNumber":455,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":456,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":457,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":458,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":459,"author":{"gitId":"ChuaZiLong"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.getSize()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":460,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":461,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":462,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.getTask(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":463,"author":{"gitId":"ChuaZiLong"},"content":" task.markAsNotDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":464,"author":{"gitId":"ChuaZiLong"},"content":" ui.showUnmarkedTask(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":465,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":466,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":467,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":468,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":469,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":470,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":471,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":472,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":473,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":474,"author":{"gitId":"ChuaZiLong"},"content":"class DeleteCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":475,"author":{"gitId":"ChuaZiLong"},"content":" private int index;","lastModifiedDate":"2024-01-30"},{"lineNumber":476,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":477,"author":{"gitId":"ChuaZiLong"},"content":" public DeleteCommand(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":478,"author":{"gitId":"ChuaZiLong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-30"},{"lineNumber":479,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":480,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":481,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":482,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":483,"author":{"gitId":"ChuaZiLong"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.getSize()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":484,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":485,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":486,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.removeTask(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":487,"author":{"gitId":"ChuaZiLong"},"content":" ui.showDeletedTask(task, tasks.getSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":488,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":489,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":490,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":491,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":492,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":493,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":494,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":495,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":496,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":497,"author":{"gitId":"ChuaZiLong"},"content":"class ExitCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":498,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":499,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":500,"author":{"gitId":"ChuaZiLong"},"content":" ui.showGoodbye();","lastModifiedDate":"2024-01-30"},{"lineNumber":501,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":502,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":503,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":504,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":505,"author":{"gitId":"ChuaZiLong"},"content":" return true; // Indicate that the application should exit","lastModifiedDate":"2024-01-30"},{"lineNumber":506,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":507,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":508,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":509,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":510,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":511,"author":{"gitId":"ChuaZiLong"},"content":"class ListCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":512,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":513,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":514,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskList(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":515,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":516,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":517,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":518,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":519,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":520,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":521,"author":{"gitId":"ChuaZiLong"},"content":"class AddTodoCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":522,"author":{"gitId":"ChuaZiLong"},"content":" private String description;","lastModifiedDate":"2024-01-30"},{"lineNumber":523,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":524,"author":{"gitId":"ChuaZiLong"},"content":" public AddTodoCommand(String description) {","lastModifiedDate":"2024-01-30"},{"lineNumber":525,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":526,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":527,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":528,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":529,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":530,"author":{"gitId":"ChuaZiLong"},"content":" Todo newTodo \u003d new Todo(description);","lastModifiedDate":"2024-01-30"},{"lineNumber":531,"author":{"gitId":"ChuaZiLong"},"content":" tasks.addTask(newTodo);","lastModifiedDate":"2024-01-30"},{"lineNumber":532,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskAdded(newTodo, tasks.getSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":533,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":534,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":535,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":536,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":537,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":538,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":539,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":540,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":541,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":542,"author":{"gitId":"ChuaZiLong"},"content":"class AddDeadlineCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":543,"author":{"gitId":"ChuaZiLong"},"content":" private String description;","lastModifiedDate":"2024-01-30"},{"lineNumber":544,"author":{"gitId":"ChuaZiLong"},"content":" private LocalDateTime by;","lastModifiedDate":"2024-01-30"},{"lineNumber":545,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":546,"author":{"gitId":"ChuaZiLong"},"content":" public AddDeadlineCommand(String description, LocalDateTime by) {","lastModifiedDate":"2024-01-30"},{"lineNumber":547,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":548,"author":{"gitId":"ChuaZiLong"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-30"},{"lineNumber":549,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":550,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":551,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":552,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":553,"author":{"gitId":"ChuaZiLong"},"content":" Deadline newDeadline \u003d new Deadline(description, by);","lastModifiedDate":"2024-01-30"},{"lineNumber":554,"author":{"gitId":"ChuaZiLong"},"content":" tasks.addTask(newDeadline);","lastModifiedDate":"2024-01-30"},{"lineNumber":555,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskAdded(newDeadline, tasks.getSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":556,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":557,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":558,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":559,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":560,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":561,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":562,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":563,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":564,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":565,"author":{"gitId":"ChuaZiLong"},"content":"class AddEventCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":566,"author":{"gitId":"ChuaZiLong"},"content":" private String description;","lastModifiedDate":"2024-01-30"},{"lineNumber":567,"author":{"gitId":"ChuaZiLong"},"content":" private LocalDateTime start;","lastModifiedDate":"2024-01-30"},{"lineNumber":568,"author":{"gitId":"ChuaZiLong"},"content":" private LocalDateTime end;","lastModifiedDate":"2024-01-30"},{"lineNumber":569,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":570,"author":{"gitId":"ChuaZiLong"},"content":" public AddEventCommand(String description, LocalDateTime start, LocalDateTime end) {","lastModifiedDate":"2024-01-30"},{"lineNumber":571,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":572,"author":{"gitId":"ChuaZiLong"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-30"},{"lineNumber":573,"author":{"gitId":"ChuaZiLong"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-30"},{"lineNumber":574,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":575,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":576,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":577,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":578,"author":{"gitId":"ChuaZiLong"},"content":" Event newEvent \u003d new Event(description, start, end);","lastModifiedDate":"2024-01-30"},{"lineNumber":579,"author":{"gitId":"ChuaZiLong"},"content":" tasks.addTask(newEvent);","lastModifiedDate":"2024-01-30"},{"lineNumber":580,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskAdded(newEvent, tasks.getSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":581,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":582,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":583,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":584,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":585,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":586,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":587,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":588,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"ChuaZiLong":588}},{"path":"src/src/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChuaZiLong"},"content":"package src.duke;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"ChuaZiLong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"ChuaZiLong"},"content":"import java.util.Date;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"ChuaZiLong"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.PrintWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"ChuaZiLong"},"content":"public class Duke {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"ChuaZiLong"},"content":" private Storage storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"ChuaZiLong"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"ChuaZiLong"},"content":" private Ui ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"ChuaZiLong"},"content":" public Duke(String filePath) {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"ChuaZiLong"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"ChuaZiLong"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"ChuaZiLong"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"ChuaZiLong"},"content":" ui.showLoadingError();","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"ChuaZiLong"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"ChuaZiLong"},"content":" public void run() {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"ChuaZiLong"},"content":" ui.showWelcome();","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"ChuaZiLong"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"ChuaZiLong"},"content":" while (!isExit) {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"ChuaZiLong"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"ChuaZiLong"},"content":" Command command \u003d Parser.parse(fullCommand);","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"ChuaZiLong"},"content":" command.execute(tasks, ui, storage);","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"ChuaZiLong"},"content":" isExit \u003d command.isExit(); // Check if the command signals to exit","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"ChuaZiLong"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"ChuaZiLong"},"content":" ui.closeScanner();","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"ChuaZiLong"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"ChuaZiLong"},"content":" new Duke(\"./data/duke.txt/duke.txt\").run();","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"ChuaZiLong"},"content":"class DukeException extends Exception {","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"ChuaZiLong"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"ChuaZiLong"},"content":" super(message);","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"ChuaZiLong"},"content":"class Ui {","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"ChuaZiLong"},"content":" private Scanner scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"ChuaZiLong"},"content":" public Ui() {","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"ChuaZiLong"},"content":" scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"ChuaZiLong"},"content":" public void showWelcome() {","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Hello! I\u0027m SCZL\");","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"ChuaZiLong"},"content":" public void showGoodbye() {","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"ChuaZiLong"},"content":" public void showError(String message) {","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(message);","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"ChuaZiLong"},"content":" public void showTaskAdded(Task task, int taskCount) {","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Now you have \" + taskCount + \" tasks in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"ChuaZiLong"},"content":" public void showTaskList(TaskList tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"ChuaZiLong"},"content":" for (int i \u003d 0; i \u003c tasks.getSize(); i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println((i + 1) + \".\" + tasks.getTask(i));","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"ChuaZiLong"},"content":" public String readCommand() {","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"ChuaZiLong"},"content":" return scanner.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"ChuaZiLong"},"content":" public void showLoadingError() {","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Error loading file.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"ChuaZiLong"},"content":" public void closeScanner() {","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"ChuaZiLong"},"content":" scanner.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"ChuaZiLong"},"content":" public void showMarkedTask(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"ChuaZiLong"},"content":" public void showUnmarkedTask(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"ChuaZiLong"},"content":" public void showDeletedTask(Task task, int taskCount) {","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Now you have \" + taskCount + \" tasks in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":123,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":124,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"ChuaZiLong"},"content":"class Storage {","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"ChuaZiLong"},"content":" private String filePath;","lastModifiedDate":"2024-01-30"},{"lineNumber":127,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":128,"author":{"gitId":"ChuaZiLong"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"ChuaZiLong"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":131,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"ChuaZiLong"},"content":" public ArrayList\u003cTask\u003e load() throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":133,"author":{"gitId":"ChuaZiLong"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":134,"author":{"gitId":"ChuaZiLong"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":135,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":136,"author":{"gitId":"ChuaZiLong"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"File not found\");","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":139,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"ChuaZiLong"},"content":" try (Scanner fileScanner \u003d new Scanner(file)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":141,"author":{"gitId":"ChuaZiLong"},"content":" while (fileScanner.hasNext()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"ChuaZiLong"},"content":" String line \u003d fileScanner.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":143,"author":{"gitId":"ChuaZiLong"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-01-30"},{"lineNumber":144,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":145,"author":{"gitId":"ChuaZiLong"},"content":" String type \u003d parts[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":146,"author":{"gitId":"ChuaZiLong"},"content":" boolean isDone \u003d parts[1].equals(\"1\");","lastModifiedDate":"2024-01-30"},{"lineNumber":147,"author":{"gitId":"ChuaZiLong"},"content":" String description \u003d parts[2];","lastModifiedDate":"2024-01-30"},{"lineNumber":148,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d null;","lastModifiedDate":"2024-01-30"},{"lineNumber":149,"author":{"gitId":"ChuaZiLong"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":150,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":151,"author":{"gitId":"ChuaZiLong"},"content":" switch (type) {","lastModifiedDate":"2024-01-30"},{"lineNumber":152,"author":{"gitId":"ChuaZiLong"},"content":" case \"T\":","lastModifiedDate":"2024-01-30"},{"lineNumber":153,"author":{"gitId":"ChuaZiLong"},"content":" task \u003d new Todo(description);","lastModifiedDate":"2024-01-30"},{"lineNumber":154,"author":{"gitId":"ChuaZiLong"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":155,"author":{"gitId":"ChuaZiLong"},"content":" case \"D\":","lastModifiedDate":"2024-01-30"},{"lineNumber":156,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 4) throw new DukeException(\"Invalid deadline format in file.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":157,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime byDate \u003d LocalDateTime.parse(parts[3], formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":158,"author":{"gitId":"ChuaZiLong"},"content":" task \u003d new Deadline(description, byDate);","lastModifiedDate":"2024-01-30"},{"lineNumber":159,"author":{"gitId":"ChuaZiLong"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":160,"author":{"gitId":"ChuaZiLong"},"content":" case \"E\":","lastModifiedDate":"2024-01-30"},{"lineNumber":161,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 5) throw new DukeException(\"Invalid event format in file.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":162,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime from \u003d LocalDateTime.parse(parts[3], formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":163,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime to \u003d LocalDateTime.parse(parts[4], formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":164,"author":{"gitId":"ChuaZiLong"},"content":" task \u003d new Event(description, from, to);","lastModifiedDate":"2024-01-30"},{"lineNumber":165,"author":{"gitId":"ChuaZiLong"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":166,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":167,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":168,"author":{"gitId":"ChuaZiLong"},"content":" if (task !\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":169,"author":{"gitId":"ChuaZiLong"},"content":" if (isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":170,"author":{"gitId":"ChuaZiLong"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":171,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":172,"author":{"gitId":"ChuaZiLong"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":173,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":174,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DukeException | DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":175,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Skipping invalid task: \" + line);","lastModifiedDate":"2024-01-30"},{"lineNumber":176,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":177,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":178,"author":{"gitId":"ChuaZiLong"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":179,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"File not found: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":180,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":181,"author":{"gitId":"ChuaZiLong"},"content":" return tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":182,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":183,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":184,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":185,"author":{"gitId":"ChuaZiLong"},"content":" public void save(TaskList tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":186,"author":{"gitId":"ChuaZiLong"},"content":" try (PrintWriter writer \u003d new PrintWriter(new FileWriter(filePath))) {","lastModifiedDate":"2024-01-30"},{"lineNumber":187,"author":{"gitId":"ChuaZiLong"},"content":" for (int i \u003d 0; i \u003c tasks.getSize(); i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":188,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.getTask(i);","lastModifiedDate":"2024-01-30"},{"lineNumber":189,"author":{"gitId":"ChuaZiLong"},"content":" writer.println(taskToFileString(task));","lastModifiedDate":"2024-01-30"},{"lineNumber":190,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":191,"author":{"gitId":"ChuaZiLong"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":192,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"An error occurred while saving tasks to file: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":193,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":194,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":195,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":196,"author":{"gitId":"ChuaZiLong"},"content":" private String taskToFileString(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":197,"author":{"gitId":"ChuaZiLong"},"content":" String type \u003d task instanceof Todo ? \"T\" :","lastModifiedDate":"2024-01-30"},{"lineNumber":198,"author":{"gitId":"ChuaZiLong"},"content":" task instanceof Deadline ? \"D\" :","lastModifiedDate":"2024-01-30"},{"lineNumber":199,"author":{"gitId":"ChuaZiLong"},"content":" task instanceof Event ? \"E\" : \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":200,"author":{"gitId":"ChuaZiLong"},"content":" String status \u003d task.isDone ? \"1\" : \"0\";","lastModifiedDate":"2024-01-30"},{"lineNumber":201,"author":{"gitId":"ChuaZiLong"},"content":" String details \u003d task.getDescription();","lastModifiedDate":"2024-01-30"},{"lineNumber":202,"author":{"gitId":"ChuaZiLong"},"content":" String additionalInfo \u003d \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":203,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":204,"author":{"gitId":"ChuaZiLong"},"content":" if (task instanceof Deadline) {","lastModifiedDate":"2024-01-30"},{"lineNumber":205,"author":{"gitId":"ChuaZiLong"},"content":" Deadline deadline \u003d (Deadline) task;","lastModifiedDate":"2024-01-30"},{"lineNumber":206,"author":{"gitId":"ChuaZiLong"},"content":" additionalInfo \u003d \" | \" + deadline.getBy().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":207,"author":{"gitId":"ChuaZiLong"},"content":" } else if (task instanceof Event) {","lastModifiedDate":"2024-01-30"},{"lineNumber":208,"author":{"gitId":"ChuaZiLong"},"content":" Event event \u003d (Event) task;","lastModifiedDate":"2024-01-30"},{"lineNumber":209,"author":{"gitId":"ChuaZiLong"},"content":" additionalInfo \u003d \" | \" + event.getFrom().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\")) +","lastModifiedDate":"2024-01-30"},{"lineNumber":210,"author":{"gitId":"ChuaZiLong"},"content":" \" | \" + event.getTo().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":211,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":212,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":213,"author":{"gitId":"ChuaZiLong"},"content":" return type + \" | \" + status + \" | \" + details + additionalInfo;","lastModifiedDate":"2024-01-30"},{"lineNumber":214,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":215,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":216,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":217,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":218,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":219,"author":{"gitId":"ChuaZiLong"},"content":"class Parser {","lastModifiedDate":"2024-01-30"},{"lineNumber":220,"author":{"gitId":"ChuaZiLong"},"content":" private static final DateTimeFormatter dateTimeFormatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":221,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":222,"author":{"gitId":"ChuaZiLong"},"content":" public static Command parse(String fullCommand) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":223,"author":{"gitId":"ChuaZiLong"},"content":" String[] commandParts \u003d fullCommand.split(\" \", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":224,"author":{"gitId":"ChuaZiLong"},"content":" String commandType \u003d commandParts[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":225,"author":{"gitId":"ChuaZiLong"},"content":" String commandArgs \u003d commandParts.length \u003e 1 ? commandParts[1] : \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":226,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":227,"author":{"gitId":"ChuaZiLong"},"content":" switch (commandType) {","lastModifiedDate":"2024-01-30"},{"lineNumber":228,"author":{"gitId":"ChuaZiLong"},"content":" case \"todo\":","lastModifiedDate":"2024-01-30"},{"lineNumber":229,"author":{"gitId":"ChuaZiLong"},"content":" if (commandArgs.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":230,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"The description of a todo cannot be empty.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":231,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":232,"author":{"gitId":"ChuaZiLong"},"content":" return new AddTodoCommand(commandArgs);","lastModifiedDate":"2024-01-30"},{"lineNumber":233,"author":{"gitId":"ChuaZiLong"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-30"},{"lineNumber":234,"author":{"gitId":"ChuaZiLong"},"content":" return parseAddDeadlineCommand(commandArgs);","lastModifiedDate":"2024-01-30"},{"lineNumber":235,"author":{"gitId":"ChuaZiLong"},"content":" case \"event\":","lastModifiedDate":"2024-01-30"},{"lineNumber":236,"author":{"gitId":"ChuaZiLong"},"content":" return parseAddEventCommand(commandArgs);","lastModifiedDate":"2024-01-30"},{"lineNumber":237,"author":{"gitId":"ChuaZiLong"},"content":" case \"list\":","lastModifiedDate":"2024-01-30"},{"lineNumber":238,"author":{"gitId":"ChuaZiLong"},"content":" return new ListCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":239,"author":{"gitId":"ChuaZiLong"},"content":" case \"mark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":240,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":241,"author":{"gitId":"ChuaZiLong"},"content":" int index \u003d Integer.parseInt(commandArgs) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":242,"author":{"gitId":"ChuaZiLong"},"content":" return new MarkCommand(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":243,"author":{"gitId":"ChuaZiLong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":244,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":245,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":246,"author":{"gitId":"ChuaZiLong"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":247,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":248,"author":{"gitId":"ChuaZiLong"},"content":" int index \u003d Integer.parseInt(commandArgs) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":249,"author":{"gitId":"ChuaZiLong"},"content":" return new UnmarkCommand(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":250,"author":{"gitId":"ChuaZiLong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":251,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":252,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":253,"author":{"gitId":"ChuaZiLong"},"content":" case \"delete\":","lastModifiedDate":"2024-01-30"},{"lineNumber":254,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":255,"author":{"gitId":"ChuaZiLong"},"content":" int index \u003d Integer.parseInt(commandArgs) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":256,"author":{"gitId":"ChuaZiLong"},"content":" return new DeleteCommand(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":257,"author":{"gitId":"ChuaZiLong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":258,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":259,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":260,"author":{"gitId":"ChuaZiLong"},"content":" case \"bye\":","lastModifiedDate":"2024-01-30"},{"lineNumber":261,"author":{"gitId":"ChuaZiLong"},"content":" return new ExitCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":262,"author":{"gitId":"ChuaZiLong"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":263,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Unknown command\");","lastModifiedDate":"2024-01-30"},{"lineNumber":264,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":265,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":266,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":267,"author":{"gitId":"ChuaZiLong"},"content":" private static Command parseAddDeadlineCommand(String commandArgs) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":268,"author":{"gitId":"ChuaZiLong"},"content":" String[] parts \u003d commandArgs.split(\"/by\", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":269,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 2 || parts[0].trim().isEmpty() || parts[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":270,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid deadline command format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":271,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":272,"author":{"gitId":"ChuaZiLong"},"content":" String description \u003d parts[0].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":273,"author":{"gitId":"ChuaZiLong"},"content":" String by \u003d parts[1].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":274,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":275,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime byDate \u003d LocalDateTime.parse(by, dateTimeFormatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":276,"author":{"gitId":"ChuaZiLong"},"content":" return new AddDeadlineCommand(description, byDate);","lastModifiedDate":"2024-01-30"},{"lineNumber":277,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":278,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid date format. Please use yyyy-MM-dd HHmm format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":279,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":280,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":281,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":282,"author":{"gitId":"ChuaZiLong"},"content":" private static Command parseAddEventCommand(String commandArgs) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":283,"author":{"gitId":"ChuaZiLong"},"content":" String[] parts \u003d commandArgs.split(\"/at\", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":284,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 2 || parts[0].trim().isEmpty() || parts[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":285,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid event command format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":286,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":287,"author":{"gitId":"ChuaZiLong"},"content":" String description \u003d parts[0].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":288,"author":{"gitId":"ChuaZiLong"},"content":" String at \u003d parts[1].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":289,"author":{"gitId":"ChuaZiLong"},"content":" String[] timeParts \u003d at.split(\"-\", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":290,"author":{"gitId":"ChuaZiLong"},"content":" if (timeParts.length \u003c 2 || timeParts[0].trim().isEmpty() || timeParts[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":291,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid time format for event command.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":292,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":293,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":294,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime startTime \u003d LocalDateTime.parse(timeParts[0].trim(), dateTimeFormatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":295,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime endTime \u003d LocalDateTime.parse(timeParts[1].trim(), dateTimeFormatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":296,"author":{"gitId":"ChuaZiLong"},"content":" return new AddEventCommand(description, startTime, endTime);","lastModifiedDate":"2024-01-30"},{"lineNumber":297,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":298,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid date format. Please use yyyy-MM-dd HHmm format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":299,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":300,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":301,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":302,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":303,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":304,"author":{"gitId":"ChuaZiLong"},"content":"class TaskList {","lastModifiedDate":"2024-01-30"},{"lineNumber":305,"author":{"gitId":"ChuaZiLong"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":306,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":307,"author":{"gitId":"ChuaZiLong"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":308,"author":{"gitId":"ChuaZiLong"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":309,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":310,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":311,"author":{"gitId":"ChuaZiLong"},"content":" public TaskList() {","lastModifiedDate":"2024-01-30"},{"lineNumber":312,"author":{"gitId":"ChuaZiLong"},"content":" this(new ArrayList\u003c\u003e());","lastModifiedDate":"2024-01-30"},{"lineNumber":313,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":314,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":315,"author":{"gitId":"ChuaZiLong"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":316,"author":{"gitId":"ChuaZiLong"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":317,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":318,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":319,"author":{"gitId":"ChuaZiLong"},"content":" public Task removeTask(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":320,"author":{"gitId":"ChuaZiLong"},"content":" return tasks.remove(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":321,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":322,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":323,"author":{"gitId":"ChuaZiLong"},"content":" public Task getTask(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":324,"author":{"gitId":"ChuaZiLong"},"content":" return tasks.get(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":325,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":326,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":327,"author":{"gitId":"ChuaZiLong"},"content":" public int getSize() {","lastModifiedDate":"2024-01-30"},{"lineNumber":328,"author":{"gitId":"ChuaZiLong"},"content":" return tasks.size();","lastModifiedDate":"2024-01-30"},{"lineNumber":329,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":330,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":331,"author":{"gitId":"ChuaZiLong"},"content":" // ... any other methods needed for task management ...","lastModifiedDate":"2024-01-30"},{"lineNumber":332,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":333,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":334,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":335,"author":{"gitId":"ChuaZiLong"},"content":"enum TaskType {","lastModifiedDate":"2024-01-30"},{"lineNumber":336,"author":{"gitId":"ChuaZiLong"},"content":" TODO,","lastModifiedDate":"2024-01-30"},{"lineNumber":337,"author":{"gitId":"ChuaZiLong"},"content":" DEADLINE,","lastModifiedDate":"2024-01-30"},{"lineNumber":338,"author":{"gitId":"ChuaZiLong"},"content":" EVENT","lastModifiedDate":"2024-01-30"},{"lineNumber":339,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":340,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":341,"author":{"gitId":"ChuaZiLong"},"content":"class Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":342,"author":{"gitId":"ChuaZiLong"},"content":" protected String description;","lastModifiedDate":"2024-01-30"},{"lineNumber":343,"author":{"gitId":"ChuaZiLong"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":344,"author":{"gitId":"ChuaZiLong"},"content":" protected TaskType taskType;","lastModifiedDate":"2024-01-30"},{"lineNumber":345,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":346,"author":{"gitId":"ChuaZiLong"},"content":" public Task(String description, TaskType taskType) {","lastModifiedDate":"2024-01-30"},{"lineNumber":347,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":348,"author":{"gitId":"ChuaZiLong"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":349,"author":{"gitId":"ChuaZiLong"},"content":" this.taskType \u003d taskType;","lastModifiedDate":"2024-01-30"},{"lineNumber":350,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":351,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":352,"author":{"gitId":"ChuaZiLong"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-30"},{"lineNumber":353,"author":{"gitId":"ChuaZiLong"},"content":" return \"[\" + taskType + \"]\" + (isDone ? \"[X] \" : \"[ ] \");","lastModifiedDate":"2024-01-30"},{"lineNumber":354,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":355,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":356,"author":{"gitId":"ChuaZiLong"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-30"},{"lineNumber":357,"author":{"gitId":"ChuaZiLong"},"content":" return description;","lastModifiedDate":"2024-01-30"},{"lineNumber":358,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":359,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":360,"author":{"gitId":"ChuaZiLong"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-30"},{"lineNumber":361,"author":{"gitId":"ChuaZiLong"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-30"},{"lineNumber":362,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":363,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":364,"author":{"gitId":"ChuaZiLong"},"content":" public void markAsNotDone() {","lastModifiedDate":"2024-01-30"},{"lineNumber":365,"author":{"gitId":"ChuaZiLong"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":366,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":367,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":368,"author":{"gitId":"ChuaZiLong"},"content":" public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":369,"author":{"gitId":"ChuaZiLong"},"content":" return getStatusIcon() + getDescription();","lastModifiedDate":"2024-01-30"},{"lineNumber":370,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":371,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":372,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":373,"author":{"gitId":"ChuaZiLong"},"content":"class Todo extends Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":374,"author":{"gitId":"ChuaZiLong"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-30"},{"lineNumber":375,"author":{"gitId":"ChuaZiLong"},"content":" super(description, TaskType.TODO);","lastModifiedDate":"2024-01-30"},{"lineNumber":376,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":377,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":378,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":379,"author":{"gitId":"ChuaZiLong"},"content":"class Deadline extends Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":380,"author":{"gitId":"ChuaZiLong"},"content":" protected LocalDateTime by;","lastModifiedDate":"2024-01-30"},{"lineNumber":381,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":382,"author":{"gitId":"ChuaZiLong"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2024-01-30"},{"lineNumber":383,"author":{"gitId":"ChuaZiLong"},"content":" super(description, TaskType.DEADLINE);","lastModifiedDate":"2024-01-30"},{"lineNumber":384,"author":{"gitId":"ChuaZiLong"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-30"},{"lineNumber":385,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":386,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":387,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":388,"author":{"gitId":"ChuaZiLong"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-30"},{"lineNumber":389,"author":{"gitId":"ChuaZiLong"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy, HH:mm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":390,"author":{"gitId":"ChuaZiLong"},"content":" return super.getDescription() + \" (by: \" + formatter.format(by) + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":391,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":392,"author":{"gitId":"ChuaZiLong"},"content":" public LocalDateTime getBy() {","lastModifiedDate":"2024-01-30"},{"lineNumber":393,"author":{"gitId":"ChuaZiLong"},"content":" return by;","lastModifiedDate":"2024-01-30"},{"lineNumber":394,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":395,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":396,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":397,"author":{"gitId":"ChuaZiLong"},"content":"class Event extends Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":398,"author":{"gitId":"ChuaZiLong"},"content":" protected LocalDateTime from;","lastModifiedDate":"2024-01-30"},{"lineNumber":399,"author":{"gitId":"ChuaZiLong"},"content":" protected LocalDateTime to;","lastModifiedDate":"2024-01-30"},{"lineNumber":400,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":401,"author":{"gitId":"ChuaZiLong"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2024-01-30"},{"lineNumber":402,"author":{"gitId":"ChuaZiLong"},"content":" super(description, TaskType.EVENT);","lastModifiedDate":"2024-01-30"},{"lineNumber":403,"author":{"gitId":"ChuaZiLong"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-30"},{"lineNumber":404,"author":{"gitId":"ChuaZiLong"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-30"},{"lineNumber":405,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":406,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":407,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":408,"author":{"gitId":"ChuaZiLong"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-30"},{"lineNumber":409,"author":{"gitId":"ChuaZiLong"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy, HH:mm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":410,"author":{"gitId":"ChuaZiLong"},"content":" return super.getDescription() + \" (from: \" + formatter.format(from) + \" to: \" + formatter.format(to) + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":411,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":412,"author":{"gitId":"ChuaZiLong"},"content":" public LocalDateTime getFrom() {","lastModifiedDate":"2024-01-30"},{"lineNumber":413,"author":{"gitId":"ChuaZiLong"},"content":" return from;","lastModifiedDate":"2024-01-30"},{"lineNumber":414,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":415,"author":{"gitId":"ChuaZiLong"},"content":" public LocalDateTime getTo() {","lastModifiedDate":"2024-01-30"},{"lineNumber":416,"author":{"gitId":"ChuaZiLong"},"content":" return to;","lastModifiedDate":"2024-01-30"},{"lineNumber":417,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":418,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":419,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":420,"author":{"gitId":"ChuaZiLong"},"content":"abstract class Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":421,"author":{"gitId":"ChuaZiLong"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":422,"author":{"gitId":"ChuaZiLong"},"content":" public abstract boolean isExit();","lastModifiedDate":"2024-01-30"},{"lineNumber":423,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":424,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":425,"author":{"gitId":"ChuaZiLong"},"content":"class MarkCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":426,"author":{"gitId":"ChuaZiLong"},"content":" private int index;","lastModifiedDate":"2024-01-30"},{"lineNumber":427,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":428,"author":{"gitId":"ChuaZiLong"},"content":" public MarkCommand(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":429,"author":{"gitId":"ChuaZiLong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-30"},{"lineNumber":430,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":431,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":432,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":433,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":434,"author":{"gitId":"ChuaZiLong"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.getSize()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":435,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":436,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":437,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.getTask(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":438,"author":{"gitId":"ChuaZiLong"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":439,"author":{"gitId":"ChuaZiLong"},"content":" ui.showMarkedTask(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":440,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":441,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":442,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":443,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":444,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":445,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":446,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":447,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":448,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":449,"author":{"gitId":"ChuaZiLong"},"content":"class UnmarkCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":450,"author":{"gitId":"ChuaZiLong"},"content":" private int index;","lastModifiedDate":"2024-01-30"},{"lineNumber":451,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":452,"author":{"gitId":"ChuaZiLong"},"content":" public UnmarkCommand(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":453,"author":{"gitId":"ChuaZiLong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-30"},{"lineNumber":454,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":455,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":456,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":457,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":458,"author":{"gitId":"ChuaZiLong"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.getSize()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":459,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":460,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":461,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.getTask(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":462,"author":{"gitId":"ChuaZiLong"},"content":" task.markAsNotDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":463,"author":{"gitId":"ChuaZiLong"},"content":" ui.showUnmarkedTask(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":464,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":465,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":466,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":467,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":468,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":469,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":470,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":471,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":472,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":473,"author":{"gitId":"ChuaZiLong"},"content":"class DeleteCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":474,"author":{"gitId":"ChuaZiLong"},"content":" private int index;","lastModifiedDate":"2024-01-30"},{"lineNumber":475,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":476,"author":{"gitId":"ChuaZiLong"},"content":" public DeleteCommand(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":477,"author":{"gitId":"ChuaZiLong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-30"},{"lineNumber":478,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":479,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":480,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":481,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":482,"author":{"gitId":"ChuaZiLong"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.getSize()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":483,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":484,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":485,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.removeTask(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":486,"author":{"gitId":"ChuaZiLong"},"content":" ui.showDeletedTask(task, tasks.getSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":487,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":488,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":489,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":490,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":491,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":492,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":493,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":494,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":495,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":496,"author":{"gitId":"ChuaZiLong"},"content":"class ExitCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":497,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":498,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":499,"author":{"gitId":"ChuaZiLong"},"content":" ui.showGoodbye();","lastModifiedDate":"2024-01-30"},{"lineNumber":500,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":501,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":502,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":503,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":504,"author":{"gitId":"ChuaZiLong"},"content":" return true; // Indicate that the application should exit","lastModifiedDate":"2024-01-30"},{"lineNumber":505,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":506,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":507,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":508,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":509,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":510,"author":{"gitId":"ChuaZiLong"},"content":"class ListCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":511,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":512,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":513,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskList(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":514,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":515,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":516,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":517,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":518,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":519,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":520,"author":{"gitId":"ChuaZiLong"},"content":"class AddTodoCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":521,"author":{"gitId":"ChuaZiLong"},"content":" private String description;","lastModifiedDate":"2024-01-30"},{"lineNumber":522,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":523,"author":{"gitId":"ChuaZiLong"},"content":" public AddTodoCommand(String description) {","lastModifiedDate":"2024-01-30"},{"lineNumber":524,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":525,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":526,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":527,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":528,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":529,"author":{"gitId":"ChuaZiLong"},"content":" Todo newTodo \u003d new Todo(description);","lastModifiedDate":"2024-01-30"},{"lineNumber":530,"author":{"gitId":"ChuaZiLong"},"content":" tasks.addTask(newTodo);","lastModifiedDate":"2024-01-30"},{"lineNumber":531,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskAdded(newTodo, tasks.getSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":532,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":533,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":534,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":535,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":536,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":537,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":538,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":539,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":540,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":541,"author":{"gitId":"ChuaZiLong"},"content":"class AddDeadlineCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":542,"author":{"gitId":"ChuaZiLong"},"content":" private String description;","lastModifiedDate":"2024-01-30"},{"lineNumber":543,"author":{"gitId":"ChuaZiLong"},"content":" private LocalDateTime by;","lastModifiedDate":"2024-01-30"},{"lineNumber":544,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":545,"author":{"gitId":"ChuaZiLong"},"content":" public AddDeadlineCommand(String description, LocalDateTime by) {","lastModifiedDate":"2024-01-30"},{"lineNumber":546,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":547,"author":{"gitId":"ChuaZiLong"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-30"},{"lineNumber":548,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":549,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":550,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":551,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":552,"author":{"gitId":"ChuaZiLong"},"content":" Deadline newDeadline \u003d new Deadline(description, by);","lastModifiedDate":"2024-01-30"},{"lineNumber":553,"author":{"gitId":"ChuaZiLong"},"content":" tasks.addTask(newDeadline);","lastModifiedDate":"2024-01-30"},{"lineNumber":554,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskAdded(newDeadline, tasks.getSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":555,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":556,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":557,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":558,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":559,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":560,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":561,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":562,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":563,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":564,"author":{"gitId":"ChuaZiLong"},"content":"class AddEventCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":565,"author":{"gitId":"ChuaZiLong"},"content":" private String description;","lastModifiedDate":"2024-01-30"},{"lineNumber":566,"author":{"gitId":"ChuaZiLong"},"content":" private LocalDateTime start;","lastModifiedDate":"2024-01-30"},{"lineNumber":567,"author":{"gitId":"ChuaZiLong"},"content":" private LocalDateTime end;","lastModifiedDate":"2024-01-30"},{"lineNumber":568,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":569,"author":{"gitId":"ChuaZiLong"},"content":" public AddEventCommand(String description, LocalDateTime start, LocalDateTime end) {","lastModifiedDate":"2024-01-30"},{"lineNumber":570,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":571,"author":{"gitId":"ChuaZiLong"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-30"},{"lineNumber":572,"author":{"gitId":"ChuaZiLong"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-30"},{"lineNumber":573,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":574,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":575,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":576,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":577,"author":{"gitId":"ChuaZiLong"},"content":" Event newEvent \u003d new Event(description, start, end);","lastModifiedDate":"2024-01-30"},{"lineNumber":578,"author":{"gitId":"ChuaZiLong"},"content":" tasks.addTask(newEvent);","lastModifiedDate":"2024-01-30"},{"lineNumber":579,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskAdded(newEvent, tasks.getSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":580,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":581,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":582,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":583,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":584,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":585,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":586,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":587,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"ChuaZiLong":587}}] diff --git a/ChuaZiLong_ip_master/commits.json b/ChuaZiLong_ip_master/commits.json index 4d850bc7..1ccd569e 100644 --- a/ChuaZiLong_ip_master/commits.json +++ b/ChuaZiLong_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"ChuaZiLong":[{"date":"2024-01-24","commitResults":[{"hash":"fd3f99fb596f998f2487e68efc8b5d2f7f350e7e","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-2","Level-1","Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":6}}},{"hash":"dd89622fc701f0bddd2dbf55f083b66a9e53174d","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":2}}},{"hash":"c6b08c34427581e95e0116644cfd45d526c4b526","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":1}}},{"hash":"16d59cf35e9dedb09a88d89de11a21af6ab8d21e","isMergeCommit":false,"messageTitle":"no message","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":145,"deletions":25}}},{"hash":"2a85b68c30ab1c6e2d8939e4762cf547227fb438","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":0}}},{"hash":"c55f6371ce0501bd85b9d72ccfc70cb9e4b4d0a6","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":61,"deletions":26}}},{"hash":"5267dc4dfceea9e571bc031d406cfb1c65473a07","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":53,"deletions":59}}},{"hash":"242e73e4992665462773773acde21be7dcfe67cb","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}}]},{"date":"2024-01-28","commitResults":[{"hash":"56c3caadae335aa3c11ad6c5d87f2da6d6a3f61d","isMergeCommit":false,"messageTitle":"Save tasks in the hard disk automatically","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":85,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"ChuaZiLong":{"java":322,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":0}},"authorContributionVariance":{"ChuaZiLong":19898.406},"authorDisplayNameMap":{"ChuaZiLong":"CS2103T-W08-3 CHUA..LONG"}} +{"authorDailyContributionsMap":{"ChuaZiLong":[{"date":"2024-01-24","commitResults":[{"hash":"fd3f99fb596f998f2487e68efc8b5d2f7f350e7e","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-2","Level-1","Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":6}}},{"hash":"dd89622fc701f0bddd2dbf55f083b66a9e53174d","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":2}}},{"hash":"c6b08c34427581e95e0116644cfd45d526c4b526","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":1}}},{"hash":"16d59cf35e9dedb09a88d89de11a21af6ab8d21e","isMergeCommit":false,"messageTitle":"no message","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":145,"deletions":25}}},{"hash":"2a85b68c30ab1c6e2d8939e4762cf547227fb438","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":0}}},{"hash":"c55f6371ce0501bd85b9d72ccfc70cb9e4b4d0a6","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":61,"deletions":26}}},{"hash":"5267dc4dfceea9e571bc031d406cfb1c65473a07","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":53,"deletions":59}}},{"hash":"242e73e4992665462773773acde21be7dcfe67cb","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}}]},{"date":"2024-01-28","commitResults":[{"hash":"56c3caadae335aa3c11ad6c5d87f2da6d6a3f61d","isMergeCommit":false,"messageTitle":"Save tasks in the hard disk automatically","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":85,"deletions":0}}},{"hash":"091ddb4beb72db255a471226f6ec69a17d1213d5","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"96a0d97164262badbf6c7d87fc6583704be36551","isMergeCommit":false,"messageTitle":"no message","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":72,"deletions":22}}},{"hash":"b9bd9ec011f461dab8ffc492286d59b004c48a47","isMergeCommit":false,"messageTitle":"no message","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":335,"deletions":253}}}]},{"date":"2024-01-30","commitResults":[{"hash":"c0e5ae6a44d1b38923aa58d99cde5a2f67e734e4","isMergeCommit":false,"messageTitle":"no message","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":142,"deletions":17}}},{"hash":"a49a99daf39b3c3e6fa93a602a861de30885edc2","isMergeCommit":false,"messageTitle":"Package duke","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":587,"deletions":0}}},{"hash":"e0addcd37aa499f35c71c79591228933525e8c6b","isMergeCommit":false,"messageTitle":"Add Gradle","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"6f18bc54c059f660f76d2b4b6f9e29ba77020575","isMergeCommit":false,"messageTitle":"Add Gradle","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":588,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"ChuaZiLong":{"java":1754,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":0}},"authorContributionVariance":{"ChuaZiLong":170469.19},"authorDisplayNameMap":{"ChuaZiLong":"CS2103T-W08-3 CHUA..LONG"}} diff --git a/Darylgolden_ip_master/commits.json b/Darylgolden_ip_master/commits.json index fd53dfbb..20fde25c 100644 --- a/Darylgolden_ip_master/commits.json +++ b/Darylgolden_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Darylgolden":[{"date":"2024-01-24","commitResults":[{"hash":"f34cd0e6169ef6cb91f192da9af04761e9db5e9c","isMergeCommit":false,"messageTitle":"created command interface and chatsession class, renamed duke","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"d338aeccb278ce45b0b51403ab37cee9b39390b6","isMergeCommit":false,"messageTitle":"level 0","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":10}}},{"hash":"2275296dfade561ef2d7d4367122106368ca2e03","isMergeCommit":false,"messageTitle":"create task class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":1}}},{"hash":"86958aec3628e8897d771b1f191258c941a1b44e","isMergeCommit":false,"messageTitle":"refactored logic into chatsession","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":9}}},{"hash":"7ee86639333db72f2826175dc235d003b9e3efa8","isMergeCommit":false,"messageTitle":"start bye command and impl of termination commands","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":1}}},{"hash":"9466c0f8af0bd2bc323a50bfa91a7caf32c713a0","isMergeCommit":false,"messageTitle":"create printMessage method in ChatSession","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}},{"hash":"f6b1efbf67c79695b6e551d6459d180c1049db48","isMergeCommit":false,"messageTitle":"method for printing messages and for terminating sesh","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":1}}},{"hash":"6dfcf2f7e2c9946732707bd909eacf5b3814ca64","isMergeCommit":false,"messageTitle":"level 1","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":55,"deletions":10}}},{"hash":"e4051e1ec2e81df3c1cfa9ca936b09d466f7596e","isMergeCommit":false,"messageTitle":"level 2","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":9}}},{"hash":"04b7dfd0e4a3efc08c65bef24d29db5002d0f591","isMergeCommit":false,"messageTitle":"level 3","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":2}}},{"hash":"9eaeda67132fe8ac202687f25feb34d1ec515afc","isMergeCommit":false,"messageTitle":"add todo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"Darylgolden":{"java":212,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":0}},"authorContributionVariance":{"Darylgolden":11680.556},"authorDisplayNameMap":{"Darylgolden":"DARY.. YAO"}} +{"authorDailyContributionsMap":{"Darylgolden":[{"date":"2024-01-24","commitResults":[{"hash":"f34cd0e6169ef6cb91f192da9af04761e9db5e9c","isMergeCommit":false,"messageTitle":"created command interface and chatsession class, renamed duke","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"d338aeccb278ce45b0b51403ab37cee9b39390b6","isMergeCommit":false,"messageTitle":"level 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":10}}},{"hash":"2275296dfade561ef2d7d4367122106368ca2e03","isMergeCommit":false,"messageTitle":"create task class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":1}}},{"hash":"86958aec3628e8897d771b1f191258c941a1b44e","isMergeCommit":false,"messageTitle":"refactored logic into chatsession","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":9}}},{"hash":"7ee86639333db72f2826175dc235d003b9e3efa8","isMergeCommit":false,"messageTitle":"start bye command and impl of termination commands","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":1}}},{"hash":"9466c0f8af0bd2bc323a50bfa91a7caf32c713a0","isMergeCommit":false,"messageTitle":"create printMessage method in ChatSession","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}},{"hash":"f6b1efbf67c79695b6e551d6459d180c1049db48","isMergeCommit":false,"messageTitle":"method for printing messages and for terminating sesh","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":1}}},{"hash":"6dfcf2f7e2c9946732707bd909eacf5b3814ca64","isMergeCommit":false,"messageTitle":"level 1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":55,"deletions":10}}},{"hash":"e4051e1ec2e81df3c1cfa9ca936b09d466f7596e","isMergeCommit":false,"messageTitle":"level 2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":9}}},{"hash":"04b7dfd0e4a3efc08c65bef24d29db5002d0f591","isMergeCommit":false,"messageTitle":"level 3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":2}}},{"hash":"9eaeda67132fe8ac202687f25feb34d1ec515afc","isMergeCommit":false,"messageTitle":"add todo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"Darylgolden":{"java":212,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":0}},"authorContributionVariance":{"Darylgolden":11680.556},"authorDisplayNameMap":{"Darylgolden":"DARY.. YAO"}} diff --git a/Ella-e_ip_master/authorship.json b/Ella-e_ip_master/authorship.json index 476e11e2..be31a267 100644 --- a/Ella-e_ip_master/authorship.json +++ b/Ella-e_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"# Duke project template","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":"1. Open Intellij (if you are not in the welcome screen, click `Storage` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2024-01-29"},{"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":"-"},"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":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":{"Ella-e":1,"-":23}},{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"T|0|abc","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"D|1|abc |2022-01-02","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Ella-e":2}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"import exceptions.BaseException;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"import tasks.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":" private Storage storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":" private UI ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":" public Duke(String filePath) {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":" this.ui \u003d new UI();","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":" this.storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":" this.tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":" ui.showLoadingError();","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":" this.tasks \u003d new TaskList();","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":" public void run(){","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"content":" ui.onEnter();","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Ella-e"},"content":" while (true) {","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":" String userInput \u003d ui.getUserInput();","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":" // use parser to process the userInput","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Ella-e"},"content":" // the parser object contains all the current user input line information","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":" parser.parse(userInput);","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Ella-e"},"content":" // check for end the session","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"Ella-e"},"content":" if (parser.getCurrentKey().equals(KeyEnum.EXITKEY)){","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"Ella-e"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":" // continue for the functionality","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"Ella-e"},"content":" switch (parser.getCurrentKey()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"Ella-e"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-22"},{"lineNumber":39,"author":{"gitId":"Ella-e"},"content":" case TODO:","lastModifiedDate":"2024-01-22"},{"lineNumber":40,"author":{"gitId":"Ella-e"},"content":" case EVENT:","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"Ella-e"},"content":" Task task \u003d tasks.addTask(parser.getInputDetail(), parser.getFrom(), parser.getTo(), parser.getCurrentKey());","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"Ella-e"},"content":" storage.writeTasksToFile(tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"Ella-e"},"content":" ui.onAddSuccess(task, tasks.getNumOfTasks());","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"Ella-e"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":45,"author":{"gitId":"Ella-e"},"content":" case LIST:","lastModifiedDate":"2024-01-22"},{"lineNumber":46,"author":{"gitId":"Ella-e"},"content":" ui.showList(tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"Ella-e"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":48,"author":{"gitId":"Ella-e"},"content":" case MARK:","lastModifiedDate":"2024-01-22"},{"lineNumber":49,"author":{"gitId":"Ella-e"},"content":" Task markedTask \u003d tasks.markTaskById(parser.getIndex(), true);","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"Ella-e"},"content":" storage.writeTasksToFile(tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"Ella-e"},"content":" ui.onMarkDone(markedTask);","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"Ella-e"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":53,"author":{"gitId":"Ella-e"},"content":" case UNMARK:","lastModifiedDate":"2024-01-22"},{"lineNumber":54,"author":{"gitId":"Ella-e"},"content":" Task unMarkedTask \u003d tasks.markTaskById(parser.getIndex(), false);","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"Ella-e"},"content":" storage.writeTasksToFile(tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"Ella-e"},"content":" ui.onUnmarkDone(unMarkedTask);","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"Ella-e"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":58,"author":{"gitId":"Ella-e"},"content":" case DELETE:","lastModifiedDate":"2024-01-22"},{"lineNumber":59,"author":{"gitId":"Ella-e"},"content":" Task deletedTask \u003d tasks.deleteTaskById(parser.getIndex());","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"Ella-e"},"content":" storage.writeTasksToFile(tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"Ella-e"},"content":" ui.onDelete(deletedTask, tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"Ella-e"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":63,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":64,"author":{"gitId":"Ella-e"},"content":" } catch (BaseException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"Ella-e"},"content":" ui.showErrorMsg(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"Ella-e"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"Ella-e"},"content":" ui.showLoadingError();","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":69,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":70,"author":{"gitId":"Ella-e"},"content":" ui.onExit();","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":72,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-22"},{"lineNumber":74,"author":{"gitId":"Ella-e"},"content":" Duke duke \u003d new Duke(\"./data/duke.txt\");","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"Ella-e"},"content":" duke.run();","lastModifiedDate":"2024-01-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"Ella-e":73,"-":4}},{"path":"src/main/java/KeyEnum.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"public enum KeyEnum {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":" EXITKEY(\"bye\"), LIST(\"list\"), MARK(\"mark\"), UNMARK(\"unmark\"), EVENT(\"event\"), DEADLINE(\"deadline\"), TODO(\"todo\"), DELETE(\"delete\"),INVALID(\"invalid\");","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":" private String detail;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":" KeyEnum(String detail) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":" this.detail \u003d detail;","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":" return this.detail;","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Ella-e":13}},{"path":"src/main/java/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"import exceptions.EmptyBodyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"import exceptions.InvalidKeyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"import exceptions.WrongFormatException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"public class Parser {","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":" private KeyEnum currentKey \u003d KeyEnum.INVALID;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":" private String inputDetail;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":" private String to;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":" private String from;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":" private Integer index;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":" public void parse(String userInput) throws InvalidKeyException, EmptyBodyException, WrongFormatException {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":" String[] userInputSplit \u003d userInput.split(\" \");","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":" this.determineCurrentKey(userInputSplit[0]);","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":" switch (this.currentKey) {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":" if (userInput.length() \u003c\u003d 9) {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":" throw new EmptyBodyException();","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":" inputDetail \u003d userInput.substring(9, userInput.indexOf(\"/by\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"content":" to \u003d userInput.substring(userInput.indexOf(\"/by\")+4);","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Ella-e"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":" throw new WrongFormatException(\"\\\"deadline content /by yyyy-mm-dd\\\"\");","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Ella-e"},"content":" case TODO:","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":" if (userInput.length() \u003c\u003d 5) {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":" throw new EmptyBodyException();","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Ella-e"},"content":" inputDetail \u003d userInput.substring(5);","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Ella-e"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"Ella-e"},"content":" case EVENT:","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":" if (userInput.length() \u003c\u003d 6) {","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Ella-e"},"content":" throw new EmptyBodyException();","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"Ella-e"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"Ella-e"},"content":" inputDetail \u003d userInput.substring(6, userInput.indexOf(\"/from\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"Ella-e"},"content":" from \u003d userInput.substring(userInput.indexOf(\"/from\")+6, userInput.indexOf(\"/to\")-1);","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"Ella-e"},"content":" to \u003d userInput.substring(userInput.indexOf(\"/to\")+4);","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"Ella-e"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"Ella-e"},"content":" throw new WrongFormatException(\"\\\"deadline content /from time /to time\\\"\");","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"Ella-e"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"Ella-e"},"content":" case MARK:","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"Ella-e"},"content":" case UNMARK:","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"Ella-e"},"content":" case DELETE:","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"Ella-e"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"Ella-e"},"content":" this.index \u003d new Integer(userInputSplit[1]) - 1;","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"Ella-e"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"Ella-e"},"content":" throw new InvalidKeyException(\"Please use a valid integer as key\");","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"Ella-e"},"content":" public void determineCurrentKey(String userInputKey) {","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"Ella-e"},"content":" switch (userInputKey) {","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"Ella-e"},"content":" case \"bye\":","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"Ella-e"},"content":" currentKey \u003d KeyEnum.EXITKEY;","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"Ella-e"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"Ella-e"},"content":" case \"list\":","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"Ella-e"},"content":" currentKey \u003d KeyEnum.LIST;","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"Ella-e"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"Ella-e"},"content":" case \"mark\":","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"Ella-e"},"content":" currentKey \u003d KeyEnum.MARK;","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"Ella-e"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"Ella-e"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"Ella-e"},"content":" currentKey \u003d KeyEnum.UNMARK;","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"Ella-e"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"Ella-e"},"content":" case \"event\":","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"Ella-e"},"content":" currentKey \u003d KeyEnum.EVENT;","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"Ella-e"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"Ella-e"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"Ella-e"},"content":" currentKey \u003d KeyEnum.DEADLINE;","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"Ella-e"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"Ella-e"},"content":" case \"todo\":","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"Ella-e"},"content":" currentKey \u003d KeyEnum.TODO;","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"Ella-e"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"Ella-e"},"content":" case \"delete\":","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"Ella-e"},"content":" currentKey \u003d KeyEnum.DELETE;","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"Ella-e"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"Ella-e"},"content":" if (this.currentKey.equals(KeyEnum.INVALID)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"Ella-e"},"content":" // raise InvalidKeyException","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"Ella-e"},"content":" throw new InvalidKeyException();","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"Ella-e"},"content":" public KeyEnum getCurrentKey() {","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"Ella-e"},"content":" return currentKey;","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"Ella-e"},"content":" public void setCurrentKey(KeyEnum currentKey) {","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"Ella-e"},"content":" this.currentKey \u003d currentKey;","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"Ella-e"},"content":" public String getInputDetail() {","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"Ella-e"},"content":" return inputDetail;","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"Ella-e"},"content":" public void setInputDetail(String inputDetail) {","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"Ella-e"},"content":" this.inputDetail \u003d inputDetail;","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"Ella-e"},"content":" public String getTo() {","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"Ella-e"},"content":" return to;","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"Ella-e"},"content":" public void setTo(String to) {","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"Ella-e"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"Ella-e"},"content":" public String getFrom() {","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"Ella-e"},"content":" return from;","lastModifiedDate":"2024-01-29"},{"lineNumber":116,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":117,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":118,"author":{"gitId":"Ella-e"},"content":" public void setFrom(String from) {","lastModifiedDate":"2024-01-29"},{"lineNumber":119,"author":{"gitId":"Ella-e"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-29"},{"lineNumber":120,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":121,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":122,"author":{"gitId":"Ella-e"},"content":" public Integer getIndex() {","lastModifiedDate":"2024-01-29"},{"lineNumber":123,"author":{"gitId":"Ella-e"},"content":" return index;","lastModifiedDate":"2024-01-29"},{"lineNumber":124,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":125,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":126,"author":{"gitId":"Ella-e"},"content":" public void setIndex(Integer index) {","lastModifiedDate":"2024-01-29"},{"lineNumber":127,"author":{"gitId":"Ella-e"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-29"},{"lineNumber":128,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":129,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Ella-e":129}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"import tasks.Deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"import tasks.Event;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"import tasks.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"import tasks.Todo;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"import java.io.File;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":"public class Storage {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":" private String filePath \u003d \"./data/duke.txt\";","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":" private File file;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":" public Storage() {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":" this.file \u003d new File(filePath);","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"content":" this.file \u003d new File(filePath);","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Ella-e"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":" public ArrayList\u003cTask\u003e load() throws IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Ella-e"},"content":" if (!this.file.getParentFile().exists())","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":" this.file.getParentFile().mkdirs();","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":" if (!this.file.exists())","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Ella-e"},"content":" this.file.createNewFile();","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Ella-e"},"content":" return this.readFile();","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Ella-e"},"content":" * read content of the file into task list.","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":" * @return task list read from file","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"Ella-e"},"content":" * @throws FileNotFoundException if the file is not found","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"Ella-e"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"Ella-e"},"content":" private ArrayList\u003cTask\u003e readFile() throws FileNotFoundException{","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"Ella-e"},"content":" ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"Ella-e"},"content":" Scanner s \u003d new Scanner(file); // create a Scanner using the File as the source","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"Ella-e"},"content":" while (s.hasNext()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"Ella-e"},"content":" String currentTaskString \u003d s.nextLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"Ella-e"},"content":" Task newTask \u003d this.stringToTask(currentTaskString);","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"Ella-e"},"content":" taskList.add(newTask);","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"Ella-e"},"content":" return taskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"Ella-e"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"Ella-e"},"content":" * write all the tasks in the task list to the file stored","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"Ella-e"},"content":" * @param taskList","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"Ella-e"},"content":" * @throws IOException","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"Ella-e"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"Ella-e"},"content":" public void writeTasksToFile(TaskList taskList) throws IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"Ella-e"},"content":" FileWriter fw \u003d new FileWriter(this.filePath);","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"Ella-e"},"content":" for(int i \u003d 0; i\u003c taskList.getNumOfTasks(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"Ella-e"},"content":" fw.write(taskList.getTaskInfileStringFormat(i) + \"\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"Ella-e"},"content":" fw.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"Ella-e"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"Ella-e"},"content":" * Change task from string format to task object","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"Ella-e"},"content":" * @param str String format of the task","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"Ella-e"},"content":" * @return The respective task object","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"Ella-e"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"Ella-e"},"content":" private Task stringToTask(String str) {","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"Ella-e"},"content":" String[] strSplit \u003d str.split(\"\\\\|\");","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"Ella-e"},"content":" Boolean status \u003d strSplit[1].equals(\"1\");","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"Ella-e"},"content":" String detail \u003d strSplit[2];","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"Ella-e"},"content":" Task task \u003d new Task(status, detail);","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"Ella-e"},"content":" switch (strSplit[0]) {","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"Ella-e"},"content":" case \"T\":","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"Ella-e"},"content":" task \u003d new Todo(status, detail);","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"Ella-e"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"Ella-e"},"content":" case \"D\":","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"Ella-e"},"content":" String by \u003d strSplit[3];","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"Ella-e"},"content":" task \u003d new Deadline(status, detail, by);","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"Ella-e"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"Ella-e"},"content":" case \"E\":","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"Ella-e"},"content":" String from \u003d strSplit[3];","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"Ella-e"},"content":" String to \u003d strSplit[4];","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"Ella-e"},"content":" task \u003d new Event(status, detail, from, to);","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"Ella-e"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"Ella-e"},"content":" return task;","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Ella-e":93}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"import exceptions.InvalidDateTimeException;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"import exceptions.InvalidKeyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"import exceptions.WrongFormatException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"import tasks.Deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"import tasks.Event;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"import tasks.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"import tasks.Todo;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":"public class TaskList {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":" public TaskList() {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Ella-e"},"content":" public Integer getNumOfTasks() {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":" return this.tasks.size();","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Ella-e"},"content":" public String getTaskInfileStringFormat(Integer i) {","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":" return this.tasks.get(i).inFileStringFormat();","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Ella-e"},"content":" public void listTask() {","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Ella-e"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"Ella-e"},"content":" System.out.println((i+1)+\". \" + tasks.get(i));","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"Ella-e"},"content":" public Task addTask(String detail, String from, String to, KeyEnum currentKey) throws WrongFormatException, InvalidDateTimeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"Ella-e"},"content":" Task task \u003d null;","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"Ella-e"},"content":" switch (currentKey) {","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"Ella-e"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"Ella-e"},"content":" task \u003d new Deadline(false, detail, to);","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"Ella-e"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"Ella-e"},"content":" case TODO:","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"Ella-e"},"content":" task \u003d new Todo(false, detail);","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"Ella-e"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"Ella-e"},"content":" case EVENT:","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"Ella-e"},"content":" task \u003d new Event(false, detail, from, to);","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"Ella-e"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"Ella-e"},"content":" // Throw empty body exception if the added","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"Ella-e"},"content":" if (task\u003d\u003dnull || detail.length() \u003d\u003d 0) {","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"Ella-e"},"content":" throw new WrongFormatException(\"The task body can not be empty. Please specify the task you want to add.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"Ella-e"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"Ella-e"},"content":" return task;","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"Ella-e"},"content":" public Task markTaskById(Integer id, Boolean status) throws IOException, InvalidKeyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"Ella-e"},"content":" // Test if the id is out of bound","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"Ella-e"},"content":" if (id \u003e\u003d this.getNumOfTasks()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"Ella-e"},"content":" throw new InvalidKeyException(\"Id out of bound\");","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"Ella-e"},"content":" this.tasks.get(id).setStatus(status);","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"Ella-e"},"content":" return this.tasks.get(id);","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"Ella-e"},"content":" public Task deleteTaskById(Integer id) throws IOException, InvalidKeyException{","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"Ella-e"},"content":" // Test if the id is out of bound","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"Ella-e"},"content":" if (id \u003e\u003d this.getNumOfTasks()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"Ella-e"},"content":" throw new InvalidKeyException(\"Id out of bound\");","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"Ella-e"},"content":" Task taskToDelete \u003d this.tasks.get(id);","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"Ella-e"},"content":" this.tasks.remove(taskToDelete);","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"Ella-e"},"content":" return taskToDelete;","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Ella-e":76}},{"path":"src/main/java/UI.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"import tasks.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"public class UI {","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":" private Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":" public void onEnter() {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":" System.out.println(\"Hello! I\u0027m Plaudern\\nWhat can I do for you?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":" public void showList(TaskList taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":" taskList.listTask();","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":" public void onAddSuccess(Task task, Integer count) {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":" System.out.println(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":" this.showTaskListCount(count);","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Ella-e"},"content":" public void onMarkDone(Task task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":" System.out.println(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":" public void onUnmarkDone(Task task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Ella-e"},"content":" System.out.println(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"Ella-e"},"content":" public void onDelete(Task task, TaskList taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Ella-e"},"content":" System.out.println(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":" this.showTaskListCount(taskList.getNumOfTasks());","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"Ella-e"},"content":" public void showErrorMsg(String msg) {","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"Ella-e"},"content":" System.out.println(msg);","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"Ella-e"},"content":" public void showLoadingError() {","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"Ella-e"},"content":" System.out.println(\"Error occur when initiating the resources.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"Ella-e"},"content":" public String getUserInput() {","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"Ella-e"},"content":" return this.scanner.nextLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"Ella-e"},"content":" public void onExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"Ella-e"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"Ella-e"},"content":" public void showTaskListCount(Integer count) {","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"Ella-e"},"content":" System.out.println(\"Now you have \"+ count +\" tasks in the list.\" );","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Ella-e":58}},{"path":"src/main/java/exceptions/BaseException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"package exceptions;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"public class BaseException extends RuntimeException{","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":" public BaseException() {","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":" super();","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":" public BaseException(String message, Throwable cause) {","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":" super(message, cause);","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":" public BaseException(String message){","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":" super(message);","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":" public BaseException(Throwable cause) {","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":" super(cause);","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Ella-e":20}},{"path":"src/main/java/exceptions/EmptyBodyException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"package exceptions;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"public class EmptyBodyException extends BaseException{","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":" public EmptyBodyException() {","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":" super(\"!!!ERROR: Please specify the content of the task you want to add.\");","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":" public EmptyBodyException(String message) {","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":" super(message);","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Ella-e":11}},{"path":"src/main/java/exceptions/InvalidDateTimeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"package exceptions;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"public class InvalidDateTimeException extends BaseException{","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":" public InvalidDateTimeException() {","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":" super(\"Incorrect format of date, please follow the convention: yyyy-mm-dd\");","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Ella-e":7}},{"path":"src/main/java/exceptions/InvalidKeyException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"package exceptions;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"public class InvalidKeyException extends BaseException{","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":" public InvalidKeyException() {","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":" super(\"!!!ERROR: Sorry we can\u0027t recognize your instruction, please use valid one.\");","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":" public InvalidKeyException(String message) {","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":" super(message);","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Ella-e":11}},{"path":"src/main/java/exceptions/WrongFormatException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"package exceptions;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"public class WrongFormatException extends BaseException{","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":" public WrongFormatException() {","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":" public WrongFormatException(String message) {","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":" super(\"!!!ERROR: Incorrect instruction format. The correct format is: \" + message);","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Ella-e":11}},{"path":"src/main/java/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"package tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"import exceptions.InvalidDateTimeException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"import tasks.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"import utils.DukeDateFormater;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":" private LocalDate by;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":" private DukeDateFormater formater \u003d new DukeDateFormater();","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":" public Deadline(Boolean status, String detail, String by) throws DateTimeParseException {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":" super(status, detail);","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":" this.by \u003d this.formater.stringToDate(by);","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":" throw new InvalidDateTimeException();","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":" public String inFileStringFormat() {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":" return \"D|\" + super.inFileStringFormat() + \"|\" + this.by.toString();","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"Ella-e"},"content":" return \"[D]\" + super.toString() + \"(by: \" + this.formater.dateToString(this.by) + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Ella-e":32}},{"path":"src/main/java/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"package tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"import tasks.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":" private String start;","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":" private String by;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":" public Event(Boolean status, String detail, String start, String by) {","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":" super(status, detail);","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":" public String inFileStringFormat() {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":" return \"E|\" + super.inFileStringFormat() + \"|\" + this.start + \"|\" + this.by;","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":" return \"[E]\" + super.toString() + \"(from: \" + start + \" to: \" + by + \")\";","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Ella-e":23}},{"path":"src/main/java/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"package tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"public class Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":" private Boolean status;","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":" private String detail;","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":" public Task(Boolean status, String detail) {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":" this.status \u003d status;","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":" this.detail \u003d detail;","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":" public Boolean getStatus() {","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":" return status;","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":" public void setStatus(Boolean status) {","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":" this.status \u003d status;","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":" public String getDetail() {","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":" return detail;","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":" public void setDetail(String detail) {","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":" this.detail \u003d detail;","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":" public String inFileStringFormat() {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":" String intStatus \u003d this.status? \"1\":\"0\";","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Ella-e"},"content":" return intStatus + \"|\" + this.detail;","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"Ella-e"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":" if (this.status) {","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"Ella-e"},"content":" return \"[X] \" + this.detail;","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":" } else {","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"Ella-e"},"content":" return \"[ ] \" + this.detail;","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":39,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":40,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Ella-e":40}},{"path":"src/main/java/tasks/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"package tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":" public Todo(Boolean status, String detail) {","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":" super(status, detail);","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":" public String inFileStringFormat() {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":" return \"T|\" + super.inFileStringFormat();","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Ella-e":17}},{"path":"src/main/java/utils/DukeDateFormater.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"package utils;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"import java.time.temporal.ChronoUnit;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"public class DukeDateFormater {","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":" public LocalDate stringToDate(String dateStr) {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":" return LocalDate.parse(dateStr);","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":" public String dateToString(LocalDate date) {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":" return date.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Ella-e":14}},{"path":"src/main/test/DukeDateFormaterTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"import org.junit.Assert;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"import org.junit.Test;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"import utils.DukeDateFormater;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":"public class DukeDateFormaterTest {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":" public void testFormatDate() {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":" DukeDateFormater formater \u003d new DukeDateFormater();","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":" // Format date success - the string is valid","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":" LocalDate date \u003d formater.stringToDate(\"2019-12-01\");","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":" Assert.assertEquals(\"2019-12-01\", date.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":" // Format date fail - the string is not in valid date format","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":" Assert.assertThrows(DateTimeParseException.class, ()-\u003e {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":" LocalDate date2 \u003d formater.stringToDate(\"2019-12-99\");","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":" });","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":" // Format date fail - the string is not in valid date format","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"content":" Assert.assertThrows(DateTimeParseException.class, ()-\u003e {","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Ella-e"},"content":" LocalDate date2 \u003d formater.stringToDate(\"2019/12/01\");","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":" });","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":" // Format date fail - the string is not in valid date format","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Ella-e"},"content":" Assert.assertThrows(DateTimeParseException.class, ()-\u003e {","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":" LocalDate date2 \u003d formater.stringToDate(\"abca-bc-ab\");","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":" });","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Ella-e":32}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"todo borrow book","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"mark 3","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"mark 2","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":"unmark 3","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"bye","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Ella-e":11}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"# duke.Duke project template","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":"1. Open Intellij (if you are not in the welcome screen, click `duke.storage.Storage` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2024-01-30"},{"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":"Ella-e"},"content":"3. After that, locate the `src/main/java/duke.Duke.java` file, right-click it, and choose `Run duke.Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Ella-e":3,"-":21}},{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"T|0|eat","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"D|0|eat |2002-11-29","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"E|1|eat |11|b","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Ella-e":3}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"package duke;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"import duke.exceptions.BaseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"import duke.tasks.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"import duke.tasks.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"import duke.ui.UI;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":"import duke.utils.KeyEnum;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":"import duke.utils.Parser;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":" private Storage storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":" private UI ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":" public Duke(String filePath) {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":" this.ui \u003d new UI();","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":" this.storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":" this.tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Ella-e"},"content":" ui.showLoadingError();","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":" this.tasks \u003d new TaskList();","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":" public void run(){","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":" ui.onEnter();","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Ella-e"},"content":" while (true) {","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"Ella-e"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Ella-e"},"content":" String userInput \u003d ui.getUserInput();","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"Ella-e"},"content":" // use parser to process the userInput","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":" // the parser object contains all the current user input line information","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Ella-e"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":" parser.parse(userInput);","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"Ella-e"},"content":" // check for end the session","lastModifiedDate":"2024-01-22"},{"lineNumber":39,"author":{"gitId":"Ella-e"},"content":" if (parser.getCurrentKey().equals(KeyEnum.EXITKEY)){","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"Ella-e"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":42,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":43,"author":{"gitId":"Ella-e"},"content":" // continue for the functionality","lastModifiedDate":"2024-01-22"},{"lineNumber":44,"author":{"gitId":"Ella-e"},"content":" switch (parser.getCurrentKey()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"Ella-e"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-22"},{"lineNumber":46,"author":{"gitId":"Ella-e"},"content":" case TODO:","lastModifiedDate":"2024-01-22"},{"lineNumber":47,"author":{"gitId":"Ella-e"},"content":" case EVENT:","lastModifiedDate":"2024-01-22"},{"lineNumber":48,"author":{"gitId":"Ella-e"},"content":" Task task \u003d tasks.addTask(parser.getInputDetail(), parser.getFrom(), parser.getTo(), parser.getCurrentKey());","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"Ella-e"},"content":" storage.writeTasksToFile(tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"Ella-e"},"content":" ui.onAddSuccess(task, tasks.getNumOfTasks());","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"Ella-e"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":52,"author":{"gitId":"Ella-e"},"content":" case LIST:","lastModifiedDate":"2024-01-22"},{"lineNumber":53,"author":{"gitId":"Ella-e"},"content":" ui.showList(tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"Ella-e"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":55,"author":{"gitId":"Ella-e"},"content":" case MARK:","lastModifiedDate":"2024-01-22"},{"lineNumber":56,"author":{"gitId":"Ella-e"},"content":" Task markedTask \u003d tasks.markTaskById(parser.getIndex(), true);","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"Ella-e"},"content":" storage.writeTasksToFile(tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"Ella-e"},"content":" ui.onMarkDone(markedTask);","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"Ella-e"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":60,"author":{"gitId":"Ella-e"},"content":" case UNMARK:","lastModifiedDate":"2024-01-22"},{"lineNumber":61,"author":{"gitId":"Ella-e"},"content":" Task unMarkedTask \u003d tasks.markTaskById(parser.getIndex(), false);","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"Ella-e"},"content":" storage.writeTasksToFile(tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"Ella-e"},"content":" ui.onUnmarkDone(unMarkedTask);","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"Ella-e"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":65,"author":{"gitId":"Ella-e"},"content":" case DELETE:","lastModifiedDate":"2024-01-22"},{"lineNumber":66,"author":{"gitId":"Ella-e"},"content":" Task deletedTask \u003d tasks.deleteTaskById(parser.getIndex());","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"Ella-e"},"content":" storage.writeTasksToFile(tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"Ella-e"},"content":" ui.onDelete(deletedTask, tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"Ella-e"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":70,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":71,"author":{"gitId":"Ella-e"},"content":" } catch (BaseException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"Ella-e"},"content":" ui.showErrorMsg(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"Ella-e"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"Ella-e"},"content":" ui.showLoadingError();","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":76,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":77,"author":{"gitId":"Ella-e"},"content":" ui.onExit();","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":79,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":80,"author":{"gitId":"Ella-e"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-22"},{"lineNumber":81,"author":{"gitId":"Ella-e"},"content":" Duke duke \u003d new Duke(\"./data/duke.txt\");","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"Ella-e"},"content":" duke.run();","lastModifiedDate":"2024-01-22"},{"lineNumber":83,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":84,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"Ella-e":82,"-":2}},{"path":"src/main/java/duke/exceptions/BaseException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"package duke.exceptions;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"public class BaseException extends RuntimeException{","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":" public BaseException() {","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":" super();","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":" public BaseException(String message, Throwable cause) {","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":" super(message, cause);","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":" public BaseException(String message){","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":" super(message);","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":" public BaseException(Throwable cause) {","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":" super(cause);","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Ella-e":20}},{"path":"src/main/java/duke/exceptions/EmptyBodyException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"package duke.exceptions;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"public class EmptyBodyException extends BaseException{","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":" public EmptyBodyException() {","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":" super(\"!!!ERROR: Please specify the content of the task you want to add.\");","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":" public EmptyBodyException(String message) {","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":" super(message);","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Ella-e":11}},{"path":"src/main/java/duke/exceptions/InvalidDateTimeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"package duke.exceptions;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"public class InvalidDateTimeException extends BaseException{","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":" public InvalidDateTimeException() {","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":" super(\"Incorrect format of date, please follow the convention: yyyy-mm-dd\");","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Ella-e":7}},{"path":"src/main/java/duke/exceptions/InvalidKeyException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"package duke.exceptions;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"public class InvalidKeyException extends BaseException{","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":" public InvalidKeyException() {","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":" super(\"!!!ERROR: Sorry we can\u0027t recognize your instruction, please use valid one.\");","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":" public InvalidKeyException(String message) {","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":" super(message);","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Ella-e":11}},{"path":"src/main/java/duke/exceptions/WrongFormatException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"package duke.exceptions;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"public class WrongFormatException extends BaseException{","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":" public WrongFormatException() {","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":" public WrongFormatException(String message) {","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":" super(\"!!!ERROR: Incorrect instruction format. The correct format is: \" + message);","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Ella-e":11}},{"path":"src/main/java/duke/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"package duke.storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"import duke.tasks.*;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"import java.io.File;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":"public class Storage {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":" private String filePath \u003d \"./data/duke.txt\";","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":" private File file;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":" public Storage() {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":" this.file \u003d new File(filePath);","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":" this.file \u003d new File(filePath);","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":" public ArrayList\u003cTask\u003e load() throws IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":" if (!this.file.getParentFile().exists())","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Ella-e"},"content":" this.file.getParentFile().mkdirs();","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":" if (!this.file.exists())","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":" this.file.createNewFile();","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Ella-e"},"content":" return this.readFile();","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"Ella-e"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":" * read content of the file into task list.","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Ella-e"},"content":" * @return task list read from file","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":" * @throws FileNotFoundException if the file is not found","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"Ella-e"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"Ella-e"},"content":" private ArrayList\u003cTask\u003e readFile() throws FileNotFoundException{","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"Ella-e"},"content":" ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"Ella-e"},"content":" Scanner s \u003d new Scanner(file); // create a Scanner using the File as the source","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"Ella-e"},"content":" while (s.hasNext()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"Ella-e"},"content":" String currentTaskString \u003d s.nextLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"Ella-e"},"content":" Task newTask \u003d this.stringToTask(currentTaskString);","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"Ella-e"},"content":" taskList.add(newTask);","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"Ella-e"},"content":" return taskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"Ella-e"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"Ella-e"},"content":" * write all the duke.tasks in the task list to the file stored","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"Ella-e"},"content":" * @param taskList","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"Ella-e"},"content":" * @throws IOException","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"Ella-e"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"Ella-e"},"content":" public void writeTasksToFile(TaskList taskList) throws IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"Ella-e"},"content":" FileWriter fw \u003d new FileWriter(this.filePath);","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"Ella-e"},"content":" for(int i \u003d 0; i\u003c taskList.getNumOfTasks(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"Ella-e"},"content":" fw.write(taskList.getTaskInfileStringFormat(i) + \"\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"Ella-e"},"content":" fw.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"Ella-e"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"Ella-e"},"content":" * Change task from string format to task object","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"Ella-e"},"content":" * @param str String format of the task","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"Ella-e"},"content":" * @return The respective task object","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"Ella-e"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"Ella-e"},"content":" private Task stringToTask(String str) {","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"Ella-e"},"content":" String[] strSplit \u003d str.split(\"\\\\|\");","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"Ella-e"},"content":" Boolean status \u003d strSplit[1].equals(\"1\");","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"Ella-e"},"content":" String detail \u003d strSplit[2];","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"Ella-e"},"content":" Task task \u003d new Task(status, detail);","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"Ella-e"},"content":" switch (strSplit[0]) {","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"Ella-e"},"content":" case \"T\":","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"Ella-e"},"content":" task \u003d new Todo(status, detail);","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"Ella-e"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"Ella-e"},"content":" case \"D\":","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"Ella-e"},"content":" String by \u003d strSplit[3];","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"Ella-e"},"content":" task \u003d new Deadline(status, detail, by);","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"Ella-e"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"Ella-e"},"content":" case \"E\":","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"Ella-e"},"content":" String from \u003d strSplit[3];","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"Ella-e"},"content":" String to \u003d strSplit[4];","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"Ella-e"},"content":" task \u003d new Event(status, detail, from, to);","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"Ella-e"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"Ella-e"},"content":" return task;","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Ella-e":92}},{"path":"src/main/java/duke/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"package duke.tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"import duke.exceptions.InvalidDateTimeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"import duke.utils.DukeDateFormater;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":" private LocalDate by;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":" private DukeDateFormater formater \u003d new DukeDateFormater();","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":" public Deadline(Boolean status, String detail, String by) throws DateTimeParseException {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":" super(status, detail);","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":" this.by \u003d this.formater.stringToDate(by);","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":" throw new InvalidDateTimeException();","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Ella-e"},"content":" public String inFileStringFormat() {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":" return \"D|\" + super.inFileStringFormat() + \"|\" + this.by.toString();","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":" return \"[D]\" + super.toString() + \"(by: \" + this.formater.dateToString(this.by) + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Ella-e":31}},{"path":"src/main/java/duke/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"package duke.tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":" private String start;","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":" private String by;","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":" public Event(Boolean status, String detail, String start, String by) {","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":" super(status, detail);","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":" public String inFileStringFormat() {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":" return \"E|\" + super.inFileStringFormat() + \"|\" + this.start + \"|\" + this.by;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":" return \"[E]\" + super.toString() + \"(from: \" + start + \" to: \" + by + \")\";","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Ella-e":21}},{"path":"src/main/java/duke/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"package duke.tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"public class Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":" private Boolean status;","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":" private String detail;","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":" public Task(Boolean status, String detail) {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":" this.status \u003d status;","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":" this.detail \u003d detail;","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":" public Boolean getStatus() {","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":" return status;","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":" public void setStatus(Boolean status) {","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":" this.status \u003d status;","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":" public String getDetail() {","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":" return detail;","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":" public void setDetail(String detail) {","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":" this.detail \u003d detail;","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":" public String inFileStringFormat() {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":" String intStatus \u003d this.status? \"1\":\"0\";","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Ella-e"},"content":" return intStatus + \"|\" + this.detail;","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"Ella-e"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":" if (this.status) {","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"Ella-e"},"content":" return \"[X] \" + this.detail;","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":" } else {","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"Ella-e"},"content":" return \"[ ] \" + this.detail;","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":39,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":40,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Ella-e":40}},{"path":"src/main/java/duke/tasks/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"package duke.tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"import duke.exceptions.InvalidDateTimeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"import duke.exceptions.InvalidKeyException;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"import duke.exceptions.WrongFormatException;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"import duke.utils.KeyEnum;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"public class TaskList {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":" public TaskList() {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"content":" public Integer getNumOfTasks() {","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Ella-e"},"content":" return this.tasks.size();","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":" public String getTaskInfileStringFormat(Integer i) {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Ella-e"},"content":" return this.tasks.get(i).inFileStringFormat();","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Ella-e"},"content":" public void listTask() {","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Ella-e"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Ella-e"},"content":" System.out.println((i+1)+\". \" + tasks.get(i));","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":" public Task addTask(String detail, String from, String to, KeyEnum currentKey) throws WrongFormatException, InvalidDateTimeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"Ella-e"},"content":" Task task \u003d null;","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"Ella-e"},"content":" switch (currentKey) {","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"Ella-e"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"Ella-e"},"content":" task \u003d new Deadline(false, detail, to);","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"Ella-e"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"Ella-e"},"content":" case TODO:","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"Ella-e"},"content":" task \u003d new Todo(false, detail);","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"Ella-e"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"Ella-e"},"content":" case EVENT:","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"Ella-e"},"content":" task \u003d new Event(false, detail, from, to);","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"Ella-e"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"Ella-e"},"content":" // Throw empty body exception if the added","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"Ella-e"},"content":" if (task\u003d\u003dnull || detail.length() \u003d\u003d 0) {","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"Ella-e"},"content":" throw new WrongFormatException(\"The task body can not be empty. Please specify the task you want to add.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"Ella-e"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"Ella-e"},"content":" return task;","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"Ella-e"},"content":" public Task markTaskById(Integer id, Boolean status) throws IOException, InvalidKeyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"Ella-e"},"content":" // Test if the id is out of bound","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"Ella-e"},"content":" if (id \u003e\u003d this.getNumOfTasks()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"Ella-e"},"content":" throw new InvalidKeyException(\"Id out of bound\");","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"Ella-e"},"content":" this.tasks.get(id).setStatus(status);","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"Ella-e"},"content":" return this.tasks.get(id);","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"Ella-e"},"content":" public Task deleteTaskById(Integer id) throws IOException, InvalidKeyException{","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"Ella-e"},"content":" // Test if the id is out of bound","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"Ella-e"},"content":" if (id \u003e\u003d this.getNumOfTasks()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"Ella-e"},"content":" throw new InvalidKeyException(\"Id out of bound\");","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"Ella-e"},"content":" Task taskToDelete \u003d this.tasks.get(id);","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"Ella-e"},"content":" this.tasks.remove(taskToDelete);","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"Ella-e"},"content":" return taskToDelete;","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Ella-e":75}},{"path":"src/main/java/duke/tasks/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"package duke.tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":" public Todo(Boolean status, String detail) {","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":" super(status, detail);","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":" public String inFileStringFormat() {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":" return \"T|\" + super.inFileStringFormat();","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Ella-e":17}},{"path":"src/main/java/duke/ui/UI.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"package duke.ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"import duke.tasks.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"import duke.tasks.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":"public class UI {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":" private Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":" public void onEnter() {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":" System.out.println(\"Hello! I\u0027m Plaudern\\nWhat can I do for you?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":" public void showList(TaskList taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":" System.out.println(\"Here are the duke.tasks in your list:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":" taskList.listTask();","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":" public void onAddSuccess(Task task, Integer count) {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"content":" System.out.println(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Ella-e"},"content":" this.showTaskListCount(count);","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":" public void onMarkDone(Task task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Ella-e"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":" System.out.println(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Ella-e"},"content":" public void onUnmarkDone(Task task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Ella-e"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"Ella-e"},"content":" System.out.println(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":" public void onDelete(Task task, TaskList taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"Ella-e"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"Ella-e"},"content":" System.out.println(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"Ella-e"},"content":" this.showTaskListCount(taskList.getNumOfTasks());","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"Ella-e"},"content":" public void showErrorMsg(String msg) {","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"Ella-e"},"content":" System.out.println(msg);","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"Ella-e"},"content":" public void showLoadingError() {","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"Ella-e"},"content":" System.out.println(\"Error occur when initiating the resources.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"Ella-e"},"content":" public String getUserInput() {","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"Ella-e"},"content":" return this.scanner.nextLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"Ella-e"},"content":" public void onExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"Ella-e"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"Ella-e"},"content":" public void showTaskListCount(Integer count) {","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"Ella-e"},"content":" System.out.println(\"Now you have \"+ count +\" duke.tasks in the list.\" );","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Ella-e":61}},{"path":"src/main/java/duke/utils/DukeDateFormater.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"package duke.utils;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"public class DukeDateFormater {","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":" public LocalDate stringToDate(String dateStr) {","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":" return LocalDate.parse(dateStr);","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":" public String dateToString(LocalDate date) {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":" return date.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Ella-e":13}},{"path":"src/main/java/duke/utils/KeyEnum.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"package duke.utils;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"public enum KeyEnum {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":" EXITKEY(\"bye\"), LIST(\"list\"), MARK(\"mark\"), UNMARK(\"unmark\"), EVENT(\"event\"), DEADLINE(\"deadline\"), TODO(\"todo\"), DELETE(\"delete\"),INVALID(\"invalid\");","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":" private String detail;","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":" KeyEnum(String detail) {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":" this.detail \u003d detail;","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":" return this.detail;","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Ella-e":15}},{"path":"src/main/java/duke/utils/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"package duke.utils;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"import duke.exceptions.EmptyBodyException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"import duke.exceptions.InvalidKeyException;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"import duke.exceptions.WrongFormatException;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"public class Parser {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":" private KeyEnum currentKey \u003d KeyEnum.INVALID;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":" private String inputDetail;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":" private String to;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":" private String from;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":" private Integer index;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":" public void parse(String userInput) throws InvalidKeyException, EmptyBodyException, WrongFormatException {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":" String[] userInputSplit \u003d userInput.split(\" \");","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":" this.determineCurrentKey(userInputSplit[0]);","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":" switch (this.currentKey) {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":" if (userInput.length() \u003c\u003d 9) {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":" throw new EmptyBodyException();","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Ella-e"},"content":" inputDetail \u003d userInput.substring(9, userInput.indexOf(\"/by\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":" to \u003d userInput.substring(userInput.indexOf(\"/by\")+4);","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":" throw new WrongFormatException(\"\\\"deadline content /by yyyy-mm-dd\\\"\");","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":" case TODO:","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Ella-e"},"content":" if (userInput.length() \u003c\u003d 5) {","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Ella-e"},"content":" throw new EmptyBodyException();","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"Ella-e"},"content":" inputDetail \u003d userInput.substring(5);","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Ella-e"},"content":" case EVENT:","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":" if (userInput.length() \u003c\u003d 6) {","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"Ella-e"},"content":" throw new EmptyBodyException();","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"Ella-e"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"Ella-e"},"content":" inputDetail \u003d userInput.substring(6, userInput.indexOf(\"/from\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"Ella-e"},"content":" from \u003d userInput.substring(userInput.indexOf(\"/from\")+6, userInput.indexOf(\"/to\")-1);","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"Ella-e"},"content":" to \u003d userInput.substring(userInput.indexOf(\"/to\")+4);","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"Ella-e"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"Ella-e"},"content":" throw new WrongFormatException(\"\\\"deadline content /from time /to time\\\"\");","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"Ella-e"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"Ella-e"},"content":" case MARK:","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"Ella-e"},"content":" case UNMARK:","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"Ella-e"},"content":" case DELETE:","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"Ella-e"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"Ella-e"},"content":" this.index \u003d new Integer(userInputSplit[1]) - 1;","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"Ella-e"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"Ella-e"},"content":" throw new InvalidKeyException(\"Please use a valid integer as key\");","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"Ella-e"},"content":" public void determineCurrentKey(String userInputKey) {","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"Ella-e"},"content":" switch (userInputKey) {","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"Ella-e"},"content":" case \"bye\":","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"Ella-e"},"content":" currentKey \u003d KeyEnum.EXITKEY;","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"Ella-e"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"Ella-e"},"content":" case \"list\":","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"Ella-e"},"content":" currentKey \u003d KeyEnum.LIST;","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"Ella-e"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"Ella-e"},"content":" case \"mark\":","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"Ella-e"},"content":" currentKey \u003d KeyEnum.MARK;","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"Ella-e"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"Ella-e"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"Ella-e"},"content":" currentKey \u003d KeyEnum.UNMARK;","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"Ella-e"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"Ella-e"},"content":" case \"event\":","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"Ella-e"},"content":" currentKey \u003d KeyEnum.EVENT;","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"Ella-e"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"Ella-e"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"Ella-e"},"content":" currentKey \u003d KeyEnum.DEADLINE;","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"Ella-e"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"Ella-e"},"content":" case \"todo\":","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"Ella-e"},"content":" currentKey \u003d KeyEnum.TODO;","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"Ella-e"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"Ella-e"},"content":" case \"delete\":","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"Ella-e"},"content":" currentKey \u003d KeyEnum.DELETE;","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"Ella-e"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"Ella-e"},"content":" if (this.currentKey.equals(KeyEnum.INVALID)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"Ella-e"},"content":" // raise InvalidKeyException","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"Ella-e"},"content":" throw new InvalidKeyException();","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"Ella-e"},"content":" public KeyEnum getCurrentKey() {","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"Ella-e"},"content":" return currentKey;","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"Ella-e"},"content":" public void setCurrentKey(KeyEnum currentKey) {","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"Ella-e"},"content":" this.currentKey \u003d currentKey;","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"Ella-e"},"content":" public String getInputDetail() {","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"Ella-e"},"content":" return inputDetail;","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"Ella-e"},"content":" public void setInputDetail(String inputDetail) {","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"Ella-e"},"content":" this.inputDetail \u003d inputDetail;","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"Ella-e"},"content":" public String getTo() {","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"Ella-e"},"content":" return to;","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"Ella-e"},"content":" public void setTo(String to) {","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"Ella-e"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":116,"author":{"gitId":"Ella-e"},"content":" public String getFrom() {","lastModifiedDate":"2024-01-29"},{"lineNumber":117,"author":{"gitId":"Ella-e"},"content":" return from;","lastModifiedDate":"2024-01-29"},{"lineNumber":118,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":119,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":120,"author":{"gitId":"Ella-e"},"content":" public void setFrom(String from) {","lastModifiedDate":"2024-01-29"},{"lineNumber":121,"author":{"gitId":"Ella-e"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-29"},{"lineNumber":122,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":123,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":124,"author":{"gitId":"Ella-e"},"content":" public Integer getIndex() {","lastModifiedDate":"2024-01-29"},{"lineNumber":125,"author":{"gitId":"Ella-e"},"content":" return index;","lastModifiedDate":"2024-01-29"},{"lineNumber":126,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":127,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":128,"author":{"gitId":"Ella-e"},"content":" public void setIndex(Integer index) {","lastModifiedDate":"2024-01-29"},{"lineNumber":129,"author":{"gitId":"Ella-e"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-29"},{"lineNumber":130,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":131,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Ella-e":131}},{"path":"src/main/test/DukeDateFormaterTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"import org.junit.Assert;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"import org.junit.Test;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"import duke.utils.DukeDateFormater;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":"public class DukeDateFormaterTest {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":" public void testFormatDate() {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":" DukeDateFormater formater \u003d new DukeDateFormater();","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":" // Format date success - the string is valid","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":" LocalDate date \u003d formater.stringToDate(\"2019-12-01\");","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":" Assert.assertEquals(\"2019-12-01\", date.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":" // Format date fail - the string is not in valid date format","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":" Assert.assertThrows(DateTimeParseException.class, ()-\u003e {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":" LocalDate date2 \u003d formater.stringToDate(\"2019-12-99\");","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":" });","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":" // Format date fail - the string is not in valid date format","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"content":" Assert.assertThrows(DateTimeParseException.class, ()-\u003e {","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Ella-e"},"content":" LocalDate date2 \u003d formater.stringToDate(\"2019/12/01\");","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":" });","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":" // Format date fail - the string is not in valid date format","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Ella-e"},"content":" Assert.assertThrows(DateTimeParseException.class, ()-\u003e {","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":" LocalDate date2 \u003d formater.stringToDate(\"abca-bc-ab\");","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":" });","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Ella-e":32}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"todo borrow book","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"mark 3","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"mark 2","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":"unmark 3","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"bye","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Ella-e":11}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":"java -classpath ..\\bin duke.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Ella-e":1,"-":20}}] diff --git a/Ella-e_ip_master/commits.json b/Ella-e_ip_master/commits.json index 4eed8ab1..eabbc3c1 100644 --- a/Ella-e_ip_master/commits.json +++ b/Ella-e_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Ella-e":[{"date":"2024-01-21","commitResults":[{"hash":"94de7d549c35d530c7c15872dbedeca6dc288381","isMergeCommit":false,"messageTitle":"feat: Level-0: Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":6}}},{"hash":"a11e150073d5d4efa9672830c041d2e4c5e73d4d","isMergeCommit":false,"messageTitle":"feat: Level 1. Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":1}}}]},{"date":"2024-01-22","commitResults":[{"hash":"b7e948ab8112139e0742d36a7add6d1b5fe66c94","isMergeCommit":false,"messageTitle":"feat: Level 2. Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":1}}},{"hash":"47489eefabf97e503ef19678323e8cc0b3845ee1","isMergeCommit":false,"messageTitle":"feat: Level 3. Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":73,"deletions":8}}},{"hash":"cb411f211723d65ce775b24db3bbc0604cc0c98a","isMergeCommit":false,"messageTitle":"feat: Level 4. ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":85,"deletions":8}}},{"hash":"a43e36542de6e99d439a806e25c9397d8842ca23","isMergeCommit":false,"messageTitle":"feat: A-TextUiTesting: Test using the I/O redirection technique","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0},"java":{"insertions":12,"deletions":7}}},{"hash":"aa71d47b9482b9e969b5b3eac1a628d770647308","isMergeCommit":false,"messageTitle":"feat: Level 5. Handle Errors - check whether user input a valid instruction; check whether the instruction\u0027s body is emptyl; check if the format for the instruction is correct; check if the mark instruction provides a valid number that is within the availble task list range.","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":155,"deletions":25}}},{"hash":"e55ee16af5a4f5008e2f418d7330f318a726181e","isMergeCommit":false,"messageTitle":"feat: Level 6. Delete - delete tasks from list and error handling.","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":5}}},{"hash":"00f500c23ae6b764fa90c09007b135532ea58853","isMergeCommit":false,"messageTitle":"feat: A-Enums - Adopt enumerates for instruction keywords.","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":189,"deletions":133}}}]},{"date":"2024-01-29","commitResults":[{"hash":"7a7e7e376bcd2ae4855511ede5c41f53c206e0e1","isMergeCommit":false,"messageTitle":"feat: level-7: save into file","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":130,"deletions":3},"md":{"insertions":1,"deletions":1}}},{"hash":"1376a770cb5b6da77bee807fde252e12e5a5a37b","isMergeCommit":false,"messageTitle":"feat: Level-8 Store LocalDate object as the time for Deadline class. display the date object in a different form.","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":2},"java":{"insertions":60,"deletions":6}}},{"hash":"fafcfe5305af38339d9918a08f35768542f9d110","isMergeCommit":false,"messageTitle":"feat: refract the project to make it mroe OOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":3},"java":{"insertions":364,"deletions":268},"md":{"insertions":1,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"Ella-e":{"java":660,"md":1,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":13}},"authorContributionVariance":{"Ella-e":95577.52},"authorDisplayNameMap":{"Ella-e":"CS2103T-W08-2 MU Z..AOYU"}} +{"authorDailyContributionsMap":{"Ella-e":[{"date":"2024-01-21","commitResults":[{"hash":"94de7d549c35d530c7c15872dbedeca6dc288381","isMergeCommit":false,"messageTitle":"feat: Level-0: Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":6}}},{"hash":"a11e150073d5d4efa9672830c041d2e4c5e73d4d","isMergeCommit":false,"messageTitle":"feat: Level 1. Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":1}}}]},{"date":"2024-01-22","commitResults":[{"hash":"b7e948ab8112139e0742d36a7add6d1b5fe66c94","isMergeCommit":false,"messageTitle":"feat: Level 2. Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":1}}},{"hash":"47489eefabf97e503ef19678323e8cc0b3845ee1","isMergeCommit":false,"messageTitle":"feat: Level 3. Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":73,"deletions":8}}},{"hash":"cb411f211723d65ce775b24db3bbc0604cc0c98a","isMergeCommit":false,"messageTitle":"feat: Level 4. ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":85,"deletions":8}}},{"hash":"a43e36542de6e99d439a806e25c9397d8842ca23","isMergeCommit":false,"messageTitle":"feat: A-TextUiTesting: Test using the I/O redirection technique","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0},"java":{"insertions":12,"deletions":7}}},{"hash":"aa71d47b9482b9e969b5b3eac1a628d770647308","isMergeCommit":false,"messageTitle":"feat: Level 5. Handle Errors - check whether user input a valid instruction; check whether the instruction\u0027s body is emptyl; check if the format for the instruction is correct; check if the mark instruction provides a valid number that is within the availble task list range.","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":155,"deletions":25}}},{"hash":"e55ee16af5a4f5008e2f418d7330f318a726181e","isMergeCommit":false,"messageTitle":"feat: Level 6. Delete - delete tasks from list and error handling.","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":5}}},{"hash":"00f500c23ae6b764fa90c09007b135532ea58853","isMergeCommit":false,"messageTitle":"feat: A-Enums - Adopt enumerates for instruction keywords.","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":189,"deletions":133}}}]},{"date":"2024-01-29","commitResults":[{"hash":"7a7e7e376bcd2ae4855511ede5c41f53c206e0e1","isMergeCommit":false,"messageTitle":"feat: level-7: save into file","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":130,"deletions":3},"md":{"insertions":1,"deletions":1}}},{"hash":"1376a770cb5b6da77bee807fde252e12e5a5a37b","isMergeCommit":false,"messageTitle":"feat: Level-8 Store LocalDate object as the time for Deadline class. display the date object in a different form.","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":2},"java":{"insertions":60,"deletions":6}}},{"hash":"fafcfe5305af38339d9918a08f35768542f9d110","isMergeCommit":false,"messageTitle":"feat: refract the project to make it mroe OOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":3},"java":{"insertions":364,"deletions":268},"md":{"insertions":1,"deletions":1}}}]},{"date":"2024-01-30","commitResults":[{"hash":"50467ec3f27ff7bd9540557c48fe1b69e16e56ec","isMergeCommit":false,"messageTitle":"feat: put code into packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":2},"java":{"insertions":45,"deletions":37},"bat":{"insertions":1,"deletions":1},"md":{"insertions":3,"deletions":3}}}]}]},"authorFileTypeContributionMap":{"Ella-e":{"java":670,"md":3,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":14}},"authorContributionVariance":{"Ella-e":87823.63},"authorDisplayNameMap":{"Ella-e":"CS2103T-W08-2 MU Z..AOYU"}} diff --git a/HusseinSafwan02_ip_master/authorship.json b/HusseinSafwan02_ip_master/authorship.json index fe51488c..1b494e9d 100644 --- a/HusseinSafwan02_ip_master/authorship.json +++ b/HusseinSafwan02_ip_master/authorship.json @@ -1 +1 @@ -[] +[{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"HusseinSafwan02"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"HusseinSafwan02"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":4,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":5,"author":{"gitId":"HusseinSafwan02"},"content":" String cat \u003d \"(\\\\_/)\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"HusseinSafwan02"},"content":" \"( •,•)\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"HusseinSafwan02"},"content":" \"(\\\")_(\\\")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"HusseinSafwan02"},"content":" System.out.println(\"RAWR!\\n\" + cat);","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"HusseinSafwan02"},"content":" String intro \u003d \"____________________________________________________________\\r\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"HusseinSafwan02"},"content":" \" Hello! I\u0027m Mickey\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"HusseinSafwan02"},"content":" \" What can I do for you?\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"HusseinSafwan02"},"content":" \"____________________________________________________________\\r\\n\";","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"HusseinSafwan02"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"HusseinSafwan02"},"content":" String outro \u003d \"____________________________________________________________\\r\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"HusseinSafwan02"},"content":" \" Bye. See you soon!\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"HusseinSafwan02"},"content":" \"____________________________________________________________\\r\\n\";","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"HusseinSafwan02"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"HusseinSafwan02"},"content":" System.out.println(intro);","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"HusseinSafwan02"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"HusseinSafwan02"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"HusseinSafwan02"},"content":" String userInput;","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"HusseinSafwan02"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"HusseinSafwan02"},"content":" while(true) {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"HusseinSafwan02"},"content":" userInput \u003d sc.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"HusseinSafwan02"},"content":" if (userInput.equals(\"bye\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"HusseinSafwan02"},"content":" System.out.println(outro);","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"HusseinSafwan02"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"HusseinSafwan02"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"HusseinSafwan02"},"content":" System.out.println(userInput);","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"HusseinSafwan02"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"HusseinSafwan02"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"HusseinSafwan02"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"HusseinSafwan02":30,"-":4}}] diff --git a/HusseinSafwan02_ip_master/commits.json b/HusseinSafwan02_ip_master/commits.json index 164c726e..058aadb7 100644 --- a/HusseinSafwan02_ip_master/commits.json +++ b/HusseinSafwan02_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"HusseinSafwan02":[]},"authorFileTypeContributionMap":{"HusseinSafwan02":{"java":0,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":0}},"authorContributionVariance":{"HusseinSafwan02":0.0},"authorDisplayNameMap":{"HusseinSafwan02":"CS2103T-T16-4 MUHA..SEIN"}} +{"authorDailyContributionsMap":{"HusseinSafwan02":[{"date":"2024-01-30","commitResults":[{"hash":"8df1c580a7ed3c407beb0b9815d312ef0fbb545d","isMergeCommit":false,"messageTitle":"Rename, Greet and Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":6}}},{"hash":"ad5e2fc5ec3c44dbbc7986c51ba6c3edef0fd18e","isMergeCommit":false,"messageTitle":"Echo and \"bye\"","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":4}}}]}]},"authorFileTypeContributionMap":{"HusseinSafwan02":{"java":30,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":0}},"authorContributionVariance":{"HusseinSafwan02":147.88887},"authorDisplayNameMap":{"HusseinSafwan02":"CS2103T-T16-4 MUHA..SEIN"}} diff --git a/KinTatHo_ip_master/authorship.json b/KinTatHo_ip_master/authorship.json index cba542bb..ea8865cd 100644 --- a/KinTatHo_ip_master/authorship.json +++ b/KinTatHo_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"KinTatHo"},"content":"# Yoda project template","lastModifiedDate":"2024-01-28"},{"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":"KinTatHo"},"content":"3. After that, locate the `src/main/java/Yoda.java` file, right-click it, and choose `Run Yoda.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-28"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"KinTatHo"},"content":"Greetings! Yoda, I am","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"KinTatHo"},"content":"Assist you, may I?","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"KinTatHo"},"content":"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⣤⠤⠐⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"KinTatHo"},"content":"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡌⡦⠊⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"KinTatHo"},"content":"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⣼⡊⢀⠔⠀⠀⣄⠤⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⣤⣄⣀⠀","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"KinTatHo"},"content":"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣶⠃⠉⠡⡠⠤⠊⠀⠠⣀⣀⡠⠔⠒⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣾⣿⢟⠿⠛⠛⠁","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"KinTatHo"},"content":"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⡇⠀⠀⠀⠀⠑⠶⠖⠊⠁⠀⠀⠀⡀⠀⠀⠀⢀⣠⣤⣤⡀⠀⠀⠀⠀⠀⢀⣠⣤⣶⣿⣿⠟⡱⠁⠀⠀⠀⠀","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"KinTatHo"},"content":"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⣾⣿⡇⠀⢀⡠⠀⠀⠀⠈⠑⢦⣄⣀⣀⣽⣦⣤⣾⣿⠿⠿⠿⣿⡆⠀⠀⢀⠺⣿⣿⣿⣿⡿⠁⡰⠁⠀⠀⠀⠀⠀","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"KinTatHo"},"content":"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣾⣿⣿⣧⣠⠊⣠⣶⣾⣿⣿⣶⣶⣿⣿⠿⠛⢿⣿⣫⢕⡠⢥⣈⠀⠙⠀⠰⣷⣿⣿⣿⡿⠋⢀⠜⠁⠀⠀⠀⠀⠀⠀","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"KinTatHo"},"content":"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⢿⣿⣿⣿⣿⣰⣿⣿⠿⣛⡛⢛⣿⣿⣟⢅⠀⠀⢿⣿⠕⢺⣿⡇⠩⠓⠂⢀⠛⠛⠋⢁⣠⠞⠁⠀⠀⠀⠀⠀⠀⠀⠀","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"KinTatHo"},"content":"⠘⢶⡶⢶⣶⣦⣤⣤⣤⣤⣤⣀⣀⣀⣀⡀⠀⠘⣿⣿⣿⠟⠁⡡⣒⣬⢭⢠⠝⢿⡡⠂⠀⠈⠻⣯⣖⣒⣺⡭⠂⢀⠈⣶⣶⣾⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"KinTatHo"},"content":"⠀⠀⠙⠳⣌⡛⢿⣿⣿⣿⣿⣿⣿⣿⣿⣻⣵⣨⣿⣿⡏⢀⠪⠎⠙⠿⣋⠴⡃⢸⣷⣤⣶⡾⠋⠈⠻⣶⣶⣶⣷⣶⣷⣿⣟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"KinTatHo"},"content":"⠀⠀⠀⠀⠈⠛⢦⣌⡙⠛⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡀⠀⠀⠩⠭⡭⠴⠊⢀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣿⣿⣿⣿⣿⡇⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"KinTatHo"},"content":"⠀⠀⠀⠀⠀⠀⠀⠈⠙⠓⠦⣄⡉⠛⠛⠻⢿⣿⣿⣿⣷⡀⠀⠀⠀⠀⢀⣰⠋⠀⠀⠀⠀⠀⣀⣰⠤⣳⣿⣿⣿⣿⣟⠑⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"KinTatHo"},"content":"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠓⠒⠒⠶⢺⣿⣿⣿⣿⣦⣄⣀⣴⣿⣯⣤⣔⠒⠚⣒⣉⣉⣴⣾⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"KinTatHo"},"content":"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠛⠹⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"KinTatHo"},"content":"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣭⣉⣉⣤⣿⣿⣿⣿⣿⣿⡿⢀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"KinTatHo"},"content":"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⡁⡆⠙⢶⣀⠀⢀⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"KinTatHo"},"content":"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣴⣶⣾⣿⣟⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⢛⣩⣴⣿⠇⡇⠸⡆⠙⢷⣄⠻⣿⣦⡄⠀⠀⠀⠀⠀⠀","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"KinTatHo"},"content":"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣼⣿⣿⣿⣿⣿⣿⣿⣎⢻⣿⣿⣿⣿⣿⣿⣿⣭⣭⣭⣵⣶⣾⣿⣿⣿⠟⢰⢣⠀⠈⠀⠀⠙⢷⡎⠙⣿⣦⠀⠀⠀⠀⠀","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"KinTatHo"},"content":"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣼⣿⣿⣿⣿⣿⣿⣿⣿⡟⣿⡆⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠿⠟⠛⠋⠁⢀⠇⢸⡇⠀⠀⠀⠀⠈⠁⠀⢸⣿⡆⠀⠀⠀⠀","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"KinTatHo"},"content":"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡜⡿⡘⣿⣿⣿⣿⣿⣶⣶⣤⣤⣤⣤⣤⣤⣤⣴⡎⠖⢹⡇⠀⠀⠀⠀⠀⠀⠀⠀⣿⣷⡄⠀⠀⠀","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"KinTatHo"},"content":"⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⡀⠘⢿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠿⠛⠋⡟⠀⠀⣸⣷⣀⣤⣀⣀⣀⣤⣤⣾⣿⣿⣿⠀⠀⠀","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"KinTatHo"},"content":"⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣭⣓⡲⠬⢭⣙⡛⠿⣿⣿⣶⣦⣀⠀⡜⠀⠀⣰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"KinTatHo"},"content":"⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣭⣛⣓⠶⠦⠥⣀⠙⠋⠉⠉⠻⣄⣀⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"KinTatHo"},"content":"⠀⠀⠀⠀⠀⠀⠀⠀⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣶⣆⠐⣦⣠⣷⠊⠁⠀⠀⡭⠙⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡆⠀⠀","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"KinTatHo"},"content":"⠀⠀⠀⠀⠀⠀⠀⢠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⢉⣛⡛⢻⡗⠂⠀⢀⣷⣄⠈⢆⠉⠙⠻⢿⣿⣿⣿⣿⣿⠇⠀⠀","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"KinTatHo"},"content":"⠀⠀⠀⠀⠀⠀⠀⠘⣿⣿⡟⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⣉⢁⣴⣿⣿⣿⣾⡇⢀⣀⣼⡿⣿⣷⡌⢻⣦⡀⠀⠈⠙⠛⠿⠏⠀⠀⠀","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"KinTatHo"},"content":"⠀⠀⠀⠀⠀⠀⠀⠀⠙⢿⣿⡄⠙⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠛⠛⠛⢯⡉⠉⠉⠉⠉⠛⢼⣿⠿⠿⠦⡙⣿⡆⢹⣷⣤⡀⠀⠀⠀⠀⠀⠀⠀","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"KinTatHo"},"content":"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⠿⠄⠈⠻⠿⠿⠿⠿⠿⠿⠛⠛⠿⠛⠉⠁⠀⠀⠀⠀⠀⠀⠻⠿⠿⠿⠿⠟⠉⠀⠀⠤⠴⠶⠌⠿⠘⠿⠿⠿⠿⠶⠤⠀⠀⠀⠀","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"KinTatHo"},"content":"________________________________________________________","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":16,"KinTatHo":34}},{"path":"docs/README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"KinTatHo"},"content":"# User Guide for Yoda Chatbot","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"KinTatHo"},"content":"Yoda Chatbot is a task management assistant that helps you keep track of various tasks including todos, deadlines, and events.","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2019-07-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":7,"author":{"gitId":"KinTatHo"},"content":"### Adding a Task","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"KinTatHo"},"content":"You can add three types of tasks: todo, deadline, and event.","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"KinTatHo"},"content":"#### `todo` - Adds a todo task.","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"KinTatHo"},"content":"A todo task only contains a description.","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"KinTatHo"},"content":"Example of usage:","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"KinTatHo"},"content":"`todo read book`","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"KinTatHo"},"content":"Expected outcome:","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"KinTatHo"},"content":"Hmm, added this task, I have:","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"KinTatHo"},"content":"[T][ ] read book","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"KinTatHo"},"content":"Tasks in the list, now you have 1, hmm.","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"KinTatHo"},"content":"#### `deadline` - Adds a task with a deadline.","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"KinTatHo"},"content":"A deadline task contains a description and a date/time by which the task should be completed.","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"KinTatHo"},"content":"Example of usage:","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"KinTatHo"},"content":"`deadline return book /by Sunday`","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"KinTatHo"},"content":"Expected outcome:","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"KinTatHo"},"content":"Hmm, added this task, I have:","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"KinTatHo"},"content":"[D][ ] return book (by: Sunday)","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"KinTatHo"},"content":"Tasks in the list, now you have 2, hmm.","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":32,"author":{"gitId":"KinTatHo"},"content":"#### `event` - Adds an event task.","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"KinTatHo"},"content":"An event task contains a description and a start and end time.","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":35,"author":{"gitId":"KinTatHo"},"content":"Example of usage:","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"KinTatHo"},"content":"`event project meeting /from Monday 2pm /to 4pm`","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"KinTatHo"},"content":"Expected outcome:","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"KinTatHo"},"content":"Hmm, added this task, I have:","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"KinTatHo"},"content":"[E][ ] project meeting (from: Monday 2pm to: 4pm)","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"KinTatHo"},"content":"Tasks in the list, now you have 3, hmm.","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":43,"author":{"gitId":"KinTatHo"},"content":"### Marking a Task as Done","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"KinTatHo"},"content":"You can mark a task as completed.","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"KinTatHo"},"content":"#### `mark` - Marks a task as done.","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"KinTatHo"},"content":"Example of usage:","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"KinTatHo"},"content":"`mark 1`","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"KinTatHo"},"content":"Expected outcome:","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"KinTatHo"},"content":"Done, this task is:","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"KinTatHo"},"content":"[T][X] read book","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"KinTatHo"},"content":"### Marking a Task as Unone","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"KinTatHo"},"content":"You can unmark a task as completed.","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"KinTatHo"},"content":"#### `unmark` - Marks a task as done.","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"KinTatHo"},"content":"Example of usage:","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"KinTatHo"},"content":"`unmark 1`","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"KinTatHo"},"content":"Expected outcome:","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"KinTatHo"},"content":"Undone, this task remains:","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"KinTatHo"},"content":"[T][ ] read book","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":67,"author":{"gitId":"-"},"content":"## Usage","lastModifiedDate":"2019-07-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":69,"author":{"gitId":"KinTatHo"},"content":"### `list` - Lists all tasks","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":71,"author":{"gitId":"KinTatHo"},"content":"Shows a list of all tasks in the task manager.","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":"Example of usage:","lastModifiedDate":"2019-07-29"},{"lineNumber":74,"author":{"gitId":"KinTatHo"},"content":"`list`","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"KinTatHo"},"content":"Expected outcome:","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"KinTatHo"},"content":"Tasks in your list, here they are:","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":79,"author":{"gitId":"KinTatHo"},"content":"1. [T][X] read book","lastModifiedDate":"2024-01-28"},{"lineNumber":80,"author":{"gitId":"KinTatHo"},"content":"2. [D][ ] return book (by: Sunday)","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"KinTatHo"},"content":"3. [E][ ] project meeting (from: Monday 2pm to: 4pm)","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"KinTatHo"},"content":"### Deleting a Task","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"KinTatHo"},"content":"You can delete a task from your list.","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"KinTatHo"},"content":"#### `delete` - Deletes a task.","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"KinTatHo"},"content":"Example of usage:","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"KinTatHo"},"content":"`delete 1`","lastModifiedDate":"2024-01-28"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":91,"author":{"gitId":"-"},"content":"Expected outcome:","lastModifiedDate":"2019-07-29"},{"lineNumber":92,"author":{"gitId":"KinTatHo"},"content":"Removed, this task has been:","lastModifiedDate":"2024-01-28"},{"lineNumber":93,"author":{"gitId":"KinTatHo"},"content":"[T][X] read book","lastModifiedDate":"2024-01-28"},{"lineNumber":94,"author":{"gitId":"KinTatHo"},"content":"Tasks in the list, now you have 2, hmm.","lastModifiedDate":"2024-01-28"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":96,"author":{"gitId":"KinTatHo"},"content":"### Exiting the Chatbot","lastModifiedDate":"2024-01-28"},{"lineNumber":97,"author":{"gitId":"KinTatHo"},"content":"You can exit the chatbot using the `bye` command.","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":99,"author":{"gitId":"KinTatHo"},"content":"#### `bye` - Exits the application.","lastModifiedDate":"2024-01-28"},{"lineNumber":100,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":101,"author":{"gitId":"KinTatHo"},"content":"Example of usage:","lastModifiedDate":"2024-01-28"},{"lineNumber":102,"author":{"gitId":"KinTatHo"},"content":"`bye`","lastModifiedDate":"2024-01-28"},{"lineNumber":103,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":104,"author":{"gitId":"KinTatHo"},"content":"Expected outcome:","lastModifiedDate":"2024-01-28"},{"lineNumber":105,"author":{"gitId":"KinTatHo"},"content":"Farewell. See you again, I hope!","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"-":22,"KinTatHo":83}},{"path":"src/main/java/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KinTatHo"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"KinTatHo"},"content":" * Enum representing the various commands that the Yoda chatbot can understand.","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"KinTatHo"},"content":"enum Command {","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"KinTatHo"},"content":" BYE, // Command to end the chat session","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"KinTatHo"},"content":" LIST, // Command to list all tasks","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"KinTatHo"},"content":" MARK, // Command to mark a task as done","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"KinTatHo"},"content":" UNMARK, // Command to mark a task as not done","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"KinTatHo"},"content":" TODO, // Command to add a new \u0027Todo\u0027 task","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"KinTatHo"},"content":" DEADLINE, // Command to add a new \u0027Deadline\u0027 task","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"KinTatHo"},"content":" DELETE, // Command to delete a task","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"KinTatHo"},"content":" EVENT, // Command to add a new \u0027Event\u0027 task","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"KinTatHo"},"content":" UNKNOWN, // Represents an unrecognized command","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"KinTatHo"},"content":" SAVE; // Command to save the current task list to disk","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"KinTatHo"},"content":" * Converts a string to its corresponding Command enum value. If the string","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"KinTatHo"},"content":" * does not match any command, UNKNOWN is returned.","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"KinTatHo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"KinTatHo"},"content":" * @param str The input string representing a command.","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"KinTatHo"},"content":" * @return The corresponding Command enum value, or UNKNOWN if no match is found.","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"KinTatHo"},"content":" public static Command fromString(String str) {","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"KinTatHo"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"KinTatHo"},"content":" return Command.valueOf(str.toUpperCase());","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"KinTatHo"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"KinTatHo"},"content":" return UNKNOWN; // Return UNKNOWN if the input string is not a valid command","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"KinTatHo"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"KinTatHo":31}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KinTatHo"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"KinTatHo"},"content":" * Represents a deadline task. It extends the Task class and adds a deadline time.","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"KinTatHo"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"KinTatHo"},"content":" private final String by; // Deadline time for the task","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"KinTatHo"},"content":" * Constructs a Deadline task with a description and a deadline time.","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"KinTatHo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"KinTatHo"},"content":" * @param description A string describing the deadline task.","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"KinTatHo"},"content":" * @param by A string representing the time by which the task should be completed.","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"KinTatHo"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"KinTatHo"},"content":" super(description); // Calls the constructor of the superclass Task","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"KinTatHo"},"content":" this.by \u003d by; // Sets the deadline time for this task","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"KinTatHo"},"content":" public String getBy() {","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"KinTatHo"},"content":" return this.by;","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"KinTatHo"},"content":" * Returns a string representation of the deadline task, including its type,","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"KinTatHo"},"content":" * description, and deadline time.","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"KinTatHo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"KinTatHo"},"content":" * @return A formatted string with the type of task, its description, and the deadline.","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"KinTatHo"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"KinTatHo"},"content":" public String toString() {","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"KinTatHo"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"KinTatHo"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"KinTatHo":33}},{"path":"src/main/java/EmptyDescriptionException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KinTatHo"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"KinTatHo"},"content":" * Exception thrown when an attempt is made to create a task with an empty description.","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"KinTatHo"},"content":"public class EmptyDescriptionException extends Exception {","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"KinTatHo"},"content":" * Constructs an EmptyDescriptionException with a detailed message.","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"KinTatHo"},"content":" * This exception is typically thrown when a task is created without a ","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"KinTatHo"},"content":" * necessary description.","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"KinTatHo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"KinTatHo"},"content":" * @param message A string providing details about the exception cause.","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"KinTatHo"},"content":" public EmptyDescriptionException(String message) {","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"KinTatHo"},"content":" super(message); // Call to the superclass (Exception) constructor with the detailed message","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"KinTatHo"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"KinTatHo":16}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KinTatHo"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"KinTatHo"},"content":" * Represents an event task.","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"KinTatHo"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"KinTatHo"},"content":" private final String from; // Event starting time","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"KinTatHo"},"content":" private final String to; // Event ending time","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"KinTatHo"},"content":" * Constructs an Event task with a description, start time, and end time.","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"KinTatHo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"KinTatHo"},"content":" * @param description A string describing the event.","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"KinTatHo"},"content":" * @param from A string representing the start time of the event.","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"KinTatHo"},"content":" * @param to A string representing the end time of the event.","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"KinTatHo"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"KinTatHo"},"content":" super(description); // Calls the constructor of the superclass Task","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"KinTatHo"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"KinTatHo"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"KinTatHo"},"content":" public String getFrom() {","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"KinTatHo"},"content":" return this.from;","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"KinTatHo"},"content":" public String getTo() {","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"KinTatHo"},"content":" return this.to;","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"KinTatHo"},"content":" * Returns a string representation of the event.","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"KinTatHo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"KinTatHo"},"content":" * @return A formatted string with the type of task, its description,","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"KinTatHo"},"content":" * start time, and end time.","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"KinTatHo"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"KinTatHo"},"content":" public String toString() {","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"KinTatHo"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.from + \" to: \" + this.to + \")\";","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"KinTatHo"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"KinTatHo":39}},{"path":"src/main/java/InvalidTaskException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KinTatHo"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"KinTatHo"},"content":" * Exception thrown when an invalid task operation is attempted.","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"KinTatHo"},"content":" * This can occur in various scenarios such as trying to access a task","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"KinTatHo"},"content":" * that doesn\u0027t exist or providing an invalid task number.","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"KinTatHo"},"content":"public class InvalidTaskException extends Exception {","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"KinTatHo"},"content":" * Constructs an InvalidTaskException with a detailed message.","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"KinTatHo"},"content":" * This message provides information about what makes the task operation invalid.","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"KinTatHo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"KinTatHo"},"content":" * @param message A string detailing the reason for the exception.","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"KinTatHo"},"content":" public InvalidTaskException(String message) {","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"KinTatHo"},"content":" super(message); // Call to the superclass (Exception) constructor with the detailed message","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"KinTatHo"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"KinTatHo":17}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KinTatHo"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"KinTatHo"},"content":" * Represents a generic task with a description and a completion status.","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"KinTatHo"},"content":"public class Task {","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"KinTatHo"},"content":" private final String description; // Description of the task","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"KinTatHo"},"content":" private boolean isDone; // Flag to track if the task is done","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"KinTatHo"},"content":" * Constructs a Task with the given description. By default, the task is not done.","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"KinTatHo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"KinTatHo"},"content":" * @param description The description of the task.","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"KinTatHo"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"KinTatHo"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"KinTatHo"},"content":" this.isDone \u003d false; // Task is not done by default","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"KinTatHo"},"content":" * Retrieves the description of the task.","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"KinTatHo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"KinTatHo"},"content":" * @return The description of the task.","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"KinTatHo"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"KinTatHo"},"content":" return this.description;","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"KinTatHo"},"content":" * Gets the status of the task.","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"KinTatHo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"KinTatHo"},"content":" * @return true if the task is done, false otherwise.","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"KinTatHo"},"content":" public boolean isDone() {","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"KinTatHo"},"content":" return this.isDone;","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"KinTatHo"},"content":" * Marks the task as done.","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"KinTatHo"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"KinTatHo"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"KinTatHo"},"content":" * Marks the task as not done.","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"KinTatHo"},"content":" public void markAsUndone() {","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"KinTatHo"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"KinTatHo"},"content":" * Returns a string representation of the task, including its done status and description.","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"KinTatHo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"KinTatHo"},"content":" * @return A formatted string representing the task.","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"KinTatHo"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"KinTatHo"},"content":" public String toString() {","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"KinTatHo"},"content":" return \"[\" + (isDone ? \"X\" : \" \") + \"] \" + this.getDescription();","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"KinTatHo"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"KinTatHo":60}},{"path":"src/main/java/TimeMissingException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KinTatHo"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"KinTatHo"},"content":" * Exception thrown when a required time information is missing.","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"KinTatHo"},"content":" * This can occur in scenarios such as creating a deadline or event task","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"KinTatHo"},"content":" * without specifying the necessary time details.","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"KinTatHo"},"content":"public class TimeMissingException extends Exception {","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"KinTatHo"},"content":" * Constructs a TimeMissingException with a detailed message.","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"KinTatHo"},"content":" * This message provides information about the missing time detail, ","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"KinTatHo"},"content":" * which is essential for certain types of tasks (e.g., deadlines, events).","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"KinTatHo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"KinTatHo"},"content":" * @param message A string detailing the reason for the exception, ","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"KinTatHo"},"content":" * typically indicating which time information is missing.","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"KinTatHo"},"content":" public TimeMissingException(String message) {","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"KinTatHo"},"content":" super(message); // Call to the superclass (Exception) constructor with the detailed message","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"KinTatHo"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"KinTatHo":19}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KinTatHo"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"KinTatHo"},"content":" * Represents a \"Todo\" task. It is a simple task with only a description.","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"KinTatHo"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"KinTatHo"},"content":" * Constructs a todo task with the given description.","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"KinTatHo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"KinTatHo"},"content":" * @param description A string describing the todo task.","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"KinTatHo"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"KinTatHo"},"content":" super(description); // Call to the superclass (Task) constructor","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"KinTatHo"},"content":" * Returns a string representation of the todo task.","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"KinTatHo"},"content":" * The method overrides the Task class\u0027s toString method to add the specific","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"KinTatHo"},"content":" * identifier for Todo tasks.","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"KinTatHo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"KinTatHo"},"content":" * @return A formatted string representing the todo task,","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"KinTatHo"},"content":" * prefixed with \"[T]\" to denote a Todo type task.","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"KinTatHo"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"KinTatHo"},"content":" public String toString() {","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"KinTatHo"},"content":" return \"[T]\" + super.toString(); // Adding the Todo identifier to the string representation","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"KinTatHo"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"KinTatHo":27}},{"path":"src/main/java/UnknownCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KinTatHo"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"KinTatHo"},"content":" * Exception thrown when an unrecognized command is encountered.","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"KinTatHo"},"content":" * This typically happens when user input does not match any of the expected commands.","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"KinTatHo"},"content":"public class UnknownCommandException extends Exception {","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"KinTatHo"},"content":" * Constructs an UnknownCommandException with a detailed message.","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"KinTatHo"},"content":" * The message usually indicates that the user input did not match any known command.","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"KinTatHo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"KinTatHo"},"content":" * @param message A string detailing the reason for the exception,","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"KinTatHo"},"content":" * such as \"Unknown command entered\".","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"KinTatHo"},"content":" public UnknownCommandException(String message) {","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"KinTatHo"},"content":" super(message); // Call to the superclass (Exception) constructor with the detailed message","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"KinTatHo"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"KinTatHo":17}},{"path":"src/main/java/Yoda.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KinTatHo"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"KinTatHo"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"KinTatHo"},"content":" * Main class for the Yoda chatbot application.","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"KinTatHo"},"content":"public class Yoda {","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"KinTatHo"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"KinTatHo"},"content":" // Name of the chatbot is set to \"Yoda\".","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"KinTatHo"},"content":" String chatbotName \u003d \"Yoda\";","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"KinTatHo"},"content":" // Create an instance of the YodaUI class with the specified chatbot name.","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"KinTatHo"},"content":" YodaUI yoda \u003d new YodaUI(chatbotName);","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"KinTatHo"},"content":" // Scanner to read user input from the console.","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"KinTatHo"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"KinTatHo"},"content":" // Display the initial greeting message from Yoda.","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"KinTatHo"},"content":" yoda.printGreeting();","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"KinTatHo"},"content":" // Main loop to keep processing user input until the chatbot stops chatting.","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"KinTatHo"},"content":" while (yoda.isChatting()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"KinTatHo"},"content":" // Read the next line of input from the user.","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"KinTatHo"},"content":" String input \u003d scanner.nextLine();","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"KinTatHo"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"KinTatHo"},"content":" // Handle the user\u0027s input and perform the appropriate action.","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"KinTatHo"},"content":" yoda.handleUserInput(input);","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"KinTatHo"},"content":" } catch (EmptyDescriptionException | UnknownCommandException | InvalidTaskException | TimeMissingException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"KinTatHo"},"content":" // Catch specific exceptions and print their messages.","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"KinTatHo"},"content":" yoda.printMessage(e.getMessage());","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"KinTatHo"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"KinTatHo"},"content":" // Catch any other exceptions and throw a RuntimeException.","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"KinTatHo"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"KinTatHo"},"content":" // Close the scanner to prevent resource leaks.","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"KinTatHo"},"content":" scanner.close();","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"KinTatHo"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"KinTatHo":40}},{"path":"src/main/java/YodaUI.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KinTatHo"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"KinTatHo"},"content":"import java.util.List;","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"KinTatHo"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"KinTatHo"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"KinTatHo"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"KinTatHo"},"content":"public class YodaUI {","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"KinTatHo"},"content":" private final ArrayList\u003cTask\u003e tasks; // List to store the tasks","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"KinTatHo"},"content":" private final String chatbotName; // Name of the chatbot","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"KinTatHo"},"content":" private boolean isChatting; // Flag to check if the chatbot is currently chatting","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"KinTatHo"},"content":" * Constructor to initialize the chatbot with a name.","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"KinTatHo"},"content":" * @param chatbotName The name of the chatbot.","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"KinTatHo"},"content":" public YodaUI(String chatbotName) {","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"KinTatHo"},"content":" this.chatbotName \u003d chatbotName;","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"KinTatHo"},"content":" this.isChatting \u003d true;","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"KinTatHo"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"KinTatHo"},"content":" * Checks if the chatbot is currently chatting.","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"KinTatHo"},"content":" * @return true if chatting, false otherwise.","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"KinTatHo"},"content":" public boolean isChatting() {","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"KinTatHo"},"content":" return this.isChatting;","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"KinTatHo"},"content":" * Marks a task as done.","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"KinTatHo"},"content":" * @param taskNumber The number of the task to mark as done.","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"KinTatHo"},"content":" public void markTaskAsDone(int taskNumber) {","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"KinTatHo"},"content":" Task task \u003d tasks.get(taskNumber - 1);","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"KinTatHo"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"KinTatHo"},"content":" printMessage(\"Done, this task is:\\n\" + task);","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"KinTatHo"},"content":" * Marks a task as undone.","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"KinTatHo"},"content":" * @param taskNumber The number of the task to mark as not done.","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"KinTatHo"},"content":" public void markTaskAsUndone(int taskNumber) {","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"KinTatHo"},"content":" Task task \u003d tasks.get(taskNumber - 1);","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"KinTatHo"},"content":" task.markAsUndone();","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"KinTatHo"},"content":" printMessage(\"Undone, this task remains:\\n\" + task);","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"KinTatHo"},"content":" * Deletes a task from the list.","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"KinTatHo"},"content":" * @param taskNumber The number of the task to be deleted.","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"KinTatHo"},"content":" public void deleteTask(int taskNumber) {","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"KinTatHo"},"content":" Task task \u003d tasks.remove(taskNumber - 1);","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"KinTatHo"},"content":" printMessage(\"Removed, this task has been:\\n\" + task + \"\\nTasks in the list, now you have \" + tasks.size() + \", hmm.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"KinTatHo"},"content":" * Adds a new task to the list.","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"KinTatHo"},"content":" * @param task The task to be added.","lastModifiedDate":"2024-01-27"},{"lineNumber":64,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":65,"author":{"gitId":"KinTatHo"},"content":" private void addTask(Task task) {","lastModifiedDate":"2024-01-27"},{"lineNumber":66,"author":{"gitId":"KinTatHo"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"KinTatHo"},"content":" printMessage(\"Hmm, added this task, I have:\\n\" + task + \"\\nTasks in the list, now you have \" + tasks.size() + \", hmm.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":68,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":69,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":70,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":71,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":72,"author":{"gitId":"KinTatHo"},"content":" * Displays all the tasks in the list.","lastModifiedDate":"2024-01-27"},{"lineNumber":73,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":74,"author":{"gitId":"KinTatHo"},"content":" private void showTasks() {","lastModifiedDate":"2024-01-27"},{"lineNumber":75,"author":{"gitId":"KinTatHo"},"content":" if (tasks.isEmpty()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":76,"author":{"gitId":"KinTatHo"},"content":" printMessage(\"Empty, your task list is.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":77,"author":{"gitId":"KinTatHo"},"content":" return;","lastModifiedDate":"2024-01-27"},{"lineNumber":78,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":79,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":80,"author":{"gitId":"KinTatHo"},"content":" StringBuilder response \u003d new StringBuilder(\"Tasks in your list, here they are:\\n\");","lastModifiedDate":"2024-01-27"},{"lineNumber":81,"author":{"gitId":"KinTatHo"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-27"},{"lineNumber":82,"author":{"gitId":"KinTatHo"},"content":" response.append(i + 1).append(\".\").append(tasks.get(i)).append(\"\\n\");","lastModifiedDate":"2024-01-27"},{"lineNumber":83,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":84,"author":{"gitId":"KinTatHo"},"content":" printMessage(response.toString().trim());","lastModifiedDate":"2024-01-27"},{"lineNumber":85,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":86,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":87,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":88,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":89,"author":{"gitId":"KinTatHo"},"content":" * Handles user input and performs actions based on the command.","lastModifiedDate":"2024-01-27"},{"lineNumber":90,"author":{"gitId":"KinTatHo"},"content":" * @param input The user input string.","lastModifiedDate":"2024-01-27"},{"lineNumber":91,"author":{"gitId":"KinTatHo"},"content":" * @throws Exception if there is an issue in processing the command.","lastModifiedDate":"2024-01-27"},{"lineNumber":92,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":93,"author":{"gitId":"KinTatHo"},"content":" public void handleUserInput(String input) throws Exception {","lastModifiedDate":"2024-01-27"},{"lineNumber":94,"author":{"gitId":"KinTatHo"},"content":" String[] parts \u003d input.split(\"\\\\s+\", 2);","lastModifiedDate":"2024-01-27"},{"lineNumber":95,"author":{"gitId":"KinTatHo"},"content":" Command command \u003d Command.fromString(parts[0]);","lastModifiedDate":"2024-01-27"},{"lineNumber":96,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":97,"author":{"gitId":"KinTatHo"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":98,"author":{"gitId":"KinTatHo"},"content":" switch (command) {","lastModifiedDate":"2024-01-27"},{"lineNumber":99,"author":{"gitId":"KinTatHo"},"content":" case BYE:","lastModifiedDate":"2024-01-27"},{"lineNumber":100,"author":{"gitId":"KinTatHo"},"content":" printMessage(\"Farewell. See you again, I hope!\");","lastModifiedDate":"2024-01-27"},{"lineNumber":101,"author":{"gitId":"KinTatHo"},"content":" this.isChatting \u003d false;","lastModifiedDate":"2024-01-27"},{"lineNumber":102,"author":{"gitId":"KinTatHo"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":103,"author":{"gitId":"KinTatHo"},"content":" case LIST:","lastModifiedDate":"2024-01-27"},{"lineNumber":104,"author":{"gitId":"KinTatHo"},"content":" showTasks();","lastModifiedDate":"2024-01-27"},{"lineNumber":105,"author":{"gitId":"KinTatHo"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":106,"author":{"gitId":"KinTatHo"},"content":" case SAVE:","lastModifiedDate":"2024-01-27"},{"lineNumber":107,"author":{"gitId":"KinTatHo"},"content":" saveTasks();","lastModifiedDate":"2024-01-27"},{"lineNumber":108,"author":{"gitId":"KinTatHo"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":109,"author":{"gitId":"KinTatHo"},"content":" case DELETE:","lastModifiedDate":"2024-01-27"},{"lineNumber":110,"author":{"gitId":"KinTatHo"},"content":" performTaskOperation(parts, this::deleteTask);","lastModifiedDate":"2024-01-27"},{"lineNumber":111,"author":{"gitId":"KinTatHo"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":112,"author":{"gitId":"KinTatHo"},"content":" case MARK:","lastModifiedDate":"2024-01-27"},{"lineNumber":113,"author":{"gitId":"KinTatHo"},"content":" performTaskOperation(parts, this::markTaskAsDone);","lastModifiedDate":"2024-01-27"},{"lineNumber":114,"author":{"gitId":"KinTatHo"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":115,"author":{"gitId":"KinTatHo"},"content":" case UNMARK:","lastModifiedDate":"2024-01-27"},{"lineNumber":116,"author":{"gitId":"KinTatHo"},"content":" performTaskOperation(parts, this::markTaskAsUndone);","lastModifiedDate":"2024-01-27"},{"lineNumber":117,"author":{"gitId":"KinTatHo"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":118,"author":{"gitId":"KinTatHo"},"content":" case TODO:","lastModifiedDate":"2024-01-27"},{"lineNumber":119,"author":{"gitId":"KinTatHo"},"content":" addTask(new Todo(parts[1]));","lastModifiedDate":"2024-01-27"},{"lineNumber":120,"author":{"gitId":"KinTatHo"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":121,"author":{"gitId":"KinTatHo"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-27"},{"lineNumber":122,"author":{"gitId":"KinTatHo"},"content":" String[] deadlineParts \u003d parts[1].split(\" /by \", 2);","lastModifiedDate":"2024-01-27"},{"lineNumber":123,"author":{"gitId":"KinTatHo"},"content":" addTask(new Deadline(deadlineParts[0], deadlineParts[1]));","lastModifiedDate":"2024-01-27"},{"lineNumber":124,"author":{"gitId":"KinTatHo"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":125,"author":{"gitId":"KinTatHo"},"content":" case EVENT:","lastModifiedDate":"2024-01-27"},{"lineNumber":126,"author":{"gitId":"KinTatHo"},"content":" String[] eventParts \u003d parts[1].split(\" /from \", 2);","lastModifiedDate":"2024-01-27"},{"lineNumber":127,"author":{"gitId":"KinTatHo"},"content":" String[] timeParts \u003d eventParts[1].split(\" /to \", 2);","lastModifiedDate":"2024-01-27"},{"lineNumber":128,"author":{"gitId":"KinTatHo"},"content":" addTask(new Event(eventParts[0], timeParts[0], timeParts[1]));","lastModifiedDate":"2024-01-27"},{"lineNumber":129,"author":{"gitId":"KinTatHo"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":130,"author":{"gitId":"KinTatHo"},"content":" default:","lastModifiedDate":"2024-01-27"},{"lineNumber":131,"author":{"gitId":"KinTatHo"},"content":" printMessage(\"Sorry, I am. What that means, I do not know :-(\");","lastModifiedDate":"2024-01-27"},{"lineNumber":132,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":133,"author":{"gitId":"KinTatHo"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":134,"author":{"gitId":"KinTatHo"},"content":" printMessage(e.getMessage());","lastModifiedDate":"2024-01-27"},{"lineNumber":135,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":136,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":137,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":138,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":139,"author":{"gitId":"KinTatHo"},"content":" * Performs a task operation (delete, mark, unmark) based on the user input.","lastModifiedDate":"2024-01-27"},{"lineNumber":140,"author":{"gitId":"KinTatHo"},"content":" * @param parts The split input containing the command and task number.","lastModifiedDate":"2024-01-27"},{"lineNumber":141,"author":{"gitId":"KinTatHo"},"content":" * @param operation The operation to be performed on the task.","lastModifiedDate":"2024-01-27"},{"lineNumber":142,"author":{"gitId":"KinTatHo"},"content":" * @throws Exception if the task number is invalid.","lastModifiedDate":"2024-01-27"},{"lineNumber":143,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":144,"author":{"gitId":"KinTatHo"},"content":" private void performTaskOperation(String[] parts, TaskOperation operation) throws Exception {","lastModifiedDate":"2024-01-27"},{"lineNumber":145,"author":{"gitId":"KinTatHo"},"content":" if (parts.length \u003e 1) {","lastModifiedDate":"2024-01-27"},{"lineNumber":146,"author":{"gitId":"KinTatHo"},"content":" int taskNumber \u003d parseTaskNumber(parts[1]);","lastModifiedDate":"2024-01-27"},{"lineNumber":147,"author":{"gitId":"KinTatHo"},"content":" operation.perform(taskNumber);","lastModifiedDate":"2024-01-27"},{"lineNumber":148,"author":{"gitId":"KinTatHo"},"content":" } else {","lastModifiedDate":"2024-01-27"},{"lineNumber":149,"author":{"gitId":"KinTatHo"},"content":" throw new Exception(\"Specify a task number, you must.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":150,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":151,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":152,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":153,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":154,"author":{"gitId":"KinTatHo"},"content":" * Parses the task number from the input string.","lastModifiedDate":"2024-01-27"},{"lineNumber":155,"author":{"gitId":"KinTatHo"},"content":" * @param input The input string containing the task number.","lastModifiedDate":"2024-01-27"},{"lineNumber":156,"author":{"gitId":"KinTatHo"},"content":" * @return The parsed task number.","lastModifiedDate":"2024-01-27"},{"lineNumber":157,"author":{"gitId":"KinTatHo"},"content":" * @throws Exception if the input is not a valid number or out of range.","lastModifiedDate":"2024-01-27"},{"lineNumber":158,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":159,"author":{"gitId":"KinTatHo"},"content":" private int parseTaskNumber(String input) throws Exception {","lastModifiedDate":"2024-01-27"},{"lineNumber":160,"author":{"gitId":"KinTatHo"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":161,"author":{"gitId":"KinTatHo"},"content":" int taskNumber \u003d Integer.parseInt(input);","lastModifiedDate":"2024-01-27"},{"lineNumber":162,"author":{"gitId":"KinTatHo"},"content":" if (taskNumber \u003c\u003d 0 || taskNumber \u003e tasks.size()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":163,"author":{"gitId":"KinTatHo"},"content":" throw new Exception(\"Valid task number, provide you must.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":164,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":165,"author":{"gitId":"KinTatHo"},"content":" return taskNumber;","lastModifiedDate":"2024-01-27"},{"lineNumber":166,"author":{"gitId":"KinTatHo"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":167,"author":{"gitId":"KinTatHo"},"content":" throw new Exception(\"A number, enter you must.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":168,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":169,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":170,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":171,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":172,"author":{"gitId":"KinTatHo"},"content":" * Prints a message wrapped with lines for better readability.","lastModifiedDate":"2024-01-27"},{"lineNumber":173,"author":{"gitId":"KinTatHo"},"content":" * @param message The message to be printed.","lastModifiedDate":"2024-01-27"},{"lineNumber":174,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":175,"author":{"gitId":"KinTatHo"},"content":" public void printMessage(String message) {","lastModifiedDate":"2024-01-27"},{"lineNumber":176,"author":{"gitId":"KinTatHo"},"content":" printLine();","lastModifiedDate":"2024-01-27"},{"lineNumber":177,"author":{"gitId":"KinTatHo"},"content":" System.out.println(\"\" + message);","lastModifiedDate":"2024-01-27"},{"lineNumber":178,"author":{"gitId":"KinTatHo"},"content":" printLine();","lastModifiedDate":"2024-01-27"},{"lineNumber":179,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":180,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":181,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":182,"author":{"gitId":"KinTatHo"},"content":" * Functional interface for task operations like delete, mark, and unmark.","lastModifiedDate":"2024-01-27"},{"lineNumber":183,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":184,"author":{"gitId":"KinTatHo"},"content":" @FunctionalInterface","lastModifiedDate":"2024-01-27"},{"lineNumber":185,"author":{"gitId":"KinTatHo"},"content":" private interface TaskOperation {","lastModifiedDate":"2024-01-27"},{"lineNumber":186,"author":{"gitId":"KinTatHo"},"content":" void perform(int taskNumber) throws Exception;","lastModifiedDate":"2024-01-27"},{"lineNumber":187,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":188,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":189,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":190,"author":{"gitId":"KinTatHo"},"content":" * Saves the current task list to a file called yoda.txt.","lastModifiedDate":"2024-01-28"},{"lineNumber":191,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":192,"author":{"gitId":"KinTatHo"},"content":" public void saveTasks() {","lastModifiedDate":"2024-01-28"},{"lineNumber":193,"author":{"gitId":"KinTatHo"},"content":"// String currentDir \u003d System.getProperty(\"user.dir\");","lastModifiedDate":"2024-01-28"},{"lineNumber":194,"author":{"gitId":"KinTatHo"},"content":"// System.out.println(\"Current directory: \" + currentDir);","lastModifiedDate":"2024-01-28"},{"lineNumber":195,"author":{"gitId":"KinTatHo"},"content":" try (BufferedWriter writer \u003d new BufferedWriter(new FileWriter(\"./data/yoda.txt\"))) {","lastModifiedDate":"2024-01-28"},{"lineNumber":196,"author":{"gitId":"KinTatHo"},"content":" for (Task task : tasks) {","lastModifiedDate":"2024-01-28"},{"lineNumber":197,"author":{"gitId":"KinTatHo"},"content":" writer.write(taskToFileFormat(task) + System.lineSeparator());","lastModifiedDate":"2024-01-28"},{"lineNumber":198,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":199,"author":{"gitId":"KinTatHo"},"content":" printMessage(\"Saved, your task list has been.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":200,"author":{"gitId":"KinTatHo"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":201,"author":{"gitId":"KinTatHo"},"content":" printMessage(\"Error saving tasks: \" + e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":202,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":203,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":204,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":205,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":206,"author":{"gitId":"KinTatHo"},"content":" * Converts a task to a formatted string suitable for file storage.","lastModifiedDate":"2024-01-28"},{"lineNumber":207,"author":{"gitId":"KinTatHo"},"content":" * @param task The task to convert.","lastModifiedDate":"2024-01-28"},{"lineNumber":208,"author":{"gitId":"KinTatHo"},"content":" * @return A string representing the task in the file format.","lastModifiedDate":"2024-01-28"},{"lineNumber":209,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":210,"author":{"gitId":"KinTatHo"},"content":" private String taskToFileFormat(Task task) {","lastModifiedDate":"2024-01-28"},{"lineNumber":211,"author":{"gitId":"KinTatHo"},"content":" String status \u003d task.isDone() ? \"1\" : \"0\";","lastModifiedDate":"2024-01-28"},{"lineNumber":212,"author":{"gitId":"KinTatHo"},"content":" String type \u003d task instanceof Todo ? \"T\" :","lastModifiedDate":"2024-01-28"},{"lineNumber":213,"author":{"gitId":"KinTatHo"},"content":" task instanceof Deadline ? \"D\" :","lastModifiedDate":"2024-01-28"},{"lineNumber":214,"author":{"gitId":"KinTatHo"},"content":" task instanceof Event ? \"E\" : \"\";","lastModifiedDate":"2024-01-28"},{"lineNumber":215,"author":{"gitId":"KinTatHo"},"content":" String details \u003d task.getDescription();","lastModifiedDate":"2024-01-28"},{"lineNumber":216,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":217,"author":{"gitId":"KinTatHo"},"content":" if (task instanceof Deadline) {","lastModifiedDate":"2024-01-28"},{"lineNumber":218,"author":{"gitId":"KinTatHo"},"content":" Deadline deadlineTask \u003d (Deadline) task;","lastModifiedDate":"2024-01-28"},{"lineNumber":219,"author":{"gitId":"KinTatHo"},"content":" details +\u003d \" | \" + deadlineTask.getBy();","lastModifiedDate":"2024-01-28"},{"lineNumber":220,"author":{"gitId":"KinTatHo"},"content":" } else if (task instanceof Event) {","lastModifiedDate":"2024-01-28"},{"lineNumber":221,"author":{"gitId":"KinTatHo"},"content":" Event eventTask \u003d (Event) task;","lastModifiedDate":"2024-01-28"},{"lineNumber":222,"author":{"gitId":"KinTatHo"},"content":" details +\u003d \" | \" + eventTask.getFrom() + \" to \" + eventTask.getTo();","lastModifiedDate":"2024-01-28"},{"lineNumber":223,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":224,"author":{"gitId":"KinTatHo"},"content":" return type + \" | \" + status + \" | \" + details;","lastModifiedDate":"2024-01-28"},{"lineNumber":225,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":226,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":227,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":228,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":229,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":230,"author":{"gitId":"KinTatHo"},"content":" * Prints a line for visual separation in the console output.","lastModifiedDate":"2024-01-27"},{"lineNumber":231,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":232,"author":{"gitId":"KinTatHo"},"content":" private void printLine() {","lastModifiedDate":"2024-01-27"},{"lineNumber":233,"author":{"gitId":"KinTatHo"},"content":" System.out.println(\"________________________________________________________\");","lastModifiedDate":"2024-01-27"},{"lineNumber":234,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":235,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":236,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":237,"author":{"gitId":"KinTatHo"},"content":" * Prints a greeting message when the chatbot starts.","lastModifiedDate":"2024-01-27"},{"lineNumber":238,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":239,"author":{"gitId":"KinTatHo"},"content":" public void printGreeting() {","lastModifiedDate":"2024-01-27"},{"lineNumber":240,"author":{"gitId":"KinTatHo"},"content":" printLine();","lastModifiedDate":"2024-01-27"},{"lineNumber":241,"author":{"gitId":"KinTatHo"},"content":" System.out.println(\"Greetings! \" + chatbotName + \", I am\\nAssist you, may I?\");","lastModifiedDate":"2024-01-27"},{"lineNumber":242,"author":{"gitId":"KinTatHo"},"content":" printLine();","lastModifiedDate":"2024-01-27"},{"lineNumber":243,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":244,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":245,"author":{"gitId":"KinTatHo"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"KinTatHo":245}},{"path":"text-ui-test/data/yoda.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"KinTatHo"},"content":"T | 1 | read book","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"KinTatHo"},"content":"D | 0 | return book | June 6th","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"KinTatHo"},"content":"T | 1 | join sports club","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"KinTatHo"},"content":"T | 0 | borrow book","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"KinTatHo":4}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"KinTatHo"},"content":"todo read book","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"KinTatHo"},"content":"mark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"KinTatHo"},"content":"unmark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"KinTatHo"},"content":"deadline return book /by June 6th","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"KinTatHo"},"content":"event project meeting /from Aug 6th 2pm /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"KinTatHo"},"content":"todo join sports club","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"KinTatHo"},"content":"todo borrow book","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"KinTatHo"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"KinTatHo"},"content":"mark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"KinTatHo"},"content":"mark 4","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"KinTatHo"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"KinTatHo"},"content":"delete 3","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"KinTatHo"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"KinTatHo"},"content":"save","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"KinTatHo"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"KinTatHo":15}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"KinTatHo"},"content":"java -classpath ..\\bin Yoda \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":20,"KinTatHo":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":"KinTatHo"},"content":"java -classpath ../bin Yoda \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":37,"KinTatHo":1}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"KinTatHo"},"content":"# Yoda project template","lastModifiedDate":"2024-01-28"},{"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":"KinTatHo"},"content":"3. After that, locate the `src/main/java/Yoda.java` file, right-click it, and choose `Run Yoda.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-28"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"KinTatHo"},"content":"Greetings! Yoda, I am","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"KinTatHo"},"content":"Assist you, may I?","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"KinTatHo"},"content":"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⣤⠤⠐⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"KinTatHo"},"content":"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡌⡦⠊⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"KinTatHo"},"content":"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⣼⡊⢀⠔⠀⠀⣄⠤⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⣤⣄⣀⠀","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"KinTatHo"},"content":"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣶⠃⠉⠡⡠⠤⠊⠀⠠⣀⣀⡠⠔⠒⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣾⣿⢟⠿⠛⠛⠁","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"KinTatHo"},"content":"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⡇⠀⠀⠀⠀⠑⠶⠖⠊⠁⠀⠀⠀⡀⠀⠀⠀⢀⣠⣤⣤⡀⠀⠀⠀⠀⠀⢀⣠⣤⣶⣿⣿⠟⡱⠁⠀⠀⠀⠀","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"KinTatHo"},"content":"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⣾⣿⡇⠀⢀⡠⠀⠀⠀⠈⠑⢦⣄⣀⣀⣽⣦⣤⣾⣿⠿⠿⠿⣿⡆⠀⠀⢀⠺⣿⣿⣿⣿⡿⠁⡰⠁⠀⠀⠀⠀⠀","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"KinTatHo"},"content":"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣾⣿⣿⣧⣠⠊⣠⣶⣾⣿⣿⣶⣶⣿⣿⠿⠛⢿⣿⣫⢕⡠⢥⣈⠀⠙⠀⠰⣷⣿⣿⣿⡿⠋⢀⠜⠁⠀⠀⠀⠀⠀⠀","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"KinTatHo"},"content":"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⢿⣿⣿⣿⣿⣰⣿⣿⠿⣛⡛⢛⣿⣿⣟⢅⠀⠀⢿⣿⠕⢺⣿⡇⠩⠓⠂⢀⠛⠛⠋⢁⣠⠞⠁⠀⠀⠀⠀⠀⠀⠀⠀","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"KinTatHo"},"content":"⠘⢶⡶⢶⣶⣦⣤⣤⣤⣤⣤⣀⣀⣀⣀⡀⠀⠘⣿⣿⣿⠟⠁⡡⣒⣬⢭⢠⠝⢿⡡⠂⠀⠈⠻⣯⣖⣒⣺⡭⠂⢀⠈⣶⣶⣾⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"KinTatHo"},"content":"⠀⠀⠙⠳⣌⡛⢿⣿⣿⣿⣿⣿⣿⣿⣿⣻⣵⣨⣿⣿⡏⢀⠪⠎⠙⠿⣋⠴⡃⢸⣷⣤⣶⡾⠋⠈⠻⣶⣶⣶⣷⣶⣷⣿⣟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"KinTatHo"},"content":"⠀⠀⠀⠀⠈⠛⢦⣌⡙⠛⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡀⠀⠀⠩⠭⡭⠴⠊⢀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣿⣿⣿⣿⣿⡇⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"KinTatHo"},"content":"⠀⠀⠀⠀⠀⠀⠀⠈⠙⠓⠦⣄⡉⠛⠛⠻⢿⣿⣿⣿⣷⡀⠀⠀⠀⠀⢀⣰⠋⠀⠀⠀⠀⠀⣀⣰⠤⣳⣿⣿⣿⣿⣟⠑⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"KinTatHo"},"content":"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠓⠒⠒⠶⢺⣿⣿⣿⣿⣦⣄⣀⣴⣿⣯⣤⣔⠒⠚⣒⣉⣉⣴⣾⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"KinTatHo"},"content":"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠛⠹⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"KinTatHo"},"content":"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣭⣉⣉⣤⣿⣿⣿⣿⣿⣿⡿⢀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"KinTatHo"},"content":"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⡁⡆⠙⢶⣀⠀⢀⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"KinTatHo"},"content":"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣴⣶⣾⣿⣟⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⢛⣩⣴⣿⠇⡇⠸⡆⠙⢷⣄⠻⣿⣦⡄⠀⠀⠀⠀⠀⠀","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"KinTatHo"},"content":"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣼⣿⣿⣿⣿⣿⣿⣿⣎⢻⣿⣿⣿⣿⣿⣿⣿⣭⣭⣭⣵⣶⣾⣿⣿⣿⠟⢰⢣⠀⠈⠀⠀⠙⢷⡎⠙⣿⣦⠀⠀⠀⠀⠀","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"KinTatHo"},"content":"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣼⣿⣿⣿⣿⣿⣿⣿⣿⡟⣿⡆⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠿⠟⠛⠋⠁⢀⠇⢸⡇⠀⠀⠀⠀⠈⠁⠀⢸⣿⡆⠀⠀⠀⠀","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"KinTatHo"},"content":"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡜⡿⡘⣿⣿⣿⣿⣿⣶⣶⣤⣤⣤⣤⣤⣤⣤⣴⡎⠖⢹⡇⠀⠀⠀⠀⠀⠀⠀⠀⣿⣷⡄⠀⠀⠀","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"KinTatHo"},"content":"⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⡀⠘⢿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠿⠛⠋⡟⠀⠀⣸⣷⣀⣤⣀⣀⣀⣤⣤⣾⣿⣿⣿⠀⠀⠀","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"KinTatHo"},"content":"⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣭⣓⡲⠬⢭⣙⡛⠿⣿⣿⣶⣦⣀⠀⡜⠀⠀⣰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"KinTatHo"},"content":"⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣭⣛⣓⠶⠦⠥⣀⠙⠋⠉⠉⠻⣄⣀⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"KinTatHo"},"content":"⠀⠀⠀⠀⠀⠀⠀⠀⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣶⣆⠐⣦⣠⣷⠊⠁⠀⠀⡭⠙⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡆⠀⠀","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"KinTatHo"},"content":"⠀⠀⠀⠀⠀⠀⠀⢠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⢉⣛⡛⢻⡗⠂⠀⢀⣷⣄⠈⢆⠉⠙⠻⢿⣿⣿⣿⣿⣿⠇⠀⠀","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"KinTatHo"},"content":"⠀⠀⠀⠀⠀⠀⠀⠘⣿⣿⡟⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⣉⢁⣴⣿⣿⣿⣾⡇⢀⣀⣼⡿⣿⣷⡌⢻⣦⡀⠀⠈⠙⠛⠿⠏⠀⠀⠀","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"KinTatHo"},"content":"⠀⠀⠀⠀⠀⠀⠀⠀⠙⢿⣿⡄⠙⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠛⠛⠛⢯⡉⠉⠉⠉⠉⠛⢼⣿⠿⠿⠦⡙⣿⡆⢹⣷⣤⡀⠀⠀⠀⠀⠀⠀⠀","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"KinTatHo"},"content":"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⠿⠄⠈⠻⠿⠿⠿⠿⠿⠿⠛⠛⠿⠛⠉⠁⠀⠀⠀⠀⠀⠀⠻⠿⠿⠿⠿⠟⠉⠀⠀⠤⠴⠶⠌⠿⠘⠿⠿⠿⠿⠶⠤⠀⠀⠀⠀","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"KinTatHo"},"content":"________________________________________________________","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":16,"KinTatHo":34}},{"path":"docs/README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"KinTatHo"},"content":"# User Guide for Yoda Chatbot","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"KinTatHo"},"content":"Yoda Chatbot is a task management assistant that helps you keep track of various tasks including todos, deadlines, and events.","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2019-07-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":7,"author":{"gitId":"KinTatHo"},"content":"### Adding a Task","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"KinTatHo"},"content":"You can add three types of tasks: todo, deadline, and event.","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"KinTatHo"},"content":"#### `todo` - Adds a todo task.","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"KinTatHo"},"content":"A todo task only contains a description.","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"KinTatHo"},"content":"Example of usage:","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"KinTatHo"},"content":"`todo read book`","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"KinTatHo"},"content":"Expected outcome:","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"KinTatHo"},"content":"Hmm, added this task, I have:","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"KinTatHo"},"content":"[T][ ] read book","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"KinTatHo"},"content":"Tasks in the list, now you have 1, hmm.","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"KinTatHo"},"content":"#### `deadline` - Adds a task with a deadline.","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"KinTatHo"},"content":"A deadline task contains a description and a date/time by which the task should be completed.","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"KinTatHo"},"content":"Example of usage:","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"KinTatHo"},"content":"`deadline return book /by Sunday`","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"KinTatHo"},"content":"Expected outcome:","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"KinTatHo"},"content":"Hmm, added this task, I have:","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"KinTatHo"},"content":"[D][ ] return book (by: Sunday)","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"KinTatHo"},"content":"Tasks in the list, now you have 2, hmm.","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":32,"author":{"gitId":"KinTatHo"},"content":"#### `event` - Adds an event task.","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"KinTatHo"},"content":"An event task contains a description and a start and end time.","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":35,"author":{"gitId":"KinTatHo"},"content":"Example of usage:","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"KinTatHo"},"content":"`event project meeting /from Monday 2pm /to 4pm`","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"KinTatHo"},"content":"Expected outcome:","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"KinTatHo"},"content":"Hmm, added this task, I have:","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"KinTatHo"},"content":"[E][ ] project meeting (from: Monday 2pm to: 4pm)","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"KinTatHo"},"content":"Tasks in the list, now you have 3, hmm.","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":43,"author":{"gitId":"KinTatHo"},"content":"### Marking a Task as Done","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"KinTatHo"},"content":"You can mark a task as completed.","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"KinTatHo"},"content":"#### `mark` - Marks a task as done.","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"KinTatHo"},"content":"Example of usage:","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"KinTatHo"},"content":"`mark 1`","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"KinTatHo"},"content":"Expected outcome:","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"KinTatHo"},"content":"Done, this task is:","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"KinTatHo"},"content":"[T][X] read book","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"KinTatHo"},"content":"### Marking a Task as Unone","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"KinTatHo"},"content":"You can unmark a task as completed.","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"KinTatHo"},"content":"#### `unmark` - Marks a task as done.","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"KinTatHo"},"content":"Example of usage:","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"KinTatHo"},"content":"`unmark 1`","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"KinTatHo"},"content":"Expected outcome:","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"KinTatHo"},"content":"Undone, this task remains:","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"KinTatHo"},"content":"[T][ ] read book","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":67,"author":{"gitId":"-"},"content":"## Usage","lastModifiedDate":"2019-07-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":69,"author":{"gitId":"KinTatHo"},"content":"### `list` - Lists all tasks","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":71,"author":{"gitId":"KinTatHo"},"content":"Shows a list of all tasks in the task manager.","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":"Example of usage:","lastModifiedDate":"2019-07-29"},{"lineNumber":74,"author":{"gitId":"KinTatHo"},"content":"`list`","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"KinTatHo"},"content":"Expected outcome:","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"KinTatHo"},"content":"Tasks in your list, here they are:","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":79,"author":{"gitId":"KinTatHo"},"content":"1. [T][X] read book","lastModifiedDate":"2024-01-28"},{"lineNumber":80,"author":{"gitId":"KinTatHo"},"content":"2. [D][ ] return book (by: Sunday)","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"KinTatHo"},"content":"3. [E][ ] project meeting (from: Monday 2pm to: 4pm)","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"KinTatHo"},"content":"### Deleting a Task","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"KinTatHo"},"content":"You can delete a task from your list.","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"KinTatHo"},"content":"#### `delete` - Deletes a task.","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"KinTatHo"},"content":"Example of usage:","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"KinTatHo"},"content":"`delete 1`","lastModifiedDate":"2024-01-28"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":91,"author":{"gitId":"-"},"content":"Expected outcome:","lastModifiedDate":"2019-07-29"},{"lineNumber":92,"author":{"gitId":"KinTatHo"},"content":"Removed, this task has been:","lastModifiedDate":"2024-01-28"},{"lineNumber":93,"author":{"gitId":"KinTatHo"},"content":"[T][X] read book","lastModifiedDate":"2024-01-28"},{"lineNumber":94,"author":{"gitId":"KinTatHo"},"content":"Tasks in the list, now you have 2, hmm.","lastModifiedDate":"2024-01-28"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":96,"author":{"gitId":"KinTatHo"},"content":"### Exiting the Chatbot","lastModifiedDate":"2024-01-28"},{"lineNumber":97,"author":{"gitId":"KinTatHo"},"content":"You can exit the chatbot using the `bye` command.","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":99,"author":{"gitId":"KinTatHo"},"content":"#### `bye` - Exits the application.","lastModifiedDate":"2024-01-28"},{"lineNumber":100,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":101,"author":{"gitId":"KinTatHo"},"content":"Example of usage:","lastModifiedDate":"2024-01-28"},{"lineNumber":102,"author":{"gitId":"KinTatHo"},"content":"`bye`","lastModifiedDate":"2024-01-28"},{"lineNumber":103,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":104,"author":{"gitId":"KinTatHo"},"content":"Expected outcome:","lastModifiedDate":"2024-01-28"},{"lineNumber":105,"author":{"gitId":"KinTatHo"},"content":"Farewell. See you again, I hope!","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"-":22,"KinTatHo":83}},{"path":"src/main/java/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KinTatHo"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"KinTatHo"},"content":" * Enum representing the various commands that the Yoda chatbot can understand.","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"KinTatHo"},"content":"enum Command {","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"KinTatHo"},"content":" BYE, // Command to end the chat session","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"KinTatHo"},"content":" LIST, // Command to list all tasks","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"KinTatHo"},"content":" MARK, // Command to mark a task as done","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"KinTatHo"},"content":" UNMARK, // Command to mark a task as not done","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"KinTatHo"},"content":" TODO, // Command to add a new \u0027Todo\u0027 task","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"KinTatHo"},"content":" DEADLINE, // Command to add a new \u0027Deadline\u0027 task","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"KinTatHo"},"content":" DELETE, // Command to delete a task","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"KinTatHo"},"content":" EVENT, // Command to add a new \u0027Event\u0027 task","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"KinTatHo"},"content":" UNKNOWN, // Represents an unrecognized command","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"KinTatHo"},"content":" SAVE; // Command to save the current task list to disk","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"KinTatHo"},"content":" * Converts a string to its corresponding Command enum value. If the string","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"KinTatHo"},"content":" * does not match any command, UNKNOWN is returned.","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"KinTatHo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"KinTatHo"},"content":" * @param str The input string representing a command.","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"KinTatHo"},"content":" * @return The corresponding Command enum value, or UNKNOWN if no match is found.","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"KinTatHo"},"content":" public static Command fromString(String str) {","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"KinTatHo"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"KinTatHo"},"content":" return Command.valueOf(str.toUpperCase());","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"KinTatHo"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"KinTatHo"},"content":" return UNKNOWN; // Return UNKNOWN if the input string is not a valid command","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"KinTatHo"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"KinTatHo":31}},{"path":"src/main/java/DateTimeUtil.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KinTatHo"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"KinTatHo"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"KinTatHo"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"KinTatHo"},"content":"import java.util.List;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"KinTatHo"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"KinTatHo"},"content":"public class DateTimeUtil {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"KinTatHo"},"content":" private static final List\u003cDateTimeFormatter\u003e FORMATTERS \u003d Arrays.asList(","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"KinTatHo"},"content":" DateTimeFormatter.ofPattern(\"dd MMM\"), // e.g., 30 Jan","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"KinTatHo"},"content":" DateTimeFormatter.ofPattern(\"MMM dd\"), // e.g., Jan 30","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"KinTatHo"},"content":" DateTimeFormatter.ofPattern(\"yyyy-MM-dd \"), // e.g., 2024-01-30","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"KinTatHo"},"content":" DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\"), // e.g., 2024-01-30 1306","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"KinTatHo"},"content":" DateTimeFormatter.ofPattern(\"d MMM yyyy\"), // e.g., 30 Jan 2024","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"KinTatHo"},"content":" DateTimeFormatter.ofPattern(\"d MMM yyyy HHmm\"), // e.g., 30 Jan 2024 1306","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"KinTatHo"},"content":" DateTimeFormatter.ofPattern(\"d MMMM yyyy\"), // e.g., 30 January 2024","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"KinTatHo"},"content":" DateTimeFormatter.ofPattern(\"d MMMM yyyy HHmm\"), // e.g., 30 January 2024 1306","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"KinTatHo"},"content":" DateTimeFormatter.ofPattern(\"dd/MM/yyyy\"), // e.g., 30/01/2024","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"KinTatHo"},"content":" DateTimeFormatter.ofPattern(\"dd/MM/yyyy HHmm\"), // e.g., 30/01/2024 1306","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"KinTatHo"},"content":" DateTimeFormatter.ofPattern(\"dd-MM-yyyy\"), // e.g., 30-01-2024","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"KinTatHo"},"content":" DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\"), // e.g., 30-01-2024 1306","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"KinTatHo"},"content":" DateTimeFormatter.ofPattern(\"yyyy/MM/dd\"), // e.g., 2024/01/30","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"KinTatHo"},"content":" DateTimeFormatter.ofPattern(\"yyyy/MM/dd HHmm\"), // e.g., 2024/01/30 1306","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"KinTatHo"},"content":" DateTimeFormatter.ofPattern(\"yyyyMMdd\"), // e.g., 20240130","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"KinTatHo"},"content":" DateTimeFormatter.ofPattern(\"yyyyMMdd HHmm\") // e.g., 20240130 1306","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"KinTatHo"},"content":" );","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"KinTatHo"},"content":" public static LocalDateTime parseDateTime(String dateTimeStr) throws DateTimeParseException {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"KinTatHo"},"content":" for (DateTimeFormatter formatter : FORMATTERS) {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"KinTatHo"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"KinTatHo"},"content":" return LocalDateTime.parse(dateTimeStr, formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"KinTatHo"},"content":" } catch (DateTimeParseException ignored) {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"KinTatHo"},"content":" // Try the next format","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"KinTatHo"},"content":" throw new DateTimeParseException(\"Failed to parse date-time: \" + dateTimeStr, dateTimeStr, 0);","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"KinTatHo"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"KinTatHo":38}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KinTatHo"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"KinTatHo"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"KinTatHo"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"KinTatHo"},"content":" * Represents a deadline task. It extends the Task class and adds a deadline time.","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"KinTatHo"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"KinTatHo"},"content":" private final LocalDateTime by; // Deadline time for the task","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"KinTatHo"},"content":" * Constructs a Deadline task with a description and a deadline time.","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"KinTatHo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"KinTatHo"},"content":" * @param description A string describing the deadline task.","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"KinTatHo"},"content":" * @param by A string representing the time by which the task should be completed.","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"KinTatHo"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"KinTatHo"},"content":" super(description); // Calls the constructor of the superclass Task","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"KinTatHo"},"content":" this.by \u003d by; // Sets the deadline time for this task","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"KinTatHo"},"content":" * Retrieves the deadline time of the task.","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"KinTatHo"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"KinTatHo"},"content":" * @return The deadline time of the task.","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"KinTatHo"},"content":" public LocalDateTime getBy() {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"KinTatHo"},"content":" return this.by;","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"KinTatHo"},"content":" * Retrieves the deadline time of the task as a string.","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"KinTatHo"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"KinTatHo"},"content":" * @return The deadline time of the task as a string.","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"KinTatHo"},"content":" public String getByString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"KinTatHo"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM d yyyy HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"KinTatHo"},"content":" return this.by.format(formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"KinTatHo"},"content":" * Returns a string representation of the deadline task, including its type,","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"KinTatHo"},"content":" * description, and deadline time.","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"KinTatHo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"KinTatHo"},"content":" * @return A formatted string with the type of task, its description, and the deadline.","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"KinTatHo"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"KinTatHo"},"content":" public String toString() {","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"KinTatHo"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy, HH:mm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"KinTatHo"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by.format(formatter) + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"KinTatHo"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"KinTatHo":51}},{"path":"src/main/java/EmptyDescriptionException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KinTatHo"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"KinTatHo"},"content":" * Exception thrown when an attempt is made to create a task with an empty description.","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"KinTatHo"},"content":"public class EmptyDescriptionException extends Exception {","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"KinTatHo"},"content":" * Constructs an EmptyDescriptionException with a detailed message.","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"KinTatHo"},"content":" * This exception is typically thrown when a task is created without a ","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"KinTatHo"},"content":" * necessary description.","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"KinTatHo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"KinTatHo"},"content":" * @param message A string providing details about the exception cause.","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"KinTatHo"},"content":" public EmptyDescriptionException(String message) {","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"KinTatHo"},"content":" super(message); // Call to the superclass (Exception) constructor with the detailed message","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"KinTatHo"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"KinTatHo":16}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KinTatHo"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"KinTatHo"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"KinTatHo"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"KinTatHo"},"content":" * Represents an event task.","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"KinTatHo"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"KinTatHo"},"content":" private final LocalDateTime from; // Event starting time","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"KinTatHo"},"content":" private final LocalDateTime to; // Event ending time","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"KinTatHo"},"content":" * Constructs an Event task with a description, start time, and end time.","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"KinTatHo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"KinTatHo"},"content":" * @param description A string describing the event.","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"KinTatHo"},"content":" * @param from A string representing the start time of the event.","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"KinTatHo"},"content":" * @param to A string representing the end time of the event.","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"KinTatHo"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"KinTatHo"},"content":" super(description); // Calls the constructor of the superclass Task","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"KinTatHo"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"KinTatHo"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"KinTatHo"},"content":" * Retrieves the start time of the event.","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"KinTatHo"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"KinTatHo"},"content":" * @return The start time of the event.","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"KinTatHo"},"content":" public LocalDateTime getFrom() {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"KinTatHo"},"content":" return this.from;","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"KinTatHo"},"content":" * Retrieves the start time of the event as a string.","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"KinTatHo"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"KinTatHo"},"content":" * @return The start time of the event as a string.","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"KinTatHo"},"content":" public String getFromString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"KinTatHo"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM d yyyy HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"KinTatHo"},"content":" return this.from.format(formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"KinTatHo"},"content":" * Retrieves the end time of the event.","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"KinTatHo"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"KinTatHo"},"content":" * @return The end time of the event.","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"KinTatHo"},"content":" public LocalDateTime getTo() {","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"KinTatHo"},"content":" return this.to;","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"KinTatHo"},"content":" * Retrieves the end time of the event as a string.","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"KinTatHo"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"KinTatHo"},"content":" * @return The end time of the event as a string.","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"KinTatHo"},"content":" public String getToString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"KinTatHo"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM d yyyy HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"KinTatHo"},"content":" return this.to.format(formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"KinTatHo"},"content":" * Returns a string representation of the event.","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"KinTatHo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"KinTatHo"},"content":" * @return A formatted string with the type of task, its description,","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"KinTatHo"},"content":" * start time, and end time.","lastModifiedDate":"2024-01-27"},{"lineNumber":64,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":65,"author":{"gitId":"KinTatHo"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":66,"author":{"gitId":"KinTatHo"},"content":" public String toString() {","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"KinTatHo"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy, HH:mm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"KinTatHo"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from.format(formatter) + \" to: \" + this.to + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":70,"author":{"gitId":"KinTatHo"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"KinTatHo":70}},{"path":"src/main/java/InvalidTaskException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KinTatHo"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"KinTatHo"},"content":" * Exception thrown when an invalid task operation is attempted.","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"KinTatHo"},"content":" * This can occur in various scenarios such as trying to access a task","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"KinTatHo"},"content":" * that doesn\u0027t exist or providing an invalid task number.","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"KinTatHo"},"content":"public class InvalidTaskException extends Exception {","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"KinTatHo"},"content":" * Constructs an InvalidTaskException with a detailed message.","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"KinTatHo"},"content":" * This message provides information about what makes the task operation invalid.","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"KinTatHo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"KinTatHo"},"content":" * @param message A string detailing the reason for the exception.","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"KinTatHo"},"content":" public InvalidTaskException(String message) {","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"KinTatHo"},"content":" super(message); // Call to the superclass (Exception) constructor with the detailed message","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"KinTatHo"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"KinTatHo":17}},{"path":"src/main/java/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KinTatHo"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"KinTatHo"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"KinTatHo"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"KinTatHo"},"content":"public class Parser {","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"KinTatHo"},"content":" private YodaUI yodaUI;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"KinTatHo"},"content":" * Constructor for CommandParser.","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"KinTatHo"},"content":" * @param yodaUI The instance of YodaUI to interact with the task list.","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"KinTatHo"},"content":" public Parser(YodaUI yodaUI) {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"KinTatHo"},"content":" this.yodaUI \u003d yodaUI;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"KinTatHo"},"content":" * Parses the user input and executes the corresponding command.","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"KinTatHo"},"content":" * @param input The input string provided by the user.","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"KinTatHo"},"content":" * @throws Exception if an error occurs during command execution.","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"KinTatHo"},"content":" public void parseAndExecute(String input) throws Exception {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"KinTatHo"},"content":" String[] parts \u003d input.split(\"\\\\s+\", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"KinTatHo"},"content":" Command command \u003d Command.fromString(parts[0]);","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"KinTatHo"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"KinTatHo"},"content":" switch (command) {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"KinTatHo"},"content":" case BYE:","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"KinTatHo"},"content":" yodaUI.printMessage(\"Farewell. See you again, I hope!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"KinTatHo"},"content":" yodaUI.stopChatting();","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"KinTatHo"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"KinTatHo"},"content":" case LIST:","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"KinTatHo"},"content":" yodaUI.showTasks();","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"KinTatHo"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"KinTatHo"},"content":" case SAVE:","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"KinTatHo"},"content":" yodaUI.saveTasks();","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"KinTatHo"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"KinTatHo"},"content":" case DELETE:","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"KinTatHo"},"content":" performTaskOperation(parts, yodaUI::deleteTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"KinTatHo"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"KinTatHo"},"content":" case MARK:","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"KinTatHo"},"content":" performTaskOperation(parts, yodaUI::markTaskAsDone);","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"KinTatHo"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"KinTatHo"},"content":" case UNMARK:","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"KinTatHo"},"content":" performTaskOperation(parts, yodaUI::markTaskAsUndone);","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"KinTatHo"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"KinTatHo"},"content":" case TODO:","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"KinTatHo"},"content":" yodaUI.addTask(new Todo(parts[1]));","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"KinTatHo"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"KinTatHo"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"KinTatHo"},"content":" addTaskWithDateTime(parts, Command.DEADLINE);","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"KinTatHo"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"KinTatHo"},"content":" case EVENT:","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"KinTatHo"},"content":" addTaskWithDateTime(parts, Command.EVENT);","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"KinTatHo"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"KinTatHo"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"KinTatHo"},"content":" yodaUI.printMessage(\"Sorry, I am. What that means, I do not know :-(\");","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"KinTatHo"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"KinTatHo"},"content":" yodaUI.printMessage(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"KinTatHo"},"content":" * Adds a task with a date and time to the task list.","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"KinTatHo"},"content":" * @param parts The split input containing the command and task description.","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"KinTatHo"},"content":" * @param commandType The type of task to add (deadline or event).","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"KinTatHo"},"content":" * @throws Exception if the task description or time is missing.","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"KinTatHo"},"content":" private void addTaskWithDateTime(String[] parts, Command commandType) throws Exception {","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"KinTatHo"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"KinTatHo"},"content":" throw new Exception(\"Required, a task description and time are, hmm.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"KinTatHo"},"content":" String[] taskParts \u003d parts[1].split(\" /by | /from \", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"KinTatHo"},"content":" if (taskParts.length \u003c 2) {","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"KinTatHo"},"content":" throw new Exception(\"Required, the task time is, yes.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"KinTatHo"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"KinTatHo"},"content":" if (commandType \u003d\u003d Command.DEADLINE) {","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"KinTatHo"},"content":" LocalDateTime by \u003d DateTimeUtil.parseDateTime(taskParts[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"KinTatHo"},"content":" yodaUI.addTask(new Deadline(taskParts[0], by));","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"KinTatHo"},"content":" } else if (commandType \u003d\u003d Command.EVENT) {","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"KinTatHo"},"content":" String[] timeParts \u003d taskParts[1].split(\" /to \", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"KinTatHo"},"content":" if (timeParts.length \u003c 2) {","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"KinTatHo"},"content":" throw new Exception(\"Required, the event end time is, yes.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"KinTatHo"},"content":" LocalDateTime from \u003d DateTimeUtil.parseDateTime(timeParts[0]);","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"KinTatHo"},"content":" LocalDateTime to \u003d DateTimeUtil.parseDateTime(timeParts[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"KinTatHo"},"content":" yodaUI.addTask(new Event(taskParts[0], from, to));","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"KinTatHo"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"KinTatHo"},"content":" throw new Exception(\"Invalid, the date format is. Use one of the accepted formats, you must.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"KinTatHo"},"content":" * Parses the task number from the user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"KinTatHo"},"content":" * @param input","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"KinTatHo"},"content":" * @return","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"KinTatHo"},"content":" * @throws Exception","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"KinTatHo"},"content":" private int parseTaskNumber(String input) throws Exception {","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"KinTatHo"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"KinTatHo"},"content":" int taskNumber \u003d Integer.parseInt(input);","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"KinTatHo"},"content":" if (taskNumber \u003c\u003d 0 || taskNumber \u003e yodaUI.getTaskCount()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"KinTatHo"},"content":" throw new Exception(\"Valid task number, provide you must.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"KinTatHo"},"content":" return taskNumber;","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"KinTatHo"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"KinTatHo"},"content":" throw new Exception(\"A number, enter you must.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"KinTatHo"},"content":" * Performs a task operation (delete, mark, unmark) based on the user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"KinTatHo"},"content":" * @param parts The split input containing the command and task number.","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"KinTatHo"},"content":" * @param operation The operation to be performed on the task.","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"KinTatHo"},"content":" * @throws Exception if the task number is invalid.","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"KinTatHo"},"content":" private void performTaskOperation(String[] parts, TaskOperation operation) throws Exception {","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"KinTatHo"},"content":" if (parts.length \u003e 1) {","lastModifiedDate":"2024-01-30"},{"lineNumber":123,"author":{"gitId":"KinTatHo"},"content":" int taskNumber \u003d this.parseTaskNumber(parts[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":124,"author":{"gitId":"KinTatHo"},"content":" operation.perform(taskNumber);","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"KinTatHo"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"KinTatHo"},"content":" throw new Exception(\"Specify a task number, you must.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":127,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":128,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":131,"author":{"gitId":"KinTatHo"},"content":" * Functional interface for task operations like delete, mark, and unmark.","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":133,"author":{"gitId":"KinTatHo"},"content":" @FunctionalInterface","lastModifiedDate":"2024-01-30"},{"lineNumber":134,"author":{"gitId":"KinTatHo"},"content":" private interface TaskOperation {","lastModifiedDate":"2024-01-30"},{"lineNumber":135,"author":{"gitId":"KinTatHo"},"content":" void perform(int taskNumber) throws Exception;","lastModifiedDate":"2024-01-30"},{"lineNumber":136,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"KinTatHo"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"KinTatHo":138}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KinTatHo"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"KinTatHo"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"KinTatHo"},"content":" * Represents a generic task with a description and a completion status.","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"KinTatHo"},"content":"public class Task {","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"KinTatHo"},"content":" private final String description; // Description of the task","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"KinTatHo"},"content":" private boolean isDone; // Flag to track if the task is done","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"KinTatHo"},"content":" * Constructs a Task with the given description. By default, the task is not done.","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"KinTatHo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"KinTatHo"},"content":" * @param description The description of the task.","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"KinTatHo"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"KinTatHo"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"KinTatHo"},"content":" this.isDone \u003d false; // Task is not done by default","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"KinTatHo"},"content":" * Retrieves the description of the task.","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"KinTatHo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"KinTatHo"},"content":" * @return The description of the task.","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"KinTatHo"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"KinTatHo"},"content":" return this.description;","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"KinTatHo"},"content":" * Gets the status of the task.","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"KinTatHo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"KinTatHo"},"content":" * @return true if the task is done, false otherwise.","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"KinTatHo"},"content":" public boolean isDone() {","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"KinTatHo"},"content":" return this.isDone;","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"KinTatHo"},"content":" * Marks the task as done.","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"KinTatHo"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"KinTatHo"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"KinTatHo"},"content":" * Marks the task as not done.","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"KinTatHo"},"content":" public void markAsUndone() {","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"KinTatHo"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"KinTatHo"},"content":" * Returns a string representation of the task, including its done status and description.","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"KinTatHo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"KinTatHo"},"content":" * @return A formatted string representing the task.","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"KinTatHo"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"KinTatHo"},"content":" public String toString() {","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"KinTatHo"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy, HH:mm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"KinTatHo"},"content":" return \"[\" + (isDone ? \"X\" : \" \") + \"] \" + this.getDescription();","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"KinTatHo"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"KinTatHo":63}},{"path":"src/main/java/TimeMissingException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KinTatHo"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"KinTatHo"},"content":" * Exception thrown when a required time information is missing.","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"KinTatHo"},"content":" * This can occur in scenarios such as creating a deadline or event task","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"KinTatHo"},"content":" * without specifying the necessary time details.","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"KinTatHo"},"content":"public class TimeMissingException extends Exception {","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"KinTatHo"},"content":" * Constructs a TimeMissingException with a detailed message.","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"KinTatHo"},"content":" * This message provides information about the missing time detail, ","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"KinTatHo"},"content":" * which is essential for certain types of tasks (e.g., deadlines, events).","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"KinTatHo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"KinTatHo"},"content":" * @param message A string detailing the reason for the exception, ","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"KinTatHo"},"content":" * typically indicating which time information is missing.","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"KinTatHo"},"content":" public TimeMissingException(String message) {","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"KinTatHo"},"content":" super(message); // Call to the superclass (Exception) constructor with the detailed message","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"KinTatHo"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"KinTatHo":19}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KinTatHo"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"KinTatHo"},"content":" * Represents a \"Todo\" task. It is a simple task with only a description.","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"KinTatHo"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"KinTatHo"},"content":" * Constructs a todo task with the given description.","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"KinTatHo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"KinTatHo"},"content":" * @param description A string describing the todo task.","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"KinTatHo"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"KinTatHo"},"content":" super(description); // Call to the superclass (Task) constructor","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"KinTatHo"},"content":" * Returns a string representation of the todo task.","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"KinTatHo"},"content":" * The method overrides the Task class\u0027s toString method to add the specific","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"KinTatHo"},"content":" * identifier for Todo tasks.","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"KinTatHo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"KinTatHo"},"content":" * @return A formatted string representing the todo task,","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"KinTatHo"},"content":" * prefixed with \"[T]\" to denote a Todo type task.","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"KinTatHo"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"KinTatHo"},"content":" public String toString() {","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"KinTatHo"},"content":" return \"[T]\" + super.toString(); // Adding the Todo identifier to the string representation","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"KinTatHo"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"KinTatHo":27}},{"path":"src/main/java/UnknownCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KinTatHo"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"KinTatHo"},"content":" * Exception thrown when an unrecognized command is encountered.","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"KinTatHo"},"content":" * This typically happens when user input does not match any of the expected commands.","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"KinTatHo"},"content":"public class UnknownCommandException extends Exception {","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"KinTatHo"},"content":" * Constructs an UnknownCommandException with a detailed message.","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"KinTatHo"},"content":" * The message usually indicates that the user input did not match any known command.","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"KinTatHo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"KinTatHo"},"content":" * @param message A string detailing the reason for the exception,","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"KinTatHo"},"content":" * such as \"Unknown command entered\".","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"KinTatHo"},"content":" public UnknownCommandException(String message) {","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"KinTatHo"},"content":" super(message); // Call to the superclass (Exception) constructor with the detailed message","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"KinTatHo"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"KinTatHo":17}},{"path":"src/main/java/Yoda.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KinTatHo"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"KinTatHo"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"KinTatHo"},"content":" * Main class for the Yoda chatbot application.","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"KinTatHo"},"content":"public class Yoda {","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"KinTatHo"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"KinTatHo"},"content":" // Name of the chatbot is set to \"Yoda\".","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"KinTatHo"},"content":" String chatbotName \u003d \"Yoda\";","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"KinTatHo"},"content":" // Create an instance of the YodaUI class with the specified chatbot name.","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"KinTatHo"},"content":" YodaUI yoda \u003d new YodaUI(chatbotName);","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"KinTatHo"},"content":" // Scanner to read user input from the console.","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"KinTatHo"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"KinTatHo"},"content":" Parser commandParser \u003d new Parser(yoda);","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"KinTatHo"},"content":" // Display the initial greeting message from Yoda.","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"KinTatHo"},"content":" yoda.printGreeting();","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"KinTatHo"},"content":" // Main loop to keep processing user input until the chatbot stops chatting.","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"KinTatHo"},"content":" while (yoda.isChatting()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"KinTatHo"},"content":" // Read the next line of input from the user.","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"KinTatHo"},"content":" String input \u003d scanner.nextLine();","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"KinTatHo"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"KinTatHo"},"content":" // Use CommandParser to handle the user input","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"KinTatHo"},"content":" commandParser.parseAndExecute(input);","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"KinTatHo"},"content":" } catch (EmptyDescriptionException | UnknownCommandException | InvalidTaskException | TimeMissingException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"KinTatHo"},"content":" yoda.printMessage(e.getMessage());","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"KinTatHo"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"KinTatHo"},"content":" // For any other exceptions, print an error message","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"KinTatHo"},"content":" yoda.printMessage(\"Error occurred: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"KinTatHo"},"content":" // Close the scanner to prevent resource leaks.","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"KinTatHo"},"content":" scanner.close();","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"KinTatHo"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"KinTatHo":40}},{"path":"src/main/java/YodaUI.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KinTatHo"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"KinTatHo"},"content":"import java.util.List;","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"KinTatHo"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"KinTatHo"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"KinTatHo"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"KinTatHo"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"KinTatHo"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"KinTatHo"},"content":"public class YodaUI {","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"KinTatHo"},"content":" private final ArrayList\u003cTask\u003e tasks; // List to store the tasks","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"KinTatHo"},"content":" private final String chatbotName; // Name of the chatbot","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"KinTatHo"},"content":" private boolean isChatting; // Flag to check if the chatbot is currently chatting","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"KinTatHo"},"content":" * Constructor to initialize the chatbot with a name.","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"KinTatHo"},"content":" * @param chatbotName The name of the chatbot.","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"KinTatHo"},"content":" public YodaUI(String chatbotName) {","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"KinTatHo"},"content":" this.chatbotName \u003d chatbotName;","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"KinTatHo"},"content":" this.isChatting \u003d true;","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"KinTatHo"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"KinTatHo"},"content":" * Checks if the chatbot is currently chatting.","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"KinTatHo"},"content":" * @return true if chatting, false otherwise.","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"KinTatHo"},"content":" public boolean isChatting() {","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"KinTatHo"},"content":" return this.isChatting;","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"KinTatHo"},"content":" * Stops the chatbot from chatting.","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"KinTatHo"},"content":" public void stopChatting() {","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"KinTatHo"},"content":" this.isChatting \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"KinTatHo"},"content":" * Marks a task as done.","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"KinTatHo"},"content":" * @param taskNumber The number of the task to mark as done.","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"KinTatHo"},"content":" public void markTaskAsDone(int taskNumber) {","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"KinTatHo"},"content":" Task task \u003d tasks.get(taskNumber - 1);","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"KinTatHo"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"KinTatHo"},"content":" printMessage(\"Done, this task is:\\n\" + task);","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"KinTatHo"},"content":" * Marks a task as undone.","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"KinTatHo"},"content":" * @param taskNumber The number of the task to mark as not done.","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"KinTatHo"},"content":" public void markTaskAsUndone(int taskNumber) {","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"KinTatHo"},"content":" Task task \u003d tasks.get(taskNumber - 1);","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"KinTatHo"},"content":" task.markAsUndone();","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"KinTatHo"},"content":" printMessage(\"Undone, this task remains:\\n\" + task);","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"KinTatHo"},"content":" * Deletes a task from the list.","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"KinTatHo"},"content":" * @param taskNumber The number of the task to be deleted.","lastModifiedDate":"2024-01-27"},{"lineNumber":64,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":65,"author":{"gitId":"KinTatHo"},"content":" public void deleteTask(int taskNumber) {","lastModifiedDate":"2024-01-27"},{"lineNumber":66,"author":{"gitId":"KinTatHo"},"content":" Task task \u003d tasks.remove(taskNumber - 1);","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"KinTatHo"},"content":" printMessage(\"Removed, this task has been:\\n\" + task + \"\\nTasks in the list, now you have \" + tasks.size() + \", hmm.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":68,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":69,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":70,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":71,"author":{"gitId":"KinTatHo"},"content":" * Adds a new task to the list.","lastModifiedDate":"2024-01-27"},{"lineNumber":72,"author":{"gitId":"KinTatHo"},"content":" * @param task The task to be added.","lastModifiedDate":"2024-01-27"},{"lineNumber":73,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":74,"author":{"gitId":"KinTatHo"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"KinTatHo"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-27"},{"lineNumber":76,"author":{"gitId":"KinTatHo"},"content":" printMessage(\"Hmm, added this task, I have:\\n\" + task + \"\\nTasks in the list, now you have \" + tasks.size() + \", hmm.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":77,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":78,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":79,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":80,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":81,"author":{"gitId":"KinTatHo"},"content":" * Displays all the tasks in the list.","lastModifiedDate":"2024-01-27"},{"lineNumber":82,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":83,"author":{"gitId":"KinTatHo"},"content":" public void showTasks() {","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"KinTatHo"},"content":" if (tasks.isEmpty()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":85,"author":{"gitId":"KinTatHo"},"content":" printMessage(\"Empty, your task list is.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":86,"author":{"gitId":"KinTatHo"},"content":" return;","lastModifiedDate":"2024-01-27"},{"lineNumber":87,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":88,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":89,"author":{"gitId":"KinTatHo"},"content":" StringBuilder response \u003d new StringBuilder(\"Tasks in your list, here they are:\\n\");","lastModifiedDate":"2024-01-27"},{"lineNumber":90,"author":{"gitId":"KinTatHo"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-27"},{"lineNumber":91,"author":{"gitId":"KinTatHo"},"content":" response.append(i + 1).append(\".\").append(tasks.get(i)).append(\"\\n\");","lastModifiedDate":"2024-01-27"},{"lineNumber":92,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":93,"author":{"gitId":"KinTatHo"},"content":" printMessage(response.toString().trim());","lastModifiedDate":"2024-01-27"},{"lineNumber":94,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":95,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":96,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":97,"author":{"gitId":"KinTatHo"},"content":" // You might need a method in YodaUI to get the size of the task list","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"KinTatHo"},"content":" public int getTaskCount() {","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"KinTatHo"},"content":" return tasks.size();","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":101,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":102,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":103,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":104,"author":{"gitId":"KinTatHo"},"content":" * Prints a message wrapped with lines for better readability.","lastModifiedDate":"2024-01-27"},{"lineNumber":105,"author":{"gitId":"KinTatHo"},"content":" * @param message The message to be printed.","lastModifiedDate":"2024-01-27"},{"lineNumber":106,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":107,"author":{"gitId":"KinTatHo"},"content":" public void printMessage(String message) {","lastModifiedDate":"2024-01-27"},{"lineNumber":108,"author":{"gitId":"KinTatHo"},"content":" printLine();","lastModifiedDate":"2024-01-27"},{"lineNumber":109,"author":{"gitId":"KinTatHo"},"content":" System.out.println(\"\" + message);","lastModifiedDate":"2024-01-27"},{"lineNumber":110,"author":{"gitId":"KinTatHo"},"content":" printLine();","lastModifiedDate":"2024-01-27"},{"lineNumber":111,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":112,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":113,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":114,"author":{"gitId":"KinTatHo"},"content":" * Saves the current task list to a file called yoda.txt.","lastModifiedDate":"2024-01-28"},{"lineNumber":115,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":116,"author":{"gitId":"KinTatHo"},"content":" public void saveTasks() {","lastModifiedDate":"2024-01-28"},{"lineNumber":117,"author":{"gitId":"KinTatHo"},"content":"// String currentDir \u003d System.getProperty(\"user.dir\");","lastModifiedDate":"2024-01-28"},{"lineNumber":118,"author":{"gitId":"KinTatHo"},"content":"// System.out.println(\"Current directory: \" + currentDir);","lastModifiedDate":"2024-01-28"},{"lineNumber":119,"author":{"gitId":"KinTatHo"},"content":" try (BufferedWriter writer \u003d new BufferedWriter(new FileWriter(\"./data/yoda.txt\"))) {","lastModifiedDate":"2024-01-28"},{"lineNumber":120,"author":{"gitId":"KinTatHo"},"content":" for (Task task : tasks) {","lastModifiedDate":"2024-01-28"},{"lineNumber":121,"author":{"gitId":"KinTatHo"},"content":" writer.write(taskToFileFormat(task) + System.lineSeparator());","lastModifiedDate":"2024-01-28"},{"lineNumber":122,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":123,"author":{"gitId":"KinTatHo"},"content":" printMessage(\"Saved, your task list has been.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":124,"author":{"gitId":"KinTatHo"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":125,"author":{"gitId":"KinTatHo"},"content":" printMessage(\"Error saving tasks: \" + e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":126,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":127,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":128,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":129,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":130,"author":{"gitId":"KinTatHo"},"content":" * Converts a task to a formatted string suitable for file storage.","lastModifiedDate":"2024-01-28"},{"lineNumber":131,"author":{"gitId":"KinTatHo"},"content":" * @param task The task to convert.","lastModifiedDate":"2024-01-28"},{"lineNumber":132,"author":{"gitId":"KinTatHo"},"content":" * @return A string representing the task in the file format.","lastModifiedDate":"2024-01-28"},{"lineNumber":133,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":134,"author":{"gitId":"KinTatHo"},"content":" private String taskToFileFormat(Task task) {","lastModifiedDate":"2024-01-28"},{"lineNumber":135,"author":{"gitId":"KinTatHo"},"content":" String status \u003d task.isDone() ? \"1\" : \"0\";","lastModifiedDate":"2024-01-28"},{"lineNumber":136,"author":{"gitId":"KinTatHo"},"content":" String type \u003d task instanceof Todo ? \"T\" :","lastModifiedDate":"2024-01-28"},{"lineNumber":137,"author":{"gitId":"KinTatHo"},"content":" task instanceof Deadline ? \"D\" :","lastModifiedDate":"2024-01-28"},{"lineNumber":138,"author":{"gitId":"KinTatHo"},"content":" task instanceof Event ? \"E\" : \"\";","lastModifiedDate":"2024-01-28"},{"lineNumber":139,"author":{"gitId":"KinTatHo"},"content":" String details \u003d task.getDescription();","lastModifiedDate":"2024-01-28"},{"lineNumber":140,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":141,"author":{"gitId":"KinTatHo"},"content":" if (task instanceof Deadline) {","lastModifiedDate":"2024-01-28"},{"lineNumber":142,"author":{"gitId":"KinTatHo"},"content":" Deadline deadlineTask \u003d (Deadline) task;","lastModifiedDate":"2024-01-28"},{"lineNumber":143,"author":{"gitId":"KinTatHo"},"content":" details +\u003d \" | \" + deadlineTask.getByString();","lastModifiedDate":"2024-01-30"},{"lineNumber":144,"author":{"gitId":"KinTatHo"},"content":" } else if (task instanceof Event) {","lastModifiedDate":"2024-01-28"},{"lineNumber":145,"author":{"gitId":"KinTatHo"},"content":" Event eventTask \u003d (Event) task;","lastModifiedDate":"2024-01-28"},{"lineNumber":146,"author":{"gitId":"KinTatHo"},"content":" details +\u003d \" | \" + eventTask.getFromString() + \" to \" + eventTask.getToString();","lastModifiedDate":"2024-01-30"},{"lineNumber":147,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":148,"author":{"gitId":"KinTatHo"},"content":" return type + \" | \" + status + \" | \" + details;","lastModifiedDate":"2024-01-28"},{"lineNumber":149,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":150,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":151,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":152,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":153,"author":{"gitId":"KinTatHo"},"content":" * Prints a line for visual separation in the console output.","lastModifiedDate":"2024-01-27"},{"lineNumber":154,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":155,"author":{"gitId":"KinTatHo"},"content":" private void printLine() {","lastModifiedDate":"2024-01-27"},{"lineNumber":156,"author":{"gitId":"KinTatHo"},"content":" System.out.println(\"________________________________________________________\");","lastModifiedDate":"2024-01-27"},{"lineNumber":157,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":158,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":159,"author":{"gitId":"KinTatHo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":160,"author":{"gitId":"KinTatHo"},"content":" * Prints a greeting message when the chatbot starts.","lastModifiedDate":"2024-01-27"},{"lineNumber":161,"author":{"gitId":"KinTatHo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":162,"author":{"gitId":"KinTatHo"},"content":" public void printGreeting() {","lastModifiedDate":"2024-01-27"},{"lineNumber":163,"author":{"gitId":"KinTatHo"},"content":" printLine();","lastModifiedDate":"2024-01-27"},{"lineNumber":164,"author":{"gitId":"KinTatHo"},"content":" System.out.println(\"Greetings! \" + chatbotName + \", I am\\nAssist you, may I?\");","lastModifiedDate":"2024-01-27"},{"lineNumber":165,"author":{"gitId":"KinTatHo"},"content":" printLine();","lastModifiedDate":"2024-01-27"},{"lineNumber":166,"author":{"gitId":"KinTatHo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":167,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":168,"author":{"gitId":"KinTatHo"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"KinTatHo":168}},{"path":"text-ui-test/data/yoda.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"KinTatHo"},"content":"T | 1 | read book","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"KinTatHo"},"content":"D | 0 | return book | Jun 6 2024 1800","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"KinTatHo"},"content":"E | 0 | project meeting | Aug 6 2024 1400 to Aug 6 2024 1600","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"KinTatHo"},"content":"T | 1 | join sports club","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"KinTatHo"},"content":"T | 0 | borrow book","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"KinTatHo":5}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"KinTatHo"},"content":"todo read book","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"KinTatHo"},"content":"mark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"KinTatHo"},"content":"unmark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"KinTatHo"},"content":"deadline return book /by 6 June 2024 1800","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"KinTatHo"},"content":"event project meeting /from 6 Aug 2024 1400 /to 6 Aug 2024 1600","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"KinTatHo"},"content":"todo join sports club","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"KinTatHo"},"content":"todo borrow book","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"KinTatHo"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"KinTatHo"},"content":"mark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"KinTatHo"},"content":"mark 4","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"KinTatHo"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"KinTatHo"},"content":"save","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"KinTatHo"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"KinTatHo":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":"KinTatHo"},"content":"java -classpath ..\\bin Yoda \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":20,"KinTatHo":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":"KinTatHo"},"content":"java -classpath ../bin Yoda \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":37,"KinTatHo":1}}] diff --git a/KinTatHo_ip_master/commits.json b/KinTatHo_ip_master/commits.json index 2974c96b..14d9952e 100644 --- a/KinTatHo_ip_master/commits.json +++ b/KinTatHo_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"KinTatHo":[{"date":"2024-01-23","commitResults":[{"hash":"7fc24b997641d6a420c7a4049ecfb01c71f6252a","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":10,"deletions":0}}}]},{"date":"2024-01-24","commitResults":[{"hash":"54c834880847d38b571d35eff3a47a4762468493","isMergeCommit":false,"messageTitle":"A-Enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"txt":{"insertions":14,"deletions":2},"java":{"insertions":4,"deletions":10},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}}]},{"date":"2024-01-27","commitResults":[{"hash":"073469be186516961f047405bfa3169523ab20e0","isMergeCommit":false,"messageTitle":"Level 6","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":470,"deletions":8}}},{"hash":"9a7e2937ecde2687e4ff09a8b8dc52312da925ef","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0}}},{"hash":"d8c93f1aa6f5ce6a71ffda56b94f302d6f313563","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":66,"deletions":2}}}]},{"date":"2024-01-28","commitResults":[{"hash":"c3a39dab0d0334541dcbe6df1032460143407d7f","isMergeCommit":false,"messageTitle":"This is Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"md":{"insertions":124,"deletions":22}}},{"hash":"86dc7321d721fc808f0fd65357c265b6d3a6b35a","isMergeCommit":false,"messageTitle":"Added Level-7","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":2}}},{"hash":"febfebd8a149ea7f9d041d35c6c9ee33ad12e33b","isMergeCommit":false,"messageTitle":"This is level-7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":63,"deletions":0}}},{"hash":"330cb45ba064015d22f968e89d03f8f3f09d32a8","isMergeCommit":true,"messageTitle":"merge conflicts","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-01-29","commitResults":[{"hash":"5c7cf9e2809f2f308d3250254dd728a88ab2ae2c","isMergeCommit":false,"messageTitle":"Resolved Deadline merge conflicts","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1}}}]},{"date":"2024-01-30","commitResults":[{"hash":"f1347b3737588999ccd3295e544bea939237d30a","isMergeCommit":false,"messageTitle":"changed to deadline","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":3}}}]}]},"authorFileTypeContributionMap":{"KinTatHo":{"java":544,"md":117,"fxml":0,"sh":1,"bat":1,"gradle":0,"txt":19}},"authorContributionVariance":{"KinTatHo":24365.97},"authorDisplayNameMap":{"KinTatHo":"CS2103T-F10-2 HO K.. TAT"}} +{"authorDailyContributionsMap":{"KinTatHo":[{"date":"2024-01-23","commitResults":[{"hash":"7fc24b997641d6a420c7a4049ecfb01c71f6252a","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":10,"deletions":0}}}]},{"date":"2024-01-24","commitResults":[{"hash":"54c834880847d38b571d35eff3a47a4762468493","isMergeCommit":false,"messageTitle":"A-Enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"txt":{"insertions":14,"deletions":2},"java":{"insertions":4,"deletions":10},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}}]},{"date":"2024-01-27","commitResults":[{"hash":"073469be186516961f047405bfa3169523ab20e0","isMergeCommit":false,"messageTitle":"Level 6","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":470,"deletions":8}}},{"hash":"9a7e2937ecde2687e4ff09a8b8dc52312da925ef","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0}}},{"hash":"d8c93f1aa6f5ce6a71ffda56b94f302d6f313563","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":66,"deletions":2}}}]},{"date":"2024-01-28","commitResults":[{"hash":"c3a39dab0d0334541dcbe6df1032460143407d7f","isMergeCommit":false,"messageTitle":"This is Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"md":{"insertions":124,"deletions":22}}},{"hash":"86dc7321d721fc808f0fd65357c265b6d3a6b35a","isMergeCommit":false,"messageTitle":"Added Level-7","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":2}}},{"hash":"febfebd8a149ea7f9d041d35c6c9ee33ad12e33b","isMergeCommit":false,"messageTitle":"This is level-7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":63,"deletions":0}}},{"hash":"330cb45ba064015d22f968e89d03f8f3f09d32a8","isMergeCommit":true,"messageTitle":"merge conflicts","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-01-29","commitResults":[{"hash":"5c7cf9e2809f2f308d3250254dd728a88ab2ae2c","isMergeCommit":false,"messageTitle":"Resolved Deadline merge conflicts","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1}}}]},{"date":"2024-01-30","commitResults":[{"hash":"f1347b3737588999ccd3295e544bea939237d30a","isMergeCommit":false,"messageTitle":"changed to deadline","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":3}}},{"hash":"a805824199eb58cb214443503ef141e4c686eb86","isMergeCommit":false,"messageTitle":"Created Parser class, DateTimeUtil, and Level-8","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":5},"java":{"insertions":261,"deletions":110}}},{"hash":"2d7cedf4cd32f520d1d703a474d038300cac9a9a","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-8\u0027 yes","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"KinTatHo":{"java":695,"md":117,"fxml":0,"sh":1,"bat":1,"gradle":0,"txt":18}},"authorContributionVariance":{"KinTatHo":31290.416},"authorDisplayNameMap":{"KinTatHo":"CS2103T-F10-2 HO K.. TAT"}} diff --git a/LWS49_ip_master/authorship.json b/LWS49_ip_master/authorship.json index af8d4d52..36d6eaf8 100644 --- a/LWS49_ip_master/authorship.json +++ b/LWS49_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LWS49"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"LWS49"},"content":" protected String by;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"LWS49"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"LWS49"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"LWS49"},"content":" return \"[D]\" + super.toString() + \"(by: \" + by + \")\";","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"LWS49":13}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LWS49"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"LWS49"},"content":" protected String from;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":" protected String to;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"LWS49"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"LWS49"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"LWS49"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"LWS49"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":" return \"[E]\" + super.toString() + \"(from: \" + from + \" to: \" + to + \")\";","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"LWS49"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"LWS49":15}},{"path":"src/main/java/Luke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LWS49"},"content":"import java.util.*;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":"public class Luke {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"LWS49"},"content":" static String[] validCommands \u003d {\"bye\", \"list\", \"unmark\", \"mark\", \"todo\", \"event\", \"deadline\", \"delete\"};","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":" private static boolean isCommandValid(String command) {","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":" for (String validCommand: validCommands) {","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":" if (command.equals(validCommand)) {","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":" return true;","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":" return false;","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"LWS49"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"LWS49"},"content":" String name \u003d \"Luke\";","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"LWS49"},"content":" ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"LWS49"},"content":" int noTasks \u003d 0;","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"LWS49"},"content":" System.out.println(\"Hello! I\u0027m \" + name + \"\\nWhat can I do for you?\");","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"LWS49"},"content":" Scanner scanner \u003d new Scanner (System.in);","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"LWS49"},"content":" String input \u003d scanner.nextLine();","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"LWS49"},"content":" while (!input.equals(\"bye\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"LWS49"},"content":" String[] splited \u003d input.split(\" \");","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"LWS49"},"content":" String command \u003d splited[0];","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"LWS49"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"LWS49"},"content":" if (!isCommandValid(command)) {","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"LWS49"},"content":" throw new LukeException(\"Invalid command/task type.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"LWS49"},"content":" } catch (LukeException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"LWS49"},"content":" System.out.println(e);","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"LWS49"},"content":" switch (command) {","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"LWS49"},"content":" case \"list\":","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"LWS49"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"LWS49"},"content":" for (int i \u003d 0; i \u003c noTasks; i++) {","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"LWS49"},"content":" System.out.println((i + 1) + \". \" + taskList.get(i).toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"LWS49"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"LWS49"},"content":" case \"mark\":","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"LWS49"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"LWS49"},"content":" int markIndex \u003d Integer.valueOf(splited[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"LWS49"},"content":" if (markIndex \u003c\u003d 0 || markIndex \u003e noTasks) {","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"LWS49"},"content":" throw new LukeException(\"Task does not exist. Please give a valid task number.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"LWS49"},"content":" Task markTask \u003d taskList.get(markIndex - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"LWS49"},"content":" markTask.setToDone();","lastModifiedDate":"2024-01-23"},{"lineNumber":54,"author":{"gitId":"LWS49"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":55,"author":{"gitId":"LWS49"},"content":" System.out.println(markTask.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":56,"author":{"gitId":"LWS49"},"content":" } catch (LukeException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"LWS49"},"content":" System.out.println(e);","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"LWS49"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":60,"author":{"gitId":"LWS49"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-23"},{"lineNumber":61,"author":{"gitId":"LWS49"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"LWS49"},"content":" int unmarkIndex \u003d Integer.valueOf(splited[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":63,"author":{"gitId":"LWS49"},"content":" if (unmarkIndex \u003c\u003d 0 || unmarkIndex \u003e noTasks) {","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"LWS49"},"content":" throw new LukeException(\"Task does not exist. Please give a valid task number.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"LWS49"},"content":" Task unmarkTask \u003d taskList.get(unmarkIndex - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"LWS49"},"content":" unmarkTask.setToNotDone();","lastModifiedDate":"2024-01-23"},{"lineNumber":68,"author":{"gitId":"LWS49"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":69,"author":{"gitId":"LWS49"},"content":" System.out.println(unmarkTask.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":70,"author":{"gitId":"LWS49"},"content":" } catch (LukeException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"LWS49"},"content":" System.out.println(e);","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":73,"author":{"gitId":"LWS49"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":74,"author":{"gitId":"LWS49"},"content":" case \"todo\":","lastModifiedDate":"2024-01-23"},{"lineNumber":75,"author":{"gitId":"LWS49"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":76,"author":{"gitId":"LWS49"},"content":" if (input.substring(4).trim().isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":77,"author":{"gitId":"LWS49"},"content":" throw new LukeException(\"Invalid command. The description cannot be empty.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":78,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":79,"author":{"gitId":"LWS49"},"content":" Todo todo \u003d new Todo(input.substring(5));","lastModifiedDate":"2024-01-23"},{"lineNumber":80,"author":{"gitId":"LWS49"},"content":" taskList.add(todo);","lastModifiedDate":"2024-01-24"},{"lineNumber":81,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":82,"author":{"gitId":"LWS49"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":83,"author":{"gitId":"LWS49"},"content":" System.out.println(todo.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":84,"author":{"gitId":"LWS49"},"content":" noTasks++;","lastModifiedDate":"2024-01-23"},{"lineNumber":85,"author":{"gitId":"LWS49"},"content":" System.out.println(\"Now you have \" + noTasks + \" tasks in the list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":86,"author":{"gitId":"LWS49"},"content":" } catch (LukeException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":87,"author":{"gitId":"LWS49"},"content":" System.out.println(e);","lastModifiedDate":"2024-01-24"},{"lineNumber":88,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":89,"author":{"gitId":"LWS49"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":90,"author":{"gitId":"LWS49"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-23"},{"lineNumber":91,"author":{"gitId":"LWS49"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":92,"author":{"gitId":"LWS49"},"content":" String[] deadlineSplit \u003d input.split(\"/\");","lastModifiedDate":"2024-01-23"},{"lineNumber":93,"author":{"gitId":"LWS49"},"content":" if (deadlineSplit.length \u003c 2","lastModifiedDate":"2024-01-24"},{"lineNumber":94,"author":{"gitId":"LWS49"},"content":" || !deadlineSplit[1].substring(0,2).equals(\"by\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":95,"author":{"gitId":"LWS49"},"content":" throw new LukeException(\"Invalid command. Please follow the format for deadline tasks.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":96,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":97,"author":{"gitId":"LWS49"},"content":" if (deadlineSplit[0].substring(9).trim().isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":98,"author":{"gitId":"LWS49"},"content":" throw new LukeException(\"Invalid command. The description cannot be empty.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":99,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":100,"author":{"gitId":"LWS49"},"content":" if (deadlineSplit[1].trim().length() \u003c\u003d 2) {","lastModifiedDate":"2024-01-24"},{"lineNumber":101,"author":{"gitId":"LWS49"},"content":" throw new LukeException(\"Invalid command. The deadline cannot be empty.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":102,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":103,"author":{"gitId":"LWS49"},"content":" String deadlineDescription \u003d deadlineSplit[0].substring(9);","lastModifiedDate":"2024-01-23"},{"lineNumber":104,"author":{"gitId":"LWS49"},"content":" String by \u003d deadlineSplit[1].substring(3);","lastModifiedDate":"2024-01-23"},{"lineNumber":105,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":106,"author":{"gitId":"LWS49"},"content":" Deadline deadline \u003d new Deadline(deadlineDescription, by);","lastModifiedDate":"2024-01-23"},{"lineNumber":107,"author":{"gitId":"LWS49"},"content":" taskList.add(deadline);","lastModifiedDate":"2024-01-24"},{"lineNumber":108,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":109,"author":{"gitId":"LWS49"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":110,"author":{"gitId":"LWS49"},"content":" System.out.println(deadline.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":111,"author":{"gitId":"LWS49"},"content":" noTasks++;","lastModifiedDate":"2024-01-23"},{"lineNumber":112,"author":{"gitId":"LWS49"},"content":" System.out.println(\"Now you have \" + noTasks + \" tasks in the list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":113,"author":{"gitId":"LWS49"},"content":" } catch (LukeException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":114,"author":{"gitId":"LWS49"},"content":" System.out.println(e);","lastModifiedDate":"2024-01-24"},{"lineNumber":115,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":116,"author":{"gitId":"LWS49"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":117,"author":{"gitId":"LWS49"},"content":" case \"event\":","lastModifiedDate":"2024-01-23"},{"lineNumber":118,"author":{"gitId":"LWS49"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":119,"author":{"gitId":"LWS49"},"content":" String[] eventSplit \u003d input.split(\"/\");","lastModifiedDate":"2024-01-23"},{"lineNumber":120,"author":{"gitId":"LWS49"},"content":" if (eventSplit.length \u003c 3","lastModifiedDate":"2024-01-24"},{"lineNumber":121,"author":{"gitId":"LWS49"},"content":" || !eventSplit[1].substring(0,4).equals(\"from\")","lastModifiedDate":"2024-01-24"},{"lineNumber":122,"author":{"gitId":"LWS49"},"content":" || !eventSplit[2].substring(0,2).equals(\"to\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":123,"author":{"gitId":"LWS49"},"content":" throw new LukeException(\"Invalid command. Please follow the format for event tasks.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":124,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":125,"author":{"gitId":"LWS49"},"content":" if (eventSplit[0].substring(6).trim().isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":126,"author":{"gitId":"LWS49"},"content":" throw new LukeException(\"Invalid command. The description cannot be empty.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":127,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":128,"author":{"gitId":"LWS49"},"content":" if (eventSplit[1].trim().length() \u003c\u003d 4 ) {","lastModifiedDate":"2024-01-24"},{"lineNumber":129,"author":{"gitId":"LWS49"},"content":" throw new LukeException(\"Invalid command. The from section cannot be empty.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":130,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":131,"author":{"gitId":"LWS49"},"content":" if (eventSplit[2].trim().length() \u003c\u003d 2 ) {","lastModifiedDate":"2024-01-24"},{"lineNumber":132,"author":{"gitId":"LWS49"},"content":" throw new LukeException(\"Invalid command. The to section cannot be empty.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":133,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":134,"author":{"gitId":"LWS49"},"content":" String eventDescription \u003d eventSplit[0].substring(6);","lastModifiedDate":"2024-01-23"},{"lineNumber":135,"author":{"gitId":"LWS49"},"content":" String from \u003d eventSplit[1].substring(5);","lastModifiedDate":"2024-01-23"},{"lineNumber":136,"author":{"gitId":"LWS49"},"content":" String to \u003d eventSplit[2].substring(3);","lastModifiedDate":"2024-01-23"},{"lineNumber":137,"author":{"gitId":"LWS49"},"content":" Event event \u003d new Event(eventDescription, from, to);","lastModifiedDate":"2024-01-23"},{"lineNumber":138,"author":{"gitId":"LWS49"},"content":" taskList.add(event);","lastModifiedDate":"2024-01-24"},{"lineNumber":139,"author":{"gitId":"LWS49"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":140,"author":{"gitId":"LWS49"},"content":" System.out.println(event.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":141,"author":{"gitId":"LWS49"},"content":" noTasks++;","lastModifiedDate":"2024-01-23"},{"lineNumber":142,"author":{"gitId":"LWS49"},"content":" System.out.println(\"Now you have \" + noTasks + \" tasks in the list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":143,"author":{"gitId":"LWS49"},"content":" } catch (LukeException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":144,"author":{"gitId":"LWS49"},"content":" System.out.println(e);","lastModifiedDate":"2024-01-24"},{"lineNumber":145,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":146,"author":{"gitId":"LWS49"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":147,"author":{"gitId":"LWS49"},"content":" case \"delete\":","lastModifiedDate":"2024-01-24"},{"lineNumber":148,"author":{"gitId":"LWS49"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":149,"author":{"gitId":"LWS49"},"content":" int deleteIndex \u003d Integer.valueOf(splited[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":150,"author":{"gitId":"LWS49"},"content":" if (deleteIndex \u003c\u003d 0 || deleteIndex \u003e noTasks) {","lastModifiedDate":"2024-01-24"},{"lineNumber":151,"author":{"gitId":"LWS49"},"content":" throw new LukeException(\"Task does not exist. Please give a valid task number.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":152,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":153,"author":{"gitId":"LWS49"},"content":" Task deleteTask \u003d taskList.get(deleteIndex - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":154,"author":{"gitId":"LWS49"},"content":" taskList.remove(deleteIndex - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":155,"author":{"gitId":"LWS49"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":156,"author":{"gitId":"LWS49"},"content":" System.out.println(deleteTask.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":157,"author":{"gitId":"LWS49"},"content":" noTasks--;","lastModifiedDate":"2024-01-24"},{"lineNumber":158,"author":{"gitId":"LWS49"},"content":" System.out.println(\"Now you have \" + noTasks + \" tasks in the list.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":159,"author":{"gitId":"LWS49"},"content":" } catch (LukeException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":160,"author":{"gitId":"LWS49"},"content":" System.out.println(e);","lastModifiedDate":"2024-01-24"},{"lineNumber":161,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":162,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":163,"author":{"gitId":"LWS49"},"content":" input \u003d scanner.nextLine();","lastModifiedDate":"2024-01-23"},{"lineNumber":164,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":165,"author":{"gitId":"LWS49"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":166,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":167,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":168,"author":{"gitId":"LWS49"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"LWS49":168}},{"path":"src/main/java/LukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LWS49"},"content":"public class LukeException extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"LWS49"},"content":" public LukeException(String message) {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":" super(message);","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"LWS49"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"LWS49":5}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LWS49"},"content":"public class Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"LWS49"},"content":" protected boolean done;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":" protected String name;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"LWS49"},"content":" public Task (String name) {","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"LWS49"},"content":" this.done \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"LWS49"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"LWS49"},"content":" if (done) {","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":" return \"[X] \" + name;","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"LWS49"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"LWS49"},"content":" return \"[ ] \" + name;","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"LWS49"},"content":" public void setToDone() {","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"LWS49"},"content":" this.done \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"LWS49"},"content":" public void setToNotDone() {","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"LWS49"},"content":" this.done \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"LWS49"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"LWS49":26}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LWS49"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"LWS49"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"LWS49":11}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"LWS49"},"content":"todo borrow book","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"LWS49"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"LWS49"},"content":"mark 1","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"LWS49"},"content":"mark 2","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":"unmark 1","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":"mark 4","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":"delete 4","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"LWS49"},"content":"delete 3","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"LWS49"},"content":"hehe","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":"todo","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"LWS49"},"content":"deadline read book by 3","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"LWS49"},"content":"deadline read book /start 3","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"LWS49"},"content":"deadline /by 3","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"LWS49"},"content":"deadline read book /by","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"LWS49"},"content":"event project meeting /from Mon 2pm to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"LWS49"},"content":"event project meeting /fro Mon 2pm /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"LWS49"},"content":"event project meeting /fro Mon 2pm /until 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"LWS49"},"content":"event /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"LWS49"},"content":"event project meeting /from /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"LWS49"},"content":"event project meeting /from Mon 2pm /to","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"LWS49"},"content":"bye","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"LWS49":24}},{"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":"LWS49"},"content":"javac -cp C:\\Users\\user\\ip\\src\\main\\java -Xlint:none -d C:\\Users\\user\\ip\\bin C:\\Users\\user\\ip\\src\\main\\java\\*.java","lastModifiedDate":"2024-01-23"},{"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":"LWS49"},"content":"java -classpath C:\\Users\\user\\ip\\bin Luke \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":{"LWS49":2,"-":19}}] +[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LWS49"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"LWS49"},"content":" protected String by;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"LWS49"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"LWS49"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"LWS49"},"content":" return \"[D]\" + super.toString() + \"(by: \" + by + \")\";","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"LWS49":13}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LWS49"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"LWS49"},"content":" protected String from;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":" protected String to;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"LWS49"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"LWS49"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"LWS49"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"LWS49"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":" return \"[E]\" + super.toString() + \"(from: \" + from + \" to: \" + to + \")\";","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"LWS49"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"LWS49":15}},{"path":"src/main/java/Luke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LWS49"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"LWS49"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"LWS49"},"content":"import java.util.*;","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":"public class Luke {","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":" static String[] validCommands \u003d {\"bye\", \"list\", \"unmark\", \"mark\", \"todo\", \"event\", \"deadline\", \"delete\"};","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"LWS49"},"content":" static String directoryPath \u003d \"./data\";","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":" static String fileName \u003d \"list.txt\";","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"LWS49"},"content":" static File file \u003d new File (directoryPath, fileName);","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"LWS49"},"content":" static boolean fileIsEmpty \u003d true;","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"LWS49"},"content":" private static boolean isCommandValid(String command) {","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"LWS49"},"content":" for (String validCommand: validCommands) {","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"LWS49"},"content":" if (command.equals(validCommand)) {","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"LWS49"},"content":" return true;","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"LWS49"},"content":" return false;","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"LWS49"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"LWS49"},"content":" String name \u003d \"Luke\";","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"LWS49"},"content":" ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"LWS49"},"content":" ArrayList\u003cString\u003e saveTaskList \u003d new ArrayList\u003cString\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"LWS49"},"content":" int noTasks \u003d 0;","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"LWS49"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"LWS49"},"content":" File directory \u003d file.getParentFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"LWS49"},"content":" if (!directory.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"LWS49"},"content":" directory.mkdirs();","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"LWS49"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"LWS49"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"LWS49"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"LWS49"},"content":" System.out.println(\"Failed to save file: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"LWS49"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"LWS49"},"content":" Scanner myReader \u003d new Scanner(file);","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"LWS49"},"content":" while (myReader.hasNextLine()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"LWS49"},"content":" String data \u003d myReader.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"LWS49"},"content":" if (data !\u003d \"\") {","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"LWS49"},"content":" saveTaskList.add(data);","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"LWS49"},"content":" noTasks++;","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"LWS49"},"content":" myReader.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"LWS49"},"content":" fileIsEmpty \u003d saveTaskList.isEmpty();","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"LWS49"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"LWS49"},"content":" System.out.println(\"File not found.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"LWS49"},"content":" saveTaskList.forEach(taskString -\u003e {","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"LWS49"},"content":" String taskType \u003d taskString.substring(1, 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"LWS49"},"content":" switch (taskType) {","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"LWS49"},"content":" case \"T\":","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"LWS49"},"content":" Todo todo \u003d new Todo(taskString.substring(7).trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"LWS49"},"content":" taskList.add(todo);","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"LWS49"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"LWS49"},"content":" case \"D\":","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"LWS49"},"content":" String[] deadlineSplit \u003d taskString.split(\"by: \");","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"LWS49"},"content":" String deadlineDescription \u003d deadlineSplit[0].substring(7, deadlineSplit[0].length() - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"LWS49"},"content":" String by \u003d deadlineSplit[1].substring(0, deadlineSplit[1].length() - 1).trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"LWS49"},"content":" Deadline deadline \u003d new Deadline(deadlineDescription, by);","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"LWS49"},"content":" taskList.add(deadline);","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"LWS49"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"LWS49"},"content":" case \"E\":","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"LWS49"},"content":" String[] eventFirstSplit \u003d taskString.split(\"from: \");","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"LWS49"},"content":" String[] eventSecondSplit \u003d eventFirstSplit[1].split(\" to: \");","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"LWS49"},"content":" String eventDescription \u003d eventFirstSplit[0].substring(7, eventFirstSplit[0].length() - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"LWS49"},"content":" String from \u003d eventSecondSplit[0].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"LWS49"},"content":" String to \u003d eventSecondSplit[1].substring(0, eventSecondSplit[1].length() - 1).trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"LWS49"},"content":" Event event \u003d new Event(eventDescription, from, to);","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"LWS49"},"content":" taskList.add(event);","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"LWS49"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"LWS49"},"content":" });","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"LWS49"},"content":" System.out.println(\"Hello! I\u0027m \" + name + \"\\nWhat can I do for you?\");","lastModifiedDate":"2024-01-23"},{"lineNumber":93,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":94,"author":{"gitId":"LWS49"},"content":" Scanner scanner \u003d new Scanner (System.in);","lastModifiedDate":"2024-01-23"},{"lineNumber":95,"author":{"gitId":"LWS49"},"content":" String input \u003d scanner.nextLine();","lastModifiedDate":"2024-01-23"},{"lineNumber":96,"author":{"gitId":"LWS49"},"content":" while (!input.equals(\"bye\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":97,"author":{"gitId":"LWS49"},"content":" String[] splited \u003d input.split(\" \");","lastModifiedDate":"2024-01-23"},{"lineNumber":98,"author":{"gitId":"LWS49"},"content":" String command \u003d splited[0];","lastModifiedDate":"2024-01-23"},{"lineNumber":99,"author":{"gitId":"LWS49"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":100,"author":{"gitId":"LWS49"},"content":" if (!isCommandValid(command)) {","lastModifiedDate":"2024-01-24"},{"lineNumber":101,"author":{"gitId":"LWS49"},"content":" throw new LukeException(\"Invalid command/task type.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":102,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":103,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":104,"author":{"gitId":"LWS49"},"content":" } catch (LukeException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":105,"author":{"gitId":"LWS49"},"content":" System.out.println(e);","lastModifiedDate":"2024-01-24"},{"lineNumber":106,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":107,"author":{"gitId":"LWS49"},"content":" switch (command) {","lastModifiedDate":"2024-01-23"},{"lineNumber":108,"author":{"gitId":"LWS49"},"content":" case \"list\":","lastModifiedDate":"2024-01-23"},{"lineNumber":109,"author":{"gitId":"LWS49"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":110,"author":{"gitId":"LWS49"},"content":" for (int i \u003d 0; i \u003c noTasks; i++) {","lastModifiedDate":"2024-01-23"},{"lineNumber":111,"author":{"gitId":"LWS49"},"content":" System.out.println((i + 1) + \". \" + taskList.get(i).toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":112,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":113,"author":{"gitId":"LWS49"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":114,"author":{"gitId":"LWS49"},"content":" case \"mark\":","lastModifiedDate":"2024-01-23"},{"lineNumber":115,"author":{"gitId":"LWS49"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":116,"author":{"gitId":"LWS49"},"content":" int markIndex \u003d Integer.valueOf(splited[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":117,"author":{"gitId":"LWS49"},"content":" if (markIndex \u003c\u003d 0 || markIndex \u003e noTasks) {","lastModifiedDate":"2024-01-24"},{"lineNumber":118,"author":{"gitId":"LWS49"},"content":" throw new LukeException(\"Task does not exist. Please give a valid task number.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":119,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":120,"author":{"gitId":"LWS49"},"content":" Task markTask \u003d taskList.get(markIndex - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":121,"author":{"gitId":"LWS49"},"content":" markTask.setToDone();","lastModifiedDate":"2024-01-23"},{"lineNumber":122,"author":{"gitId":"LWS49"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":123,"author":{"gitId":"LWS49"},"content":" System.out.println(markTask.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":124,"author":{"gitId":"LWS49"},"content":" } catch (LukeException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":125,"author":{"gitId":"LWS49"},"content":" System.out.println(e);","lastModifiedDate":"2024-01-24"},{"lineNumber":126,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":127,"author":{"gitId":"LWS49"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":128,"author":{"gitId":"LWS49"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-23"},{"lineNumber":129,"author":{"gitId":"LWS49"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":130,"author":{"gitId":"LWS49"},"content":" int unmarkIndex \u003d Integer.valueOf(splited[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":131,"author":{"gitId":"LWS49"},"content":" if (unmarkIndex \u003c\u003d 0 || unmarkIndex \u003e noTasks) {","lastModifiedDate":"2024-01-24"},{"lineNumber":132,"author":{"gitId":"LWS49"},"content":" throw new LukeException(\"Task does not exist. Please give a valid task number.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":133,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":134,"author":{"gitId":"LWS49"},"content":" Task unmarkTask \u003d taskList.get(unmarkIndex - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":135,"author":{"gitId":"LWS49"},"content":" unmarkTask.setToNotDone();","lastModifiedDate":"2024-01-23"},{"lineNumber":136,"author":{"gitId":"LWS49"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":137,"author":{"gitId":"LWS49"},"content":" System.out.println(unmarkTask.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":138,"author":{"gitId":"LWS49"},"content":" } catch (LukeException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":139,"author":{"gitId":"LWS49"},"content":" System.out.println(e);","lastModifiedDate":"2024-01-24"},{"lineNumber":140,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":141,"author":{"gitId":"LWS49"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":142,"author":{"gitId":"LWS49"},"content":" case \"todo\":","lastModifiedDate":"2024-01-23"},{"lineNumber":143,"author":{"gitId":"LWS49"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":144,"author":{"gitId":"LWS49"},"content":" if (input.substring(4).trim().isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":145,"author":{"gitId":"LWS49"},"content":" throw new LukeException(\"Invalid command. The description cannot be empty.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":146,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":147,"author":{"gitId":"LWS49"},"content":" Todo todo \u003d new Todo(input.substring(5));","lastModifiedDate":"2024-01-23"},{"lineNumber":148,"author":{"gitId":"LWS49"},"content":" taskList.add(todo);","lastModifiedDate":"2024-01-24"},{"lineNumber":149,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":150,"author":{"gitId":"LWS49"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":151,"author":{"gitId":"LWS49"},"content":" System.out.println(todo.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":152,"author":{"gitId":"LWS49"},"content":" noTasks++;","lastModifiedDate":"2024-01-23"},{"lineNumber":153,"author":{"gitId":"LWS49"},"content":" System.out.println(\"Now you have \" + noTasks + \" tasks in the list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":154,"author":{"gitId":"LWS49"},"content":" } catch (LukeException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":155,"author":{"gitId":"LWS49"},"content":" System.out.println(e);","lastModifiedDate":"2024-01-24"},{"lineNumber":156,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":157,"author":{"gitId":"LWS49"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":158,"author":{"gitId":"LWS49"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-23"},{"lineNumber":159,"author":{"gitId":"LWS49"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":160,"author":{"gitId":"LWS49"},"content":" String[] deadlineSplit \u003d input.split(\"/\");","lastModifiedDate":"2024-01-23"},{"lineNumber":161,"author":{"gitId":"LWS49"},"content":" if (deadlineSplit.length \u003c 2","lastModifiedDate":"2024-01-24"},{"lineNumber":162,"author":{"gitId":"LWS49"},"content":" || !deadlineSplit[1].substring(0,2).equals(\"by\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":163,"author":{"gitId":"LWS49"},"content":" throw new LukeException(\"Invalid command. Please follow the format for deadline tasks.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":164,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":165,"author":{"gitId":"LWS49"},"content":" if (deadlineSplit[0].substring(9).trim().isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":166,"author":{"gitId":"LWS49"},"content":" throw new LukeException(\"Invalid command. The description cannot be empty.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":167,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":168,"author":{"gitId":"LWS49"},"content":" if (deadlineSplit[1].trim().length() \u003c\u003d 2) {","lastModifiedDate":"2024-01-24"},{"lineNumber":169,"author":{"gitId":"LWS49"},"content":" throw new LukeException(\"Invalid command. The deadline cannot be empty.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":170,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":171,"author":{"gitId":"LWS49"},"content":" String deadlineDescription \u003d deadlineSplit[0].substring(9);","lastModifiedDate":"2024-01-23"},{"lineNumber":172,"author":{"gitId":"LWS49"},"content":" String by \u003d deadlineSplit[1].substring(3);","lastModifiedDate":"2024-01-23"},{"lineNumber":173,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":174,"author":{"gitId":"LWS49"},"content":" Deadline deadline \u003d new Deadline(deadlineDescription, by);","lastModifiedDate":"2024-01-23"},{"lineNumber":175,"author":{"gitId":"LWS49"},"content":" taskList.add(deadline);","lastModifiedDate":"2024-01-24"},{"lineNumber":176,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":177,"author":{"gitId":"LWS49"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":178,"author":{"gitId":"LWS49"},"content":" System.out.println(deadline.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":179,"author":{"gitId":"LWS49"},"content":" noTasks++;","lastModifiedDate":"2024-01-23"},{"lineNumber":180,"author":{"gitId":"LWS49"},"content":" System.out.println(\"Now you have \" + noTasks + \" tasks in the list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":181,"author":{"gitId":"LWS49"},"content":" } catch (LukeException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":182,"author":{"gitId":"LWS49"},"content":" System.out.println(e);","lastModifiedDate":"2024-01-24"},{"lineNumber":183,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":184,"author":{"gitId":"LWS49"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":185,"author":{"gitId":"LWS49"},"content":" case \"event\":","lastModifiedDate":"2024-01-23"},{"lineNumber":186,"author":{"gitId":"LWS49"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":187,"author":{"gitId":"LWS49"},"content":" String[] eventSplit \u003d input.split(\"/\");","lastModifiedDate":"2024-01-23"},{"lineNumber":188,"author":{"gitId":"LWS49"},"content":" if (eventSplit.length \u003c 3","lastModifiedDate":"2024-01-24"},{"lineNumber":189,"author":{"gitId":"LWS49"},"content":" || !eventSplit[1].substring(0,4).equals(\"from\")","lastModifiedDate":"2024-01-24"},{"lineNumber":190,"author":{"gitId":"LWS49"},"content":" || !eventSplit[2].substring(0,2).equals(\"to\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":191,"author":{"gitId":"LWS49"},"content":" throw new LukeException(\"Invalid command. Please follow the format for event tasks.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":192,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":193,"author":{"gitId":"LWS49"},"content":" if (eventSplit[0].substring(6).trim().isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":194,"author":{"gitId":"LWS49"},"content":" throw new LukeException(\"Invalid command. The description cannot be empty.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":195,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":196,"author":{"gitId":"LWS49"},"content":" if (eventSplit[1].trim().length() \u003c\u003d 4 ) {","lastModifiedDate":"2024-01-24"},{"lineNumber":197,"author":{"gitId":"LWS49"},"content":" throw new LukeException(\"Invalid command. The from section cannot be empty.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":198,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":199,"author":{"gitId":"LWS49"},"content":" if (eventSplit[2].trim().length() \u003c\u003d 2 ) {","lastModifiedDate":"2024-01-24"},{"lineNumber":200,"author":{"gitId":"LWS49"},"content":" throw new LukeException(\"Invalid command. The to section cannot be empty.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":201,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":202,"author":{"gitId":"LWS49"},"content":" String eventDescription \u003d eventSplit[0].substring(6);","lastModifiedDate":"2024-01-23"},{"lineNumber":203,"author":{"gitId":"LWS49"},"content":" String from \u003d eventSplit[1].substring(5);","lastModifiedDate":"2024-01-23"},{"lineNumber":204,"author":{"gitId":"LWS49"},"content":" String to \u003d eventSplit[2].substring(3);","lastModifiedDate":"2024-01-23"},{"lineNumber":205,"author":{"gitId":"LWS49"},"content":" Event event \u003d new Event(eventDescription, from, to);","lastModifiedDate":"2024-01-23"},{"lineNumber":206,"author":{"gitId":"LWS49"},"content":" taskList.add(event);","lastModifiedDate":"2024-01-24"},{"lineNumber":207,"author":{"gitId":"LWS49"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":208,"author":{"gitId":"LWS49"},"content":" System.out.println(event.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":209,"author":{"gitId":"LWS49"},"content":" noTasks++;","lastModifiedDate":"2024-01-23"},{"lineNumber":210,"author":{"gitId":"LWS49"},"content":" System.out.println(\"Now you have \" + noTasks + \" tasks in the list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":211,"author":{"gitId":"LWS49"},"content":" } catch (LukeException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":212,"author":{"gitId":"LWS49"},"content":" System.out.println(e);","lastModifiedDate":"2024-01-24"},{"lineNumber":213,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":214,"author":{"gitId":"LWS49"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":215,"author":{"gitId":"LWS49"},"content":" case \"delete\":","lastModifiedDate":"2024-01-24"},{"lineNumber":216,"author":{"gitId":"LWS49"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":217,"author":{"gitId":"LWS49"},"content":" int deleteIndex \u003d Integer.valueOf(splited[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":218,"author":{"gitId":"LWS49"},"content":" if (deleteIndex \u003c\u003d 0 || deleteIndex \u003e noTasks) {","lastModifiedDate":"2024-01-24"},{"lineNumber":219,"author":{"gitId":"LWS49"},"content":" throw new LukeException(\"Task does not exist. Please give a valid task number.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":220,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":221,"author":{"gitId":"LWS49"},"content":" Task deleteTask \u003d taskList.get(deleteIndex - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":222,"author":{"gitId":"LWS49"},"content":" taskList.remove(deleteIndex - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":223,"author":{"gitId":"LWS49"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":224,"author":{"gitId":"LWS49"},"content":" System.out.println(deleteTask.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":225,"author":{"gitId":"LWS49"},"content":" noTasks--;","lastModifiedDate":"2024-01-24"},{"lineNumber":226,"author":{"gitId":"LWS49"},"content":" System.out.println(\"Now you have \" + noTasks + \" tasks in the list.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":227,"author":{"gitId":"LWS49"},"content":" } catch (LukeException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":228,"author":{"gitId":"LWS49"},"content":" System.out.println(e);","lastModifiedDate":"2024-01-24"},{"lineNumber":229,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":230,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":231,"author":{"gitId":"LWS49"},"content":" input \u003d scanner.nextLine();","lastModifiedDate":"2024-01-23"},{"lineNumber":232,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":233,"author":{"gitId":"LWS49"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":234,"author":{"gitId":"LWS49"},"content":" FileWriter writer \u003d new FileWriter(directoryPath + \"/\" + fileName);","lastModifiedDate":"2024-01-30"},{"lineNumber":235,"author":{"gitId":"LWS49"},"content":" for (Task task : taskList) {","lastModifiedDate":"2024-01-30"},{"lineNumber":236,"author":{"gitId":"LWS49"},"content":" writer.write(task.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":237,"author":{"gitId":"LWS49"},"content":" writer.write(\"\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":238,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":239,"author":{"gitId":"LWS49"},"content":" writer.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":240,"author":{"gitId":"LWS49"},"content":" System.out.println(\"Successfully saved file to local.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":241,"author":{"gitId":"LWS49"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":242,"author":{"gitId":"LWS49"},"content":" System.out.println(\"An error occurred while saving.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":243,"author":{"gitId":"LWS49"},"content":" e.printStackTrace();","lastModifiedDate":"2024-01-30"},{"lineNumber":244,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":245,"author":{"gitId":"LWS49"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":246,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":247,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":248,"author":{"gitId":"LWS49"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"LWS49":248}},{"path":"src/main/java/LukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LWS49"},"content":"public class LukeException extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"LWS49"},"content":" public LukeException(String message) {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":" super(message);","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"LWS49"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"LWS49":5}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LWS49"},"content":"public class Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"LWS49"},"content":" protected boolean done;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":" protected String name;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"LWS49"},"content":" public Task (String name) {","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"LWS49"},"content":" this.done \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"LWS49"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"LWS49"},"content":" if (done) {","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":" return \"[X] \" + name;","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"LWS49"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"LWS49"},"content":" return \"[ ] \" + name;","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"LWS49"},"content":" public void setToDone() {","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"LWS49"},"content":" this.done \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"LWS49"},"content":" public void setToNotDone() {","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"LWS49"},"content":" this.done \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"LWS49"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"LWS49":26}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LWS49"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"LWS49"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"LWS49":11}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"LWS49"},"content":"todo borrow book","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"LWS49"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"LWS49"},"content":"mark 1","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"LWS49"},"content":"mark 2","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":"unmark 1","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":"mark 4","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":"delete 4","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"LWS49"},"content":"delete 3","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"LWS49"},"content":"hehe","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":"todo","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"LWS49"},"content":"deadline read book by 3","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"LWS49"},"content":"deadline read book /start 3","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"LWS49"},"content":"deadline /by 3","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"LWS49"},"content":"deadline read book /by","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"LWS49"},"content":"event project meeting /from Mon 2pm to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"LWS49"},"content":"event project meeting /fro Mon 2pm /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"LWS49"},"content":"event project meeting /fro Mon 2pm /until 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"LWS49"},"content":"event /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"LWS49"},"content":"event project meeting /from /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"LWS49"},"content":"event project meeting /from Mon 2pm /to","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"LWS49"},"content":"bye","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"LWS49":24}},{"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":"LWS49"},"content":"javac -cp C:\\Users\\user\\ip\\src\\main\\java -Xlint:none -d C:\\Users\\user\\ip\\bin C:\\Users\\user\\ip\\src\\main\\java\\*.java","lastModifiedDate":"2024-01-23"},{"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":"LWS49"},"content":"java -classpath C:\\Users\\user\\ip\\bin Luke \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":{"LWS49":2,"-":19}}] diff --git a/LWS49_ip_master/commits.json b/LWS49_ip_master/commits.json index 6b6d3b65..61dcf873 100644 --- a/LWS49_ip_master/commits.json +++ b/LWS49_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"LWS49":[{"date":"2024-01-23","commitResults":[{"hash":"5512c56af8f5e75eccc7e743711fc821bcb3eb26","isMergeCommit":false,"messageTitle":"complete Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":6}}},{"hash":"66575c73cce21dbfbf7fa4717440630105c05908","isMergeCommit":false,"messageTitle":"complete Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":0}}},{"hash":"02cb0ce40b149be09c5a5fe10c619d0be5bcc8ec","isMergeCommit":false,"messageTitle":"complete Level-1","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":21}}},{"hash":"d13d92b813bc74f2c83f110b8300104aa20a2c69","isMergeCommit":false,"messageTitle":"added Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":7}}},{"hash":"52641d91ba1bc91dcecc593c4608e31a767ad17f","isMergeCommit":false,"messageTitle":"added Level-4","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":133,"deletions":27}}},{"hash":"63c2b2d7debaa2e61ba3938fcf1cff09dd840219","isMergeCommit":false,"messageTitle":"update javac and java","messageBody":"","fileTypesAndContributionMap":{"bat":{"insertions":2,"deletions":2}}},{"hash":"466212755e5d8d94d82dd84571dc7b6e4e563086","isMergeCommit":false,"messageTitle":"remove default case without command","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":8}}},{"hash":"c1d3c2fe1ab2cdcfd65b972e44e1b4312acbf5f3","isMergeCommit":false,"messageTitle":"added Level-5","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":17,"deletions":0},"java":{"insertions":0,"deletions":8},"bat":{"insertions":1,"deletions":1}}}]},{"date":"2024-01-24","commitResults":[{"hash":"b0a707265b356ba38e275e8a47c8c47c0cd5e8a0","isMergeCommit":false,"messageTitle":"added Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":13,"deletions":8},"java":{"insertions":113,"deletions":37}}},{"hash":"8a3187a196d7c627141a42398b70b9a2db344bd7","isMergeCommit":false,"messageTitle":"added Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":25,"deletions":11}}}]},{"date":"2024-01-25","commitResults":[{"hash":"ae7c00d7147a971c91fa8c16289bce88154e28b8","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into push-Level-4","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3b5493680b4c73fbc2a2e13a24887dc9702db8a7","isMergeCommit":true,"messageTitle":"Merge pull request #1 from LWS49/push-Level-4","messageBody":"Push level 4","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"LWS49":{"java":238,"md":0,"fxml":0,"sh":0,"bat":2,"gradle":0,"txt":24}},"authorContributionVariance":{"LWS49":14337.265},"authorDisplayNameMap":{"LWS49":"CS2103T-W11-1 LOW ..HENG"}} +{"authorDailyContributionsMap":{"LWS49":[{"date":"2024-01-23","commitResults":[{"hash":"5512c56af8f5e75eccc7e743711fc821bcb3eb26","isMergeCommit":false,"messageTitle":"complete Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":6}}},{"hash":"66575c73cce21dbfbf7fa4717440630105c05908","isMergeCommit":false,"messageTitle":"complete Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":0}}},{"hash":"02cb0ce40b149be09c5a5fe10c619d0be5bcc8ec","isMergeCommit":false,"messageTitle":"complete Level-1","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":21}}},{"hash":"d13d92b813bc74f2c83f110b8300104aa20a2c69","isMergeCommit":false,"messageTitle":"added Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":7}}},{"hash":"52641d91ba1bc91dcecc593c4608e31a767ad17f","isMergeCommit":false,"messageTitle":"added Level-4","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":133,"deletions":27}}},{"hash":"63c2b2d7debaa2e61ba3938fcf1cff09dd840219","isMergeCommit":false,"messageTitle":"update javac and java","messageBody":"","fileTypesAndContributionMap":{"bat":{"insertions":2,"deletions":2}}},{"hash":"466212755e5d8d94d82dd84571dc7b6e4e563086","isMergeCommit":false,"messageTitle":"remove default case without command","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":8}}},{"hash":"c1d3c2fe1ab2cdcfd65b972e44e1b4312acbf5f3","isMergeCommit":false,"messageTitle":"added Level-5","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":17,"deletions":0},"java":{"insertions":0,"deletions":8},"bat":{"insertions":1,"deletions":1}}}]},{"date":"2024-01-24","commitResults":[{"hash":"b0a707265b356ba38e275e8a47c8c47c0cd5e8a0","isMergeCommit":false,"messageTitle":"added Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":13,"deletions":8},"java":{"insertions":113,"deletions":37}}},{"hash":"8a3187a196d7c627141a42398b70b9a2db344bd7","isMergeCommit":false,"messageTitle":"added Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":25,"deletions":11}}}]},{"date":"2024-01-25","commitResults":[{"hash":"ae7c00d7147a971c91fa8c16289bce88154e28b8","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into push-Level-4","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3b5493680b4c73fbc2a2e13a24887dc9702db8a7","isMergeCommit":true,"messageTitle":"Merge pull request #1 from LWS49/push-Level-4","messageBody":"Push level 4","fileTypesAndContributionMap":{}}]},{"date":"2024-01-30","commitResults":[{"hash":"6413cfaa9668fd180b2ff62a53be3d4d8475c12e","isMergeCommit":false,"messageTitle":"added Level-7","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":80,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"LWS49":{"java":318,"md":0,"fxml":0,"sh":0,"bat":2,"gradle":0,"txt":24}},"authorContributionVariance":{"LWS49":9603.6875},"authorDisplayNameMap":{"LWS49":"CS2103T-W11-1 LOW ..HENG"}} diff --git a/Ragnapop_ip_master/authorship.json b/Ragnapop_ip_master/authorship.json index de90395f..179e8dad 100644 --- a/Ragnapop_ip_master/authorship.json +++ b/Ragnapop_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ragnapop"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"Ragnapop"},"content":" protected String by;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"Ragnapop"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Ragnapop"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Ragnapop"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"Ragnapop"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"Ragnapop"},"content":" public String getTaskIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"Ragnapop"},"content":" return \"D\";","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"Ragnapop"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"Ragnapop"},"content":" public String ToString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"Ragnapop"},"content":" return super.ToString() + \" (by: \" + by + \")\";","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"Ragnapop"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Ragnapop":19}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"Ragnapop"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"Ragnapop"},"content":"import java.io.InputStreamReader;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"Ragnapop"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"Ragnapop"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"Ragnapop"},"content":"import static java.lang.System.exit;","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":11,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"Ragnapop"},"content":" public static void intro(String name, String logo) {","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":" System.out.println(\"Hello from\\n\" + logo);","lastModifiedDate":"2019-07-29"},{"lineNumber":15,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"Hello! I\u0027m \\n\" + name);","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"What can I do for you?\\n\");// initial introductory message","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"Ragnapop"},"content":" public static void bye() {","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"Bye. Hope to see you again soon!\\n\");","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"Ragnapop"},"content":" System.exit(1);// if keyword is bye, exit the program","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"Ragnapop"},"content":" public static int addtask(int n, ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n\");","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"Ragnapop"},"content":" System.out.println(list.get(n).ToString());","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"Ragnapop"},"content":" n++;","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"Now you have \" + n + \" tasks in the list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"Ragnapop"},"content":" return n;","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"Ragnapop"},"content":" public static ArrayList\u003cTask\u003e eventcase(String str, int n, ArrayList\u003cTask\u003e list) throws DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"Ragnapop"},"content":" str \u003d str.replace(\"event\", \"\");","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"Ragnapop"},"content":" str \u003d str.replace(\"from\", \"\");","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"Ragnapop"},"content":" str \u003d str.replace(\"to\", \"\");","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"Ragnapop"},"content":" String[] eventtokens \u003d str.split(\"/\");","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"Ragnapop"},"content":" if(eventtokens.length \u003c 1) {","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"OOPS!!! The description of a event cannot be empty.\" +","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"Ragnapop"},"content":" \"Please give this instruction in the following format: event [description] / [event starting date] / [event ending date]\");","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"Ragnapop"},"content":" else if(eventtokens.length \u003c 2) {","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"OOPS!!! The beginning date of a event cannot be empty.\" +","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"Ragnapop"},"content":" \"Please give this instruction in the following format: event [description] / [event starting date] / [event ending date]\");","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"Ragnapop"},"content":" else if(eventtokens.length \u003c 3) {","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"OOPS!!! The ending date of a event cannot be empty.\" +","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"Ragnapop"},"content":" \"Please give this instruction in the following format: event [description] / [event starting date] / [event ending date]\");","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"Ragnapop"},"content":" String subject \u003d eventtokens[0];","lastModifiedDate":"2024-01-22"},{"lineNumber":52,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":53,"author":{"gitId":"Ragnapop"},"content":" String to \u003d eventtokens[1];","lastModifiedDate":"2024-01-22"},{"lineNumber":54,"author":{"gitId":"Ragnapop"},"content":" String from \u003d eventtokens[2];","lastModifiedDate":"2024-01-22"},{"lineNumber":55,"author":{"gitId":"Ragnapop"},"content":" list.add(new Event(subject, to, from));","lastModifiedDate":"2024-01-23"},{"lineNumber":56,"author":{"gitId":"Ragnapop"},"content":" return list;","lastModifiedDate":"2024-01-23"},{"lineNumber":57,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":58,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":59,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":60,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":61,"author":{"gitId":"Ragnapop"},"content":" public static ArrayList\u003cTask\u003e deadlinecase(String str, int n, ArrayList\u003cTask\u003e list) throws DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":62,"author":{"gitId":"Ragnapop"},"content":" str \u003d str.replace(\"deadline\", \"\");","lastModifiedDate":"2024-01-22"},{"lineNumber":63,"author":{"gitId":"Ragnapop"},"content":" str \u003d str.replace(\"by\", \"\");","lastModifiedDate":"2024-01-22"},{"lineNumber":64,"author":{"gitId":"Ragnapop"},"content":" String[] deadlinetokens \u003d str.split(\"/\");","lastModifiedDate":"2024-01-22"},{"lineNumber":65,"author":{"gitId":"Ragnapop"},"content":" if(deadlinetokens.length \u003c 1) {","lastModifiedDate":"2024-01-23"},{"lineNumber":66,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"OOPS!!! The description of a deadline cannot be empty.\" +","lastModifiedDate":"2024-01-23"},{"lineNumber":67,"author":{"gitId":"Ragnapop"},"content":" \"Please give this instruction in the following format: deadline [description] / [deadline date]\");","lastModifiedDate":"2024-01-23"},{"lineNumber":68,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":69,"author":{"gitId":"Ragnapop"},"content":" else if(deadlinetokens.length \u003c 2) {","lastModifiedDate":"2024-01-23"},{"lineNumber":70,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"OOPS!!! You must provide a deadline for this task.\" +","lastModifiedDate":"2024-01-23"},{"lineNumber":71,"author":{"gitId":"Ragnapop"},"content":" \"Please give this instruction in the following format: deadline [description] / [deadline date]\");","lastModifiedDate":"2024-01-23"},{"lineNumber":72,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":73,"author":{"gitId":"Ragnapop"},"content":" String subject \u003d deadlinetokens[0];","lastModifiedDate":"2024-01-22"},{"lineNumber":74,"author":{"gitId":"Ragnapop"},"content":" String deadline \u003d deadlinetokens[1];","lastModifiedDate":"2024-01-22"},{"lineNumber":75,"author":{"gitId":"Ragnapop"},"content":" list.add(new Deadline(subject, deadline));","lastModifiedDate":"2024-01-23"},{"lineNumber":76,"author":{"gitId":"Ragnapop"},"content":" return list;","lastModifiedDate":"2024-01-23"},{"lineNumber":77,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":78,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":79,"author":{"gitId":"Ragnapop"},"content":" public static ArrayList\u003cTask\u003e todocase(String str, int n, ArrayList\u003cTask\u003e list) throws DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":80,"author":{"gitId":"Ragnapop"},"content":" str \u003d str.replace(\"todo\", \"\");","lastModifiedDate":"2024-01-22"},{"lineNumber":81,"author":{"gitId":"Ragnapop"},"content":" int strcount \u003d str.split(\"\\\\s\").length;","lastModifiedDate":"2024-01-23"},{"lineNumber":82,"author":{"gitId":"Ragnapop"},"content":" ","lastModifiedDate":"2024-01-24"},{"lineNumber":83,"author":{"gitId":"Ragnapop"},"content":" if(strcount \u003d\u003d 1) {","lastModifiedDate":"2024-01-24"},{"lineNumber":84,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"OOPS!!! The description of a todo cannot be empty. \" +","lastModifiedDate":"2024-01-23"},{"lineNumber":85,"author":{"gitId":"Ragnapop"},"content":" \" Please give this instruction in the following format: todo [description]\");","lastModifiedDate":"2024-01-23"},{"lineNumber":86,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":87,"author":{"gitId":"Ragnapop"},"content":" list.add(new Task(str));","lastModifiedDate":"2024-01-23"},{"lineNumber":88,"author":{"gitId":"Ragnapop"},"content":" return list;","lastModifiedDate":"2024-01-23"},{"lineNumber":89,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":90,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":91,"author":{"gitId":"Ragnapop"},"content":" public static void markcase(String[] tokens, ArrayList\u003cTask\u003e list) throws DukeException{","lastModifiedDate":"2024-01-23"},{"lineNumber":92,"author":{"gitId":"Ragnapop"},"content":" if(tokens.length !\u003d 2) {","lastModifiedDate":"2024-01-23"},{"lineNumber":93,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"please give this instruction in the following format: mark [task number]\");","lastModifiedDate":"2024-01-23"},{"lineNumber":94,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":95,"author":{"gitId":"Ragnapop"},"content":" int no \u003d Integer.parseInt(tokens[1]) - 1;","lastModifiedDate":"2024-01-23"},{"lineNumber":96,"author":{"gitId":"Ragnapop"},"content":" list.get(no).isDone \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":97,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\\n\");","lastModifiedDate":"2024-01-23"},{"lineNumber":98,"author":{"gitId":"Ragnapop"},"content":" System.out.println(list.get(no).ToString());","lastModifiedDate":"2024-01-23"},{"lineNumber":99,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":100,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":101,"author":{"gitId":"Ragnapop"},"content":" public static void unmarkcase(String[] tokens, ArrayList\u003cTask\u003e list) throws DukeException{","lastModifiedDate":"2024-01-23"},{"lineNumber":102,"author":{"gitId":"Ragnapop"},"content":" if(tokens.length !\u003d 2) {","lastModifiedDate":"2024-01-23"},{"lineNumber":103,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"please give this instruction in the following format: unmark [task number]\");","lastModifiedDate":"2024-01-23"},{"lineNumber":104,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":105,"author":{"gitId":"Ragnapop"},"content":" int no \u003d Integer.parseInt(tokens[1]) - 1;","lastModifiedDate":"2024-01-23"},{"lineNumber":106,"author":{"gitId":"Ragnapop"},"content":" list.get(no).isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":107,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":108,"author":{"gitId":"Ragnapop"},"content":" System.out.println(list.get(no).ToString());","lastModifiedDate":"2024-01-23"},{"lineNumber":109,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":110,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":111,"author":{"gitId":"Ragnapop"},"content":" public static ArrayList\u003cTask\u003e removecase(String[] tokens, ArrayList\u003cTask\u003e list, int n) throws DukeException{","lastModifiedDate":"2024-01-23"},{"lineNumber":112,"author":{"gitId":"Ragnapop"},"content":" if(tokens.length !\u003d 2) {","lastModifiedDate":"2024-01-23"},{"lineNumber":113,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"please give this instruction in the following format: delete [task number]\");","lastModifiedDate":"2024-01-23"},{"lineNumber":114,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":115,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\\n\");","lastModifiedDate":"2024-01-23"},{"lineNumber":116,"author":{"gitId":"Ragnapop"},"content":" int no \u003d Integer.parseInt(tokens[1])-1;","lastModifiedDate":"2024-01-23"},{"lineNumber":117,"author":{"gitId":"Ragnapop"},"content":" System.out.println(list.get(no).ToString());","lastModifiedDate":"2024-01-23"},{"lineNumber":118,"author":{"gitId":"Ragnapop"},"content":" list.remove(no);","lastModifiedDate":"2024-01-23"},{"lineNumber":119,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":120,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":121,"author":{"gitId":"Ragnapop"},"content":" n--;","lastModifiedDate":"2024-01-23"},{"lineNumber":122,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"Now you have \" + n + \" tasks in the list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":123,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":124,"author":{"gitId":"Ragnapop"},"content":" return list;","lastModifiedDate":"2024-01-23"},{"lineNumber":125,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":126,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":127,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":128,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":129,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":130,"author":{"gitId":"Ragnapop"},"content":" public static void main(String[] args) throws IOException, DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" String logo \u003d \" ____ _ \\n\"","lastModifiedDate":"2024-01-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" + \"| _ \\\\ _ _| | _____ \\n\"","lastModifiedDate":"2024-01-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" + \"| | | | | | | |/ / _ \\\\\\n\"","lastModifiedDate":"2024-01-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":" + \"| |_| | |_| | \u003c __/\\n\"","lastModifiedDate":"2024-01-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" + \"|____/ \\\\__,_|_|\\\\_\\\\___|\\n\";","lastModifiedDate":"2024-01-23"},{"lineNumber":136,"author":{"gitId":"Ragnapop"},"content":" String name \u003d \"Bingus\";","lastModifiedDate":"2024-01-23"},{"lineNumber":137,"author":{"gitId":"Ragnapop"},"content":" intro(name, logo);","lastModifiedDate":"2024-01-23"},{"lineNumber":138,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":139,"author":{"gitId":"Ragnapop"},"content":" ArrayList\u003cTask\u003e list \u003d new ArrayList\u003cTask\u003e(100);// array to store tasks given","lastModifiedDate":"2024-01-23"},{"lineNumber":140,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":141,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":142,"author":{"gitId":"Ragnapop"},"content":" int n \u003d 0;","lastModifiedDate":"2024-01-23"},{"lineNumber":143,"author":{"gitId":"Ragnapop"},"content":" Scanner bfn \u003d new Scanner(","lastModifiedDate":"2024-01-23"},{"lineNumber":144,"author":{"gitId":"Ragnapop"},"content":" new InputStreamReader(System.in));// scanner to read user input","lastModifiedDate":"2024-01-23"},{"lineNumber":145,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":146,"author":{"gitId":"Ragnapop"},"content":" String str \u003d bfn.nextLine();","lastModifiedDate":"2024-01-23"},{"lineNumber":147,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":148,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":149,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":150,"author":{"gitId":"Ragnapop"},"content":" while (true) {","lastModifiedDate":"2024-01-23"},{"lineNumber":151,"author":{"gitId":"Ragnapop"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":152,"author":{"gitId":"Ragnapop"},"content":" String[] tokens \u003d str.split(\"\\\\s+\");// split read string into individual components to read keywords","lastModifiedDate":"2024-01-23"},{"lineNumber":153,"author":{"gitId":"Ragnapop"},"content":" String identifier \u003d tokens[0];// store keywords","lastModifiedDate":"2024-01-23"},{"lineNumber":154,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":155,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":156,"author":{"gitId":"Ragnapop"},"content":" if (str.equals(\"list\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":157,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"Here are the tasks in your list:\\n\");","lastModifiedDate":"2024-01-23"},{"lineNumber":158,"author":{"gitId":"Ragnapop"},"content":" for (int a \u003d 0; a \u003c n; a++) {","lastModifiedDate":"2024-01-23"},{"lineNumber":159,"author":{"gitId":"Ragnapop"},"content":" System.out.println(a + 1 + \". \" + list.get(a).ToString());","lastModifiedDate":"2024-01-23"},{"lineNumber":160,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":161,"author":{"gitId":"Ragnapop"},"content":" }// if keyword is list, open list","lastModifiedDate":"2024-01-23"},{"lineNumber":162,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":163,"author":{"gitId":"Ragnapop"},"content":" else if (str.equals(\"bye\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":164,"author":{"gitId":"Ragnapop"},"content":" bye();","lastModifiedDate":"2024-01-23"},{"lineNumber":165,"author":{"gitId":"Ragnapop"},"content":" } else if (identifier.equals(\"mark\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":166,"author":{"gitId":"Ragnapop"},"content":" markcase(tokens, list);","lastModifiedDate":"2024-01-23"},{"lineNumber":167,"author":{"gitId":"Ragnapop"},"content":" } else if (identifier.equals(\"unmark\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":168,"author":{"gitId":"Ragnapop"},"content":" int no \u003d Integer.parseInt(tokens[1]) - 1;","lastModifiedDate":"2024-01-23"},{"lineNumber":169,"author":{"gitId":"Ragnapop"},"content":" unmarkcase(tokens, list);","lastModifiedDate":"2024-01-23"},{"lineNumber":170,"author":{"gitId":"Ragnapop"},"content":" } else if (identifier.equals(\"event\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":171,"author":{"gitId":"Ragnapop"},"content":" list \u003d eventcase(str, n, list);","lastModifiedDate":"2024-01-23"},{"lineNumber":172,"author":{"gitId":"Ragnapop"},"content":" n \u003d addtask(n, list);","lastModifiedDate":"2024-01-23"},{"lineNumber":173,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":174,"author":{"gitId":"Ragnapop"},"content":" } else if (identifier.equals(\"deadline\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":175,"author":{"gitId":"Ragnapop"},"content":" list \u003d deadlinecase(str, n, list);","lastModifiedDate":"2024-01-23"},{"lineNumber":176,"author":{"gitId":"Ragnapop"},"content":" n \u003d addtask(n, list);","lastModifiedDate":"2024-01-23"},{"lineNumber":177,"author":{"gitId":"Ragnapop"},"content":" } else if (identifier.equals(\"todo\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":178,"author":{"gitId":"Ragnapop"},"content":" list \u003d todocase(str, n, list);","lastModifiedDate":"2024-01-23"},{"lineNumber":179,"author":{"gitId":"Ragnapop"},"content":" n \u003d addtask(n, list);","lastModifiedDate":"2024-01-23"},{"lineNumber":180,"author":{"gitId":"Ragnapop"},"content":" } else if (identifier.equals(\"delete\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":181,"author":{"gitId":"Ragnapop"},"content":" list \u003d removecase(tokens, list, n);","lastModifiedDate":"2024-01-23"},{"lineNumber":182,"author":{"gitId":"Ragnapop"},"content":" n--;","lastModifiedDate":"2024-01-23"},{"lineNumber":183,"author":{"gitId":"Ragnapop"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":184,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\\n\");","lastModifiedDate":"2024-01-23"},{"lineNumber":185,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":186,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":187,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":188,"author":{"gitId":"Ragnapop"},"content":" str \u003d bfn.nextLine();","lastModifiedDate":"2024-01-22"},{"lineNumber":189,"author":{"gitId":"Ragnapop"},"content":" }catch(DukeException ex){","lastModifiedDate":"2024-01-24"},{"lineNumber":190,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"Exception occured: \" + ex);","lastModifiedDate":"2024-01-23"},{"lineNumber":191,"author":{"gitId":"Ragnapop"},"content":" str \u003d bfn.nextLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":192,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":193,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":195,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":196,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":198,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-01-23"},{"lineNumber":199,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Ragnapop":189,"-":10}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ragnapop"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"Ragnapop"},"content":" public DukeException(String errorMessage) {","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"Ragnapop"},"content":" super(errorMessage);","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"Ragnapop"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Ragnapop":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ragnapop"},"content":"public class Event extends Task{","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"Ragnapop"},"content":" protected String from;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"Ragnapop"},"content":" protected String to;","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"Ragnapop"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Ragnapop"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Ragnapop"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"Ragnapop"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"Ragnapop"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"Ragnapop"},"content":" public String getTaskIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"Ragnapop"},"content":" return \"E\";","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"Ragnapop"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"Ragnapop"},"content":" public String ToString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"Ragnapop"},"content":" return super.ToString() + \" (from: \" + from + \"to: \" + to + \")\";","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"Ragnapop"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Ragnapop":20}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ragnapop"},"content":"public class Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"Ragnapop"},"content":" protected String description;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"Ragnapop"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Ragnapop"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Ragnapop"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"Ragnapop"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"Ragnapop"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"Ragnapop"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"Ragnapop"},"content":" public String getTaskIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"Ragnapop"},"content":" return \"T\";","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"Ragnapop"},"content":" public String ToString(){","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"Ragnapop"},"content":" return \"[\" + getTaskIcon() + \"] \" + \"[\" + getStatusIcon() + \"] \"+ description;","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"Ragnapop"},"content":" //...","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Ragnapop":25}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Ragnapop"},"content":"todo","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Ragnapop"},"content":"todo homework","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Ragnapop"},"content":"deadline","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Ragnapop"},"content":"deadline homework / tuesday","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Ragnapop"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Ragnapop"},"content":"delete","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Ragnapop"},"content":"delete 1","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Ragnapop"},"content":"mark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Ragnapop"},"content":"unmark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Ragnapop"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Ragnapop"},"content":"mark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Ragnapop"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Ragnapop":12}}] +[{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Ragnapop"},"content":"T/1/ hi","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Ragnapop"},"content":"T/0/ what","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Ragnapop"},"content":"T/0/ gyhu","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Ragnapop"},"content":"E/0/ fakd/ada/ad","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Ragnapop"},"content":"D/1/ wtf/wtf","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Ragnapop":5}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ragnapop"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"Ragnapop"},"content":" protected String by;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"Ragnapop"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Ragnapop"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Ragnapop"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"Ragnapop"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"Ragnapop"},"content":" public String getTaskIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"Ragnapop"},"content":" return \"D\";","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"Ragnapop"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"Ragnapop"},"content":" public String ToString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"Ragnapop"},"content":" return super.ToString() + \" (by: \" + by + \")\";","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Ragnapop"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Ragnapop"},"content":" public String toStore() {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Ragnapop"},"content":" if (isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Ragnapop"},"content":" return getTaskIcon() + \"/\" + \"1\" + \"/\" + description + \"/\" + by;","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Ragnapop"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Ragnapop"},"content":" return getTaskIcon() + \"/\" + \"0\" + \"/\" + description + \"/\" + by;","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Ragnapop"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Ragnapop":28}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"Ragnapop"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"Ragnapop"},"content":"import java.io.InputStreamReader;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"Ragnapop"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"Ragnapop"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"Ragnapop"},"content":"import static java.lang.System.exit;","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":11,"author":{"gitId":"Ragnapop"},"content":" private static ArrayList\u003cTask\u003e list;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Ragnapop"},"content":" private static Storage storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Ragnapop"},"content":" private static final String FILE_PATH \u003d \"data/duke.txt\";","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"Ragnapop"},"content":" public static void intro(String name, String logo) {","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":" System.out.println(\"Hello from\\n\" + logo);","lastModifiedDate":"2019-07-29"},{"lineNumber":18,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"Hello! I\u0027m \\n\" + name);","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"What can I do for you?\\n\");// initial introductory message","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"Ragnapop"},"content":" public static void bye() throws DukeException{","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"Bye. Hope to see you again soon!\\n\");","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"Ragnapop"},"content":" storage.save();","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Ragnapop"},"content":" System.exit(1);// if keyword is bye, exit the program","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"Ragnapop"},"content":" public static void addtask(int n, ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n\");","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"Ragnapop"},"content":" n++;","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"Ragnapop"},"content":" System.out.println(list.get(n).ToString());","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"Now you have \" + list.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"Ragnapop"},"content":" public static ArrayList\u003cTask\u003e eventcase(String str, int n, ArrayList\u003cTask\u003e list) throws DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"Ragnapop"},"content":" str \u003d str.replace(\"event\", \"\");","lastModifiedDate":"2024-01-22"},{"lineNumber":40,"author":{"gitId":"Ragnapop"},"content":" str \u003d str.replace(\"from\", \"\");","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"Ragnapop"},"content":" str \u003d str.replace(\"to\", \"\");","lastModifiedDate":"2024-01-22"},{"lineNumber":42,"author":{"gitId":"Ragnapop"},"content":" String[] eventtokens \u003d str.split(\"/\");","lastModifiedDate":"2024-01-22"},{"lineNumber":43,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"Ragnapop"},"content":" if(eventtokens.length \u003c 1) {","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"OOPS!!! The description of a event cannot be empty.\" +","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"Ragnapop"},"content":" \"Please give this instruction in the following format: event [description] / [event starting date] / [event ending date]\");","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"Ragnapop"},"content":" else if(eventtokens.length \u003c 2) {","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"OOPS!!! The beginning date of a event cannot be empty.\" +","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"Ragnapop"},"content":" \"Please give this instruction in the following format: event [description] / [event starting date] / [event ending date]\");","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":52,"author":{"gitId":"Ragnapop"},"content":" else if(eventtokens.length \u003c 3) {","lastModifiedDate":"2024-01-23"},{"lineNumber":53,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"OOPS!!! The ending date of a event cannot be empty.\" +","lastModifiedDate":"2024-01-23"},{"lineNumber":54,"author":{"gitId":"Ragnapop"},"content":" \"Please give this instruction in the following format: event [description] / [event starting date] / [event ending date]\");","lastModifiedDate":"2024-01-23"},{"lineNumber":55,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":56,"author":{"gitId":"Ragnapop"},"content":" String subject \u003d eventtokens[0];","lastModifiedDate":"2024-01-22"},{"lineNumber":57,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":58,"author":{"gitId":"Ragnapop"},"content":" String to \u003d eventtokens[1];","lastModifiedDate":"2024-01-22"},{"lineNumber":59,"author":{"gitId":"Ragnapop"},"content":" String from \u003d eventtokens[2];","lastModifiedDate":"2024-01-22"},{"lineNumber":60,"author":{"gitId":"Ragnapop"},"content":" list.add(new Event(subject, to, from));","lastModifiedDate":"2024-01-23"},{"lineNumber":61,"author":{"gitId":"Ragnapop"},"content":" return list;","lastModifiedDate":"2024-01-23"},{"lineNumber":62,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":63,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":64,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":65,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":66,"author":{"gitId":"Ragnapop"},"content":" public static ArrayList\u003cTask\u003e deadlinecase(String str, int n, ArrayList\u003cTask\u003e list) throws DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":67,"author":{"gitId":"Ragnapop"},"content":" str \u003d str.replace(\"deadline\", \"\");","lastModifiedDate":"2024-01-22"},{"lineNumber":68,"author":{"gitId":"Ragnapop"},"content":" str \u003d str.replace(\"by\", \"\");","lastModifiedDate":"2024-01-22"},{"lineNumber":69,"author":{"gitId":"Ragnapop"},"content":" String[] deadlinetokens \u003d str.split(\"/\");","lastModifiedDate":"2024-01-22"},{"lineNumber":70,"author":{"gitId":"Ragnapop"},"content":" if(deadlinetokens.length \u003c 1) {","lastModifiedDate":"2024-01-23"},{"lineNumber":71,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"OOPS!!! The description of a deadline cannot be empty.\" +","lastModifiedDate":"2024-01-23"},{"lineNumber":72,"author":{"gitId":"Ragnapop"},"content":" \"Please give this instruction in the following format: deadline [description] / [deadline date]\");","lastModifiedDate":"2024-01-23"},{"lineNumber":73,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":74,"author":{"gitId":"Ragnapop"},"content":" else if(deadlinetokens.length \u003c 2) {","lastModifiedDate":"2024-01-23"},{"lineNumber":75,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"OOPS!!! You must provide a deadline for this task.\" +","lastModifiedDate":"2024-01-23"},{"lineNumber":76,"author":{"gitId":"Ragnapop"},"content":" \"Please give this instruction in the following format: deadline [description] / [deadline date]\");","lastModifiedDate":"2024-01-23"},{"lineNumber":77,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":78,"author":{"gitId":"Ragnapop"},"content":" String subject \u003d deadlinetokens[0];","lastModifiedDate":"2024-01-22"},{"lineNumber":79,"author":{"gitId":"Ragnapop"},"content":" String deadline \u003d deadlinetokens[1];","lastModifiedDate":"2024-01-22"},{"lineNumber":80,"author":{"gitId":"Ragnapop"},"content":" list.add(new Deadline(subject, deadline));","lastModifiedDate":"2024-01-23"},{"lineNumber":81,"author":{"gitId":"Ragnapop"},"content":" return list;","lastModifiedDate":"2024-01-23"},{"lineNumber":82,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":83,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":84,"author":{"gitId":"Ragnapop"},"content":" public static ArrayList\u003cTask\u003e todocase(String str, int n, ArrayList\u003cTask\u003e list) throws DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":85,"author":{"gitId":"Ragnapop"},"content":" str \u003d str.replace(\"todo\", \"\");","lastModifiedDate":"2024-01-22"},{"lineNumber":86,"author":{"gitId":"Ragnapop"},"content":" int strcount \u003d str.split(\"\\\\s\").length;","lastModifiedDate":"2024-01-23"},{"lineNumber":87,"author":{"gitId":"Ragnapop"},"content":" ","lastModifiedDate":"2024-01-24"},{"lineNumber":88,"author":{"gitId":"Ragnapop"},"content":" if(strcount \u003d\u003d 1) {","lastModifiedDate":"2024-01-24"},{"lineNumber":89,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"OOPS!!! The description of a todo cannot be empty. \" +","lastModifiedDate":"2024-01-23"},{"lineNumber":90,"author":{"gitId":"Ragnapop"},"content":" \" Please give this instruction in the following format: todo [description]\");","lastModifiedDate":"2024-01-23"},{"lineNumber":91,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":92,"author":{"gitId":"Ragnapop"},"content":" list.add(new Task(str));","lastModifiedDate":"2024-01-23"},{"lineNumber":93,"author":{"gitId":"Ragnapop"},"content":" return list;","lastModifiedDate":"2024-01-23"},{"lineNumber":94,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":95,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":96,"author":{"gitId":"Ragnapop"},"content":" public static void markcase(String[] tokens, ArrayList\u003cTask\u003e list) throws DukeException{","lastModifiedDate":"2024-01-23"},{"lineNumber":97,"author":{"gitId":"Ragnapop"},"content":" if(tokens.length !\u003d 2) {","lastModifiedDate":"2024-01-23"},{"lineNumber":98,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"please give this instruction in the following format: mark [task number]\");","lastModifiedDate":"2024-01-23"},{"lineNumber":99,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":100,"author":{"gitId":"Ragnapop"},"content":" int no \u003d Integer.parseInt(tokens[1]) - 1;","lastModifiedDate":"2024-01-23"},{"lineNumber":101,"author":{"gitId":"Ragnapop"},"content":" list.get(no).markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\\n\");","lastModifiedDate":"2024-01-23"},{"lineNumber":103,"author":{"gitId":"Ragnapop"},"content":" System.out.println(list.get(no).ToString());","lastModifiedDate":"2024-01-23"},{"lineNumber":104,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":105,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":106,"author":{"gitId":"Ragnapop"},"content":" public static void unmarkcase(String[] tokens, ArrayList\u003cTask\u003e list) throws DukeException{","lastModifiedDate":"2024-01-23"},{"lineNumber":107,"author":{"gitId":"Ragnapop"},"content":" if(tokens.length !\u003d 2) {","lastModifiedDate":"2024-01-23"},{"lineNumber":108,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"please give this instruction in the following format: unmark [task number]\");","lastModifiedDate":"2024-01-23"},{"lineNumber":109,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":110,"author":{"gitId":"Ragnapop"},"content":" int no \u003d Integer.parseInt(tokens[1]) - 1;","lastModifiedDate":"2024-01-23"},{"lineNumber":111,"author":{"gitId":"Ragnapop"},"content":" list.get(no).unmarkAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":113,"author":{"gitId":"Ragnapop"},"content":" System.out.println(list.get(no).ToString());","lastModifiedDate":"2024-01-23"},{"lineNumber":114,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":115,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":116,"author":{"gitId":"Ragnapop"},"content":" public static ArrayList\u003cTask\u003e removecase(String[] tokens, ArrayList\u003cTask\u003e list, int n) throws DukeException{","lastModifiedDate":"2024-01-23"},{"lineNumber":117,"author":{"gitId":"Ragnapop"},"content":" if(tokens.length !\u003d 2) {","lastModifiedDate":"2024-01-23"},{"lineNumber":118,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"please give this instruction in the following format: delete [task number]\");","lastModifiedDate":"2024-01-23"},{"lineNumber":119,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":120,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\\n\");","lastModifiedDate":"2024-01-23"},{"lineNumber":121,"author":{"gitId":"Ragnapop"},"content":" int no \u003d Integer.parseInt(tokens[1])-1;","lastModifiedDate":"2024-01-23"},{"lineNumber":122,"author":{"gitId":"Ragnapop"},"content":" System.out.println(list.get(no).ToString());","lastModifiedDate":"2024-01-23"},{"lineNumber":123,"author":{"gitId":"Ragnapop"},"content":" list.remove(no);","lastModifiedDate":"2024-01-23"},{"lineNumber":124,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":125,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":126,"author":{"gitId":"Ragnapop"},"content":" n--;","lastModifiedDate":"2024-01-23"},{"lineNumber":127,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"Now you have \" + n + \" tasks in the list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":128,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":129,"author":{"gitId":"Ragnapop"},"content":" return list;","lastModifiedDate":"2024-01-23"},{"lineNumber":130,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":131,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":132,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":133,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":134,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":135,"author":{"gitId":"Ragnapop"},"content":" public static void printlist(){","lastModifiedDate":"2024-01-30"},{"lineNumber":136,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"Here are the tasks in your list:\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"Ragnapop"},"content":" for (int a \u003d 0; a \u003c list.size(); a++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"Ragnapop"},"content":" System.out.println(a + 1 + \". \" + list.get(a).ToString());","lastModifiedDate":"2024-01-30"},{"lineNumber":139,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":141,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"Ragnapop"},"content":" public static void main(String[] args) throws IOException, DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":" String logo \u003d \" ____ _ \\n\"","lastModifiedDate":"2024-01-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" + \"| _ \\\\ _ _| | _____ \\n\"","lastModifiedDate":"2024-01-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":" + \"| | | | | | | |/ / _ \\\\\\n\"","lastModifiedDate":"2024-01-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":" + \"| |_| | |_| | \u003c __/\\n\"","lastModifiedDate":"2024-01-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" + \"|____/ \\\\__,_|_|\\\\_\\\\___|\\n\";","lastModifiedDate":"2024-01-23"},{"lineNumber":148,"author":{"gitId":"Ragnapop"},"content":" String name \u003d \"Bingus\";","lastModifiedDate":"2024-01-23"},{"lineNumber":149,"author":{"gitId":"Ragnapop"},"content":" intro(name, logo);","lastModifiedDate":"2024-01-23"},{"lineNumber":150,"author":{"gitId":"Ragnapop"},"content":" storage \u003d new Storage(FILE_PATH);","lastModifiedDate":"2024-01-30"},{"lineNumber":151,"author":{"gitId":"Ragnapop"},"content":" list \u003d storage.load();// array to store tasks given","lastModifiedDate":"2024-01-30"},{"lineNumber":152,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":153,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":154,"author":{"gitId":"Ragnapop"},"content":" int n \u003d list.size();","lastModifiedDate":"2024-01-30"},{"lineNumber":155,"author":{"gitId":"Ragnapop"},"content":" Scanner bfn \u003d new Scanner(","lastModifiedDate":"2024-01-23"},{"lineNumber":156,"author":{"gitId":"Ragnapop"},"content":" new InputStreamReader(System.in));// scanner to read user input","lastModifiedDate":"2024-01-23"},{"lineNumber":157,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":158,"author":{"gitId":"Ragnapop"},"content":" String str \u003d bfn.nextLine();","lastModifiedDate":"2024-01-23"},{"lineNumber":159,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":160,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":161,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":162,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":163,"author":{"gitId":"Ragnapop"},"content":" while (true) {","lastModifiedDate":"2024-01-23"},{"lineNumber":164,"author":{"gitId":"Ragnapop"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":165,"author":{"gitId":"Ragnapop"},"content":" String[] tokens \u003d str.split(\"\\\\s+\");// split read string into individual components to read keywords","lastModifiedDate":"2024-01-23"},{"lineNumber":166,"author":{"gitId":"Ragnapop"},"content":" String identifier \u003d tokens[0];// store keywords","lastModifiedDate":"2024-01-23"},{"lineNumber":167,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":168,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":169,"author":{"gitId":"Ragnapop"},"content":" if (str.equals(\"list\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":170,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":171,"author":{"gitId":"Ragnapop"},"content":" printlist();","lastModifiedDate":"2024-01-30"},{"lineNumber":172,"author":{"gitId":"Ragnapop"},"content":" }// if keyword is list, open list","lastModifiedDate":"2024-01-23"},{"lineNumber":173,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":174,"author":{"gitId":"Ragnapop"},"content":" else if (str.equals(\"bye\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":175,"author":{"gitId":"Ragnapop"},"content":" bye();","lastModifiedDate":"2024-01-23"},{"lineNumber":176,"author":{"gitId":"Ragnapop"},"content":" } else if (identifier.equals(\"mark\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":177,"author":{"gitId":"Ragnapop"},"content":" markcase(tokens, list);","lastModifiedDate":"2024-01-23"},{"lineNumber":178,"author":{"gitId":"Ragnapop"},"content":" } else if (identifier.equals(\"unmark\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":179,"author":{"gitId":"Ragnapop"},"content":" int no \u003d Integer.parseInt(tokens[1]) - 1;","lastModifiedDate":"2024-01-23"},{"lineNumber":180,"author":{"gitId":"Ragnapop"},"content":" unmarkcase(tokens, list);","lastModifiedDate":"2024-01-23"},{"lineNumber":181,"author":{"gitId":"Ragnapop"},"content":" } else if (identifier.equals(\"event\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":182,"author":{"gitId":"Ragnapop"},"content":" list \u003d eventcase(str, n, list);","lastModifiedDate":"2024-01-23"},{"lineNumber":183,"author":{"gitId":"Ragnapop"},"content":" addtask(n, list);","lastModifiedDate":"2024-01-30"},{"lineNumber":184,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":185,"author":{"gitId":"Ragnapop"},"content":" } else if (identifier.equals(\"deadline\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":186,"author":{"gitId":"Ragnapop"},"content":" list \u003d deadlinecase(str, n, list);","lastModifiedDate":"2024-01-23"},{"lineNumber":187,"author":{"gitId":"Ragnapop"},"content":" addtask(n, list);","lastModifiedDate":"2024-01-30"},{"lineNumber":188,"author":{"gitId":"Ragnapop"},"content":" } else if (identifier.equals(\"todo\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":189,"author":{"gitId":"Ragnapop"},"content":" list \u003d todocase(str, n, list);","lastModifiedDate":"2024-01-23"},{"lineNumber":190,"author":{"gitId":"Ragnapop"},"content":" addtask(n, list);","lastModifiedDate":"2024-01-30"},{"lineNumber":191,"author":{"gitId":"Ragnapop"},"content":" } else if (identifier.equals(\"delete\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":192,"author":{"gitId":"Ragnapop"},"content":" list \u003d removecase(tokens, list, n);","lastModifiedDate":"2024-01-23"},{"lineNumber":193,"author":{"gitId":"Ragnapop"},"content":" n--;","lastModifiedDate":"2024-01-23"},{"lineNumber":194,"author":{"gitId":"Ragnapop"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":195,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\\n\");","lastModifiedDate":"2024-01-23"},{"lineNumber":196,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":197,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":198,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":199,"author":{"gitId":"Ragnapop"},"content":" str \u003d bfn.nextLine();","lastModifiedDate":"2024-01-22"},{"lineNumber":200,"author":{"gitId":"Ragnapop"},"content":" }catch(DukeException ex){","lastModifiedDate":"2024-01-24"},{"lineNumber":201,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"Exception occured: \" + ex);","lastModifiedDate":"2024-01-23"},{"lineNumber":202,"author":{"gitId":"Ragnapop"},"content":" str \u003d bfn.nextLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":203,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":204,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":205,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":206,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":207,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":208,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":209,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-01-23"},{"lineNumber":210,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Ragnapop":200,"-":10}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ragnapop"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Ragnapop"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"Ragnapop"},"content":" public DukeException(String errorMessage) {","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"Ragnapop"},"content":" super(errorMessage);","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"Ragnapop"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Ragnapop":7}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ragnapop"},"content":"public class Event extends Task{","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"Ragnapop"},"content":" protected String from;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"Ragnapop"},"content":" protected String to;","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"Ragnapop"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Ragnapop"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Ragnapop"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"Ragnapop"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"Ragnapop"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"Ragnapop"},"content":" public String getTaskIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"Ragnapop"},"content":" return \"E\";","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"Ragnapop"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"Ragnapop"},"content":" public String ToString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"Ragnapop"},"content":" return super.ToString() + \" (from: \" + from + \"to: \" + to + \")\";","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"Ragnapop"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Ragnapop"},"content":" public String toStore() {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Ragnapop"},"content":" if (isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Ragnapop"},"content":" return getTaskIcon() + \"/\" + \"1\" + \"/\" + description + \"/\" + from + \"/\" + to;","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Ragnapop"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Ragnapop"},"content":" return getTaskIcon() + \"/\" + \"0\" + \"/\" + description + \"/\" + from + \"/\" + to;","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Ragnapop"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Ragnapop":28}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ragnapop"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Ragnapop"},"content":"import java.io.FileReader;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Ragnapop"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Ragnapop"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Ragnapop"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Ragnapop"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Ragnapop"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Ragnapop"},"content":"public class Storage {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Ragnapop"},"content":" private File file;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Ragnapop"},"content":" private ArrayList\u003cTask\u003e list \u003d new ArrayList\u003c\u003e(100);","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Ragnapop"},"content":" public Storage(String filePath) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Ragnapop"},"content":" this.file \u003d new File(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Ragnapop"},"content":" if (!this.file.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Ragnapop"},"content":" this.file.getParentFile().mkdirs();","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Ragnapop"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Ragnapop"},"content":" this.file.createNewFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Ragnapop"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"Error creating new file\");","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Ragnapop"},"content":" public void save() throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Ragnapop"},"content":" try{","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Ragnapop"},"content":" FileWriter writer \u003d new FileWriter(file);","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Ragnapop"},"content":" for(int a \u003d 0; a \u003c list.size(); a++ ) {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Ragnapop"},"content":" Task task \u003d list.get(a);","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Ragnapop"},"content":" String taskString \u003d task.toStore();","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Ragnapop"},"content":" writer.write(taskString + \"\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Ragnapop"},"content":" writer.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Ragnapop"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"Error saving file\");","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Ragnapop"},"content":" public ArrayList\u003cTask\u003e load() throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Ragnapop"},"content":" try{","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Ragnapop"},"content":" BufferedReader bufferedReader \u003d new BufferedReader(new FileReader(file));","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"Ragnapop"},"content":" String str \u003d bufferedReader.readLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"Ragnapop"},"content":" //System.out.println(str);","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"Ragnapop"},"content":" while (str !\u003d null){","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"Ragnapop"},"content":" String[] loadtokens \u003d str.split(\"/\");","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"Ragnapop"},"content":" //for(int a \u003d 0; a\u003c loadtokens.length; a++){System.out.println(loadtokens[a]);}","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"Ragnapop"},"content":" String type \u003d loadtokens[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"Ragnapop"},"content":" String status \u003d loadtokens[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"Ragnapop"},"content":" String desc \u003d loadtokens[2];","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"Ragnapop"},"content":" Task task;","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"Ragnapop"},"content":" switch (type) {","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"Ragnapop"},"content":" case \"T\":","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"Ragnapop"},"content":" task \u003d new Task(desc);","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"Ragnapop"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"Ragnapop"},"content":" case \"E\":","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"Ragnapop"},"content":" String to \u003d loadtokens[3];","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"Ragnapop"},"content":" String from \u003d loadtokens[4];","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"Ragnapop"},"content":" task \u003d new Event(desc, to, from);","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"Ragnapop"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"Ragnapop"},"content":" case \"D\":","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"Ragnapop"},"content":" String duedate \u003d loadtokens[3];","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"Ragnapop"},"content":" task \u003d new Deadline(desc, duedate);","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"Ragnapop"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"Ragnapop"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"File corrupted.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"Ragnapop"},"content":" if(status.equals(\"1\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"Ragnapop"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"Ragnapop"},"content":" list.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"Ragnapop"},"content":" str \u003d bufferedReader.readLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"Ragnapop"},"content":" bufferedReader.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"Ragnapop"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"Error loading tasks from file\");","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"Ragnapop"},"content":" catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"Error saving file\");","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"Ragnapop"},"content":" return list;","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"Ragnapop"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Ragnapop":85}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ragnapop"},"content":"public class Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"Ragnapop"},"content":" protected String description;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"Ragnapop"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Ragnapop"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Ragnapop"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"Ragnapop"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"Ragnapop"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"Ragnapop"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"Ragnapop"},"content":" public String getTaskIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"Ragnapop"},"content":" return \"T\";","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"Ragnapop"},"content":" public String ToString(){","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"Ragnapop"},"content":" return \"[\" + getTaskIcon() + \"] \" + \"[\" + getStatusIcon() + \"] \"+ description;","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"Ragnapop"},"content":" public void markAsDone(){","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Ragnapop"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Ragnapop"},"content":" public void unmarkAsDone(){","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Ragnapop"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Ragnapop"},"content":" public String toStore(){","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Ragnapop"},"content":" if(isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Ragnapop"},"content":" return getTaskIcon() + \"/\" + \"1\" + \"/\" + description;","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Ragnapop"},"content":" } else{","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Ragnapop"},"content":" return getTaskIcon() + \"/\" + \"0\" + \"/\" + description;","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Ragnapop"},"content":" //...","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":42,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Ragnapop":42}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Ragnapop"},"content":"todo","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Ragnapop"},"content":"todo homework","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Ragnapop"},"content":"deadline","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Ragnapop"},"content":"deadline homework / tuesday","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Ragnapop"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Ragnapop"},"content":"delete","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Ragnapop"},"content":"delete 1","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Ragnapop"},"content":"mark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Ragnapop"},"content":"unmark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Ragnapop"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Ragnapop"},"content":"mark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Ragnapop"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Ragnapop":12}}] diff --git a/Ragnapop_ip_master/commits.json b/Ragnapop_ip_master/commits.json index 76e59b82..d07d6778 100644 --- a/Ragnapop_ip_master/commits.json +++ b/Ragnapop_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Ragnapop":[{"date":"2024-01-22","commitResults":[{"hash":"2bf549a08de984bfc17f30cfcfbcd62a7abd0d0c","isMergeCommit":false,"messageTitle":"Level 0. Rename, Greet, Exit","messageBody":"","tags":["Level-0.-Rename,-Greet,-Exit"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}},{"hash":"143b6bb9a1632144e97871ac683ef61c29e798f1","isMergeCommit":false,"messageTitle":"Level 1. Echo","messageBody":"","tags":["Level-1.-Echo"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":2}}},{"hash":"adc3aa433e26ba8341cd67afceb0020059e88eb6","isMergeCommit":false,"messageTitle":"Level 3. Mark as Done","messageBody":"","tags":["Level-3","Level-2-Level-2.-Add,-List"],"fileTypesAndContributionMap":{"java":{"insertions":93,"deletions":9}}},{"hash":"636fafd14b61f6bd4994845ff8c7e164a82da0da","isMergeCommit":false,"messageTitle":"Level 4. ToDos, Events, Deadlines","messageBody":"","tags":["Level-4.-ToDos,-Events,-Deadlines"],"fileTypesAndContributionMap":{"java":{"insertions":67,"deletions":4}}}]},{"date":"2024-01-23","commitResults":[{"hash":"f772a90f4492ceb35cdecb13ab9bc4b06d17f790","isMergeCommit":false,"messageTitle":"Level 5. Handle Errors","messageBody":"","tags":["Level-5.-Handle-Errors"],"fileTypesAndContributionMap":{"java":{"insertions":136,"deletions":80}}},{"hash":"244501d0146763a4bbba950c8042d6774072e603","isMergeCommit":false,"messageTitle":"Level 6. Delete","messageBody":"","tags":["Level-6.-Delete"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":22}}}]},{"date":"2024-01-24","commitResults":[{"hash":"5676b4c2cd93be15a5ac19059ac3608e7c300390","isMergeCommit":false,"messageTitle":"Update Duke.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":1}}},{"hash":"ea1c9e2abb740f9ec385cf3124095e561dd73c8d","isMergeCommit":false,"messageTitle":"update","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":9,"deletions":5}}},{"hash":"0f137decbbe13a531b979f0b0580dfc789435dc1","isMergeCommit":false,"messageTitle":"UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":2}}}]}]},"authorFileTypeContributionMap":{"Ragnapop":{"java":258,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":12}},"authorContributionVariance":{"Ragnapop":13065.223},"authorDisplayNameMap":{"Ragnapop":"CS2103T-T15-2 LOH .. HUN"}} +{"authorDailyContributionsMap":{"Ragnapop":[{"date":"2024-01-22","commitResults":[{"hash":"2bf549a08de984bfc17f30cfcfbcd62a7abd0d0c","isMergeCommit":false,"messageTitle":"Level 0. Rename, Greet, Exit","messageBody":"","tags":["Level-0.-Rename,-Greet,-Exit"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}},{"hash":"143b6bb9a1632144e97871ac683ef61c29e798f1","isMergeCommit":false,"messageTitle":"Level 1. Echo","messageBody":"","tags":["Level-1.-Echo"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":2}}},{"hash":"adc3aa433e26ba8341cd67afceb0020059e88eb6","isMergeCommit":false,"messageTitle":"Level 3. Mark as Done","messageBody":"","tags":["Level-3","Level-2-Level-2.-Add,-List"],"fileTypesAndContributionMap":{"java":{"insertions":93,"deletions":9}}},{"hash":"636fafd14b61f6bd4994845ff8c7e164a82da0da","isMergeCommit":false,"messageTitle":"Level 4. ToDos, Events, Deadlines","messageBody":"","tags":["Level-4.-ToDos,-Events,-Deadlines"],"fileTypesAndContributionMap":{"java":{"insertions":67,"deletions":4}}}]},{"date":"2024-01-23","commitResults":[{"hash":"f772a90f4492ceb35cdecb13ab9bc4b06d17f790","isMergeCommit":false,"messageTitle":"Level 5. Handle Errors","messageBody":"","tags":["Level-5.-Handle-Errors"],"fileTypesAndContributionMap":{"java":{"insertions":136,"deletions":80}}},{"hash":"244501d0146763a4bbba950c8042d6774072e603","isMergeCommit":false,"messageTitle":"Level 6. Delete","messageBody":"","tags":["Level-6.-Delete"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":22}}}]},{"date":"2024-01-24","commitResults":[{"hash":"5676b4c2cd93be15a5ac19059ac3608e7c300390","isMergeCommit":false,"messageTitle":"Update Duke.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":1}}},{"hash":"ea1c9e2abb740f9ec385cf3124095e561dd73c8d","isMergeCommit":false,"messageTitle":"update","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":9,"deletions":5}}},{"hash":"0f137decbbe13a531b979f0b0580dfc789435dc1","isMergeCommit":false,"messageTitle":"UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":2}}}]},{"date":"2024-01-30","commitResults":[{"hash":"b2e7e712dbd99dbdf80b12578618e46bf1ebeec5","isMergeCommit":false,"messageTitle":"Level 7. Save","messageBody":"","tags":["Level-7.-Save"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":149,"deletions":17}}},{"hash":"a7a4bf9dafc29e69f1da9f7be67a3cb8586cde39","isMergeCommit":true,"messageTitle":"Merge pull request #1 from Ragnapop/branch-Level-7","messageBody":"Level 7. Save","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Ragnapop":{"java":390,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":17}},"authorContributionVariance":{"Ragnapop":9409.079},"authorDisplayNameMap":{"Ragnapop":"CS2103T-T15-2 LOH .. HUN"}} diff --git a/Tanzhiheng26_ip_master/authorship.json b/Tanzhiheng26_ip_master/authorship.json index 021f9f2c..5a744e04 100644 --- a/Tanzhiheng26_ip_master/authorship.json +++ b/Tanzhiheng26_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"data/ezra.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Tanzhiheng26"},"content":"T | 0 | join sports club","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Tanzhiheng26"},"content":"D | 1 | task | 28/01/2023 1800","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Tanzhiheng26"},"content":"E | 0 | task | 28/01/2023 1800 | 28/01/2023 1900","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Tanzhiheng26"},"content":"D | 0 | d | 29/01/2024 1800","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Tanzhiheng26":4}},{"path":"src/main/java/ezra/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Tanzhiheng26"},"content":"package ezra;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Tanzhiheng26"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Tanzhiheng26"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Tanzhiheng26"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"Tanzhiheng26"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-20"},{"lineNumber":8,"author":{"gitId":"Tanzhiheng26"},"content":" protected LocalDateTime by;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"Tanzhiheng26"},"content":" protected String byInput;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"Tanzhiheng26"},"content":" public Deadline(String description, String by) throws DateTimeParseException {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Tanzhiheng26"},"content":" super(description);","lastModifiedDate":"2024-01-20"},{"lineNumber":12,"author":{"gitId":"Tanzhiheng26"},"content":" this.by \u003d LocalDateTime.parse(by, DateTimeFormatter.ofPattern(\"dd/MM/yyyy HHmm\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Tanzhiheng26"},"content":" this.byInput \u003d by;","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":15,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":16,"author":{"gitId":"Tanzhiheng26"},"content":" @Override","lastModifiedDate":"2024-01-20"},{"lineNumber":17,"author":{"gitId":"Tanzhiheng26"},"content":" public String toString() {","lastModifiedDate":"2024-01-20"},{"lineNumber":18,"author":{"gitId":"Tanzhiheng26"},"content":" String byString \u003d this.by.format(DateTimeFormatter.ofPattern(\"dd MMM yyyy hh:mm a\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Tanzhiheng26"},"content":" return String.format(\"[D][%s] %s (by: %s)\", this.getStatusIcon(), this.description, byString);","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":21,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"Tanzhiheng26"},"content":" public String toString2() {","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"Tanzhiheng26"},"content":" return String.format(\"D | %d | %s | %s\", this.isDone ? 1 : 0, this.description, this.byInput);","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Tanzhiheng26"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Tanzhiheng26"},"content":" public boolean equals(Object o) {","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Tanzhiheng26"},"content":" if (o \u003d\u003d this) {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Tanzhiheng26"},"content":" return true;","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Tanzhiheng26"},"content":" if (!(o instanceof Deadline d)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Tanzhiheng26"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Tanzhiheng26"},"content":" return this.description.equals(d.description) \u0026\u0026 this.byInput.equals(d.byInput);","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Tanzhiheng26"},"content":"}","lastModifiedDate":"2024-01-20"}],"authorContributionMap":{"Tanzhiheng26":36}},{"path":"src/main/java/ezra/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Tanzhiheng26"},"content":"package ezra;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Tanzhiheng26"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Tanzhiheng26"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Tanzhiheng26"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"Tanzhiheng26"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"Tanzhiheng26"},"content":" protected LocalDateTime start;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"Tanzhiheng26"},"content":" protected LocalDateTime end;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"Tanzhiheng26"},"content":" protected String startInput;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"Tanzhiheng26"},"content":" protected String endInput;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"Tanzhiheng26"},"content":" public Event(String description, String start, String end) throws DateTimeParseException {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Tanzhiheng26"},"content":" super(description);","lastModifiedDate":"2024-01-21"},{"lineNumber":15,"author":{"gitId":"Tanzhiheng26"},"content":" this.start \u003d LocalDateTime.parse(start, DateTimeFormatter.ofPattern(\"dd/MM/yyyy HHmm\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Tanzhiheng26"},"content":" this.end \u003d LocalDateTime.parse(end, DateTimeFormatter.ofPattern(\"dd/MM/yyyy HHmm\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Tanzhiheng26"},"content":" this.startInput \u003d start;","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Tanzhiheng26"},"content":" this.endInput \u003d end;","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":20,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":21,"author":{"gitId":"Tanzhiheng26"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":22,"author":{"gitId":"Tanzhiheng26"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":23,"author":{"gitId":"Tanzhiheng26"},"content":" String startString \u003d this.start.format(DateTimeFormatter.ofPattern(\"dd MMM yyyy hh:mm a\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Tanzhiheng26"},"content":" String endString \u003d this.end.format(DateTimeFormatter.ofPattern(\"dd MMM yyyy hh:mm a\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Tanzhiheng26"},"content":" return String.format(","lastModifiedDate":"2024-01-21"},{"lineNumber":26,"author":{"gitId":"Tanzhiheng26"},"content":" \"[E][%s] %s (from: %s | to: %s)\",","lastModifiedDate":"2024-01-21"},{"lineNumber":27,"author":{"gitId":"Tanzhiheng26"},"content":" this.getStatusIcon(),","lastModifiedDate":"2024-01-21"},{"lineNumber":28,"author":{"gitId":"Tanzhiheng26"},"content":" this.description,","lastModifiedDate":"2024-01-21"},{"lineNumber":29,"author":{"gitId":"Tanzhiheng26"},"content":" startString,","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Tanzhiheng26"},"content":" endString","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"Tanzhiheng26"},"content":" );","lastModifiedDate":"2024-01-21"},{"lineNumber":32,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":33,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"Tanzhiheng26"},"content":" public String toString2() {","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"Tanzhiheng26"},"content":" return String.format(\"E | %d | %s | %s | %s\", this.isDone ? 1 : 0,","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Tanzhiheng26"},"content":" this.description,","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"Tanzhiheng26"},"content":" this.startInput,","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"Tanzhiheng26"},"content":" this.endInput","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"Tanzhiheng26"},"content":" );","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"Tanzhiheng26"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"Tanzhiheng26"},"content":" public boolean equals(Object o) {","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"Tanzhiheng26"},"content":" if (o \u003d\u003d this) {","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"Tanzhiheng26"},"content":" return true;","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"Tanzhiheng26"},"content":" if (!(o instanceof Event e)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"Tanzhiheng26"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"Tanzhiheng26"},"content":" return this.description.equals(e.description) \u0026\u0026","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"Tanzhiheng26"},"content":" this.startInput.equals(e.startInput) \u0026\u0026","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"Tanzhiheng26"},"content":" this.endInput.equals(e.endInput);","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"Tanzhiheng26"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"Tanzhiheng26":54}},{"path":"src/main/java/ezra/Ezra.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Tanzhiheng26"},"content":"package ezra;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Tanzhiheng26"},"content":"import java.io.File;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"Tanzhiheng26"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Tanzhiheng26"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"Tanzhiheng26"},"content":"public class Ezra {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Tanzhiheng26"},"content":" private Ui ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Tanzhiheng26"},"content":" private Storage storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Tanzhiheng26"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Tanzhiheng26"},"content":" public Ezra(String filepath) {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Tanzhiheng26"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Tanzhiheng26"},"content":" this.storage \u003d new Storage(filepath);","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Tanzhiheng26"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"Tanzhiheng26"},"content":" this.tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Tanzhiheng26"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"Tanzhiheng26"},"content":" System.out.println(\"\\tYou have no saved tasks\");","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"Tanzhiheng26"},"content":" this.tasks \u003d new TaskList();","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Tanzhiheng26"},"content":" public void run() {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Tanzhiheng26"},"content":" ui.greet();","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Tanzhiheng26"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-20"},{"lineNumber":28,"author":{"gitId":"Tanzhiheng26"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2024-01-21"},{"lineNumber":29,"author":{"gitId":"Tanzhiheng26"},"content":" String input \u003d scanner.nextLine();","lastModifiedDate":"2024-01-21"},{"lineNumber":30,"author":{"gitId":"Tanzhiheng26"},"content":" Parser.read(input, storage, tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Tanzhiheng26"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2024-01-21"},{"lineNumber":32,"author":{"gitId":"Tanzhiheng26"},"content":" break;","lastModifiedDate":"2024-01-21"},{"lineNumber":33,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":34,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"Tanzhiheng26"},"content":" scanner.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"Tanzhiheng26"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"Tanzhiheng26"},"content":" new Ezra(\"data\" + File.separator + \"ezra.txt\").run();","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"Tanzhiheng26":39,"-":1}},{"path":"src/main/java/ezra/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Tanzhiheng26"},"content":"package ezra;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Tanzhiheng26"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Tanzhiheng26"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Tanzhiheng26"},"content":"public class Parser {","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Tanzhiheng26"},"content":" public static void read(String input, Storage storage, TaskList tasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Tanzhiheng26"},"content":" Ui.horizontalLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Tanzhiheng26"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Tanzhiheng26"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Tanzhiheng26"},"content":" System.out.println(\"\\tBye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Tanzhiheng26"},"content":" } else if (input.equals(\"list\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Tanzhiheng26"},"content":" tasks.listTasks();","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Tanzhiheng26"},"content":" } else if (input.startsWith(\"mark\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Tanzhiheng26"},"content":" tasks.mark(Parser.parseMark(input), storage);","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Tanzhiheng26"},"content":" } else if (input.startsWith(\"unmark\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Tanzhiheng26"},"content":" tasks.unmark(Parser.parseUnmark(input), storage);","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Tanzhiheng26"},"content":" } else if (input.startsWith(\"delete\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Tanzhiheng26"},"content":" tasks.delete(Parser.parseDelete(input), storage);","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Tanzhiheng26"},"content":" } else if (input.startsWith(\"todo\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Tanzhiheng26"},"content":" tasks.updateTasks(Parser.parseToDo(input), storage);","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Tanzhiheng26"},"content":" } else if (input.startsWith(\"deadline\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Tanzhiheng26"},"content":" tasks.updateTasks(Parser.parseDeadline(input), storage);","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Tanzhiheng26"},"content":" } else if (input.startsWith(\"event\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Tanzhiheng26"},"content":" tasks.updateTasks(Parser.parseEvent(input), storage);","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Tanzhiheng26"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Tanzhiheng26"},"content":" System.out.println(\"\\tInvalid command\");","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Tanzhiheng26"},"content":" } catch (WrongFormatException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Tanzhiheng26"},"content":" System.out.println(\"\\t\" + e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Tanzhiheng26"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Tanzhiheng26"},"content":" System.out.println(\"\\tDate time must be in this format: 28/01/2023 1800\");","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Tanzhiheng26"},"content":" Ui.horizontalLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"Tanzhiheng26"},"content":" public static ToDo parseToDo(String input) throws WrongFormatException {","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"Tanzhiheng26"},"content":" if (Pattern.matches(\"todo\\\\s\\\\S.*\", input)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"Tanzhiheng26"},"content":" String description \u003d input.split(\"\\\\s\", 2)[1];","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"Tanzhiheng26"},"content":" return new ToDo(description);","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"Tanzhiheng26"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"Tanzhiheng26"},"content":" throw new WrongFormatException(","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"Tanzhiheng26"},"content":" \"Invalid \u0027todo\u0027 command format. Usage: todo \u003cdescription\u003e\"","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"Tanzhiheng26"},"content":" );","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"Tanzhiheng26"},"content":" public static Deadline parseDeadline(String input) throws WrongFormatException {","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"Tanzhiheng26"},"content":" if (Pattern.matches(\"deadline\\\\s\\\\S.*\\\\s/by\\\\s\\\\S.*\", input)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"Tanzhiheng26"},"content":" String[] arr \u003d input.split(\"\\\\s/by\\\\s\");","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"Tanzhiheng26"},"content":" String by \u003d arr[1];","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"Tanzhiheng26"},"content":" String description \u003d arr[0].split(\"\\\\s\", 2)[1];","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"Tanzhiheng26"},"content":" return new Deadline(description, by);","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"Tanzhiheng26"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"Tanzhiheng26"},"content":" throw new WrongFormatException(","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"Tanzhiheng26"},"content":" \"Invalid \u0027deadline\u0027 command format. Usage: deadline \u003cdescription\u003e /by \u003cdate time\u003e\"","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"Tanzhiheng26"},"content":" );","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"Tanzhiheng26"},"content":" public static Event parseEvent(String input) throws WrongFormatException {","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"Tanzhiheng26"},"content":" if (Pattern.matches(\"event\\\\s\\\\S.*\\\\s/from\\\\s\\\\S.*\\\\s/to\\\\s\\\\S.*\", input)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"Tanzhiheng26"},"content":" String[] splitTo \u003d input.split(\"\\\\s/to\\\\s\");","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"Tanzhiheng26"},"content":" String to \u003d splitTo[1];","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"Tanzhiheng26"},"content":" String[] splitFrom \u003d splitTo[0].split(\"\\\\s/from\\\\s\");","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"Tanzhiheng26"},"content":" String from \u003d splitFrom[1];","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"Tanzhiheng26"},"content":" String description \u003d splitFrom[0].split(\"\\\\s\", 2)[1];","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"Tanzhiheng26"},"content":" return new Event(description, from, to);","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"Tanzhiheng26"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"Tanzhiheng26"},"content":" throw new WrongFormatException(","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"Tanzhiheng26"},"content":" \"Invalid \u0027event\u0027 command format. Usage: event \u003cdescription\u003e /from \u003cdate time\u003e /to \u003cdate time\u003e\"","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"Tanzhiheng26"},"content":" );","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"Tanzhiheng26"},"content":" public static int parseDelete(String input) throws WrongFormatException {","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"Tanzhiheng26"},"content":" if (Pattern.matches(\"delete\\\\s\\\\d+\", input)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"Tanzhiheng26"},"content":" return Integer.parseInt(input.split(\"\\\\s\")[1]) - 1;","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"Tanzhiheng26"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"Tanzhiheng26"},"content":" throw new WrongFormatException(","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"Tanzhiheng26"},"content":" \"Invalid \u0027delete\u0027 command format. Usage: delete \u003cexisting task number\u003e\"","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"Tanzhiheng26"},"content":" );","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"Tanzhiheng26"},"content":" public static int parseMark(String input) throws WrongFormatException {","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"Tanzhiheng26"},"content":" if (Pattern.matches(\"mark\\\\s\\\\d+\", input)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"Tanzhiheng26"},"content":" return Integer.parseInt(input.split(\"\\\\s\")[1]) - 1;","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"Tanzhiheng26"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"Tanzhiheng26"},"content":" throw new WrongFormatException(","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"Tanzhiheng26"},"content":" \"Invalid \u0027mark\u0027 command format. Usage: mark \u003cexisting task number\u003e\"","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"Tanzhiheng26"},"content":" );","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"Tanzhiheng26"},"content":" public static int parseUnmark(String input) throws WrongFormatException {","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"Tanzhiheng26"},"content":" if (Pattern.matches(\"unmark\\\\s\\\\d+\", input)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"Tanzhiheng26"},"content":" return Integer.parseInt(input.split(\"\\\\s\")[1]) - 1;","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"Tanzhiheng26"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"Tanzhiheng26"},"content":" throw new WrongFormatException(","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"Tanzhiheng26"},"content":" \"Invalid \u0027unmark\u0027 command format. Usage: unmark \u003cexisting task number\u003e\"","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"Tanzhiheng26"},"content":" );","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"Tanzhiheng26"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Tanzhiheng26":105}},{"path":"src/main/java/ezra/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Tanzhiheng26"},"content":"package ezra;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Tanzhiheng26"},"content":"import java.io.File;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Tanzhiheng26"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Tanzhiheng26"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Tanzhiheng26"},"content":"public class Storage {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Tanzhiheng26"},"content":" String filepath;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Tanzhiheng26"},"content":" public Storage(String filepath) {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Tanzhiheng26"},"content":" this.filepath \u003d filepath;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Tanzhiheng26"},"content":" public void writeToFile(TaskList tasks) throws IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Tanzhiheng26"},"content":" File directory \u003d new File(\"data\");","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Tanzhiheng26"},"content":" directory.mkdir();","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Tanzhiheng26"},"content":" File f \u003d new File(\"data\" + File.separator + \"ezra.txt\");","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Tanzhiheng26"},"content":" f.createNewFile();","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Tanzhiheng26"},"content":" FileWriter fw \u003d new FileWriter(f);","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Tanzhiheng26"},"content":" StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Tanzhiheng26"},"content":" for (Task t : tasks.arrayList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Tanzhiheng26"},"content":" builder.append(t.toString2()).append(\"\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Tanzhiheng26"},"content":" fw.write(builder.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Tanzhiheng26"},"content":" fw.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Tanzhiheng26"},"content":" public File load() {","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Tanzhiheng26"},"content":" return new File(filepath);","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Tanzhiheng26"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Tanzhiheng26":30}},{"path":"src/main/java/ezra/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Tanzhiheng26"},"content":"package ezra;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Tanzhiheng26"},"content":"public class Task {","lastModifiedDate":"2024-01-20"},{"lineNumber":4,"author":{"gitId":"Tanzhiheng26"},"content":" protected String description;","lastModifiedDate":"2024-01-20"},{"lineNumber":5,"author":{"gitId":"Tanzhiheng26"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-20"},{"lineNumber":6,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":7,"author":{"gitId":"Tanzhiheng26"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-20"},{"lineNumber":8,"author":{"gitId":"Tanzhiheng26"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-20"},{"lineNumber":9,"author":{"gitId":"Tanzhiheng26"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-20"},{"lineNumber":10,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":11,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":12,"author":{"gitId":"Tanzhiheng26"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-20"},{"lineNumber":13,"author":{"gitId":"Tanzhiheng26"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-20"},{"lineNumber":14,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":15,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":16,"author":{"gitId":"Tanzhiheng26"},"content":" @Override","lastModifiedDate":"2024-01-20"},{"lineNumber":17,"author":{"gitId":"Tanzhiheng26"},"content":" public String toString() {","lastModifiedDate":"2024-01-20"},{"lineNumber":18,"author":{"gitId":"Tanzhiheng26"},"content":" return String.format(\"[%s] %s\", this.getStatusIcon(), this.description);","lastModifiedDate":"2024-01-20"},{"lineNumber":19,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":20,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"Tanzhiheng26"},"content":" public String toString2() {","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"Tanzhiheng26"},"content":" return String.format(\"%s | %s\", this.isDone ? 1 : 0, this.description);","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"Tanzhiheng26"},"content":"}","lastModifiedDate":"2024-01-20"}],"authorContributionMap":{"Tanzhiheng26":24}},{"path":"src/main/java/ezra/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Tanzhiheng26"},"content":"package ezra;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Tanzhiheng26"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Tanzhiheng26"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Tanzhiheng26"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Tanzhiheng26"},"content":"import java.io.File;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Tanzhiheng26"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Tanzhiheng26"},"content":"public class TaskList {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Tanzhiheng26"},"content":" protected ArrayList\u003cTask\u003e arrayList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Tanzhiheng26"},"content":" public TaskList() {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Tanzhiheng26"},"content":" public TaskList(File f) throws FileNotFoundException{","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Tanzhiheng26"},"content":" Scanner s \u003d new Scanner(f);","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Tanzhiheng26"},"content":" while (s.hasNextLine()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Tanzhiheng26"},"content":" String task \u003d s.nextLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Tanzhiheng26"},"content":" String[] arr \u003d task.split(\" \\\\| \");","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Tanzhiheng26"},"content":" String command \u003d arr[0];","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Tanzhiheng26"},"content":" boolean isDone \u003d arr[1].equals(\"1\");","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Tanzhiheng26"},"content":" String description \u003d arr[2];","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Tanzhiheng26"},"content":" if (command.equals(\"T\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Tanzhiheng26"},"content":" ToDo todo \u003d new ToDo(description);","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Tanzhiheng26"},"content":" todo.isDone \u003d isDone;","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Tanzhiheng26"},"content":" this.arrayList.add(todo);","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Tanzhiheng26"},"content":" } else if (command.equals(\"D\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Tanzhiheng26"},"content":" String by \u003d arr[3];","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Tanzhiheng26"},"content":" Deadline deadline \u003d new Deadline(description, by);","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Tanzhiheng26"},"content":" deadline.isDone \u003d isDone;","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Tanzhiheng26"},"content":" this.arrayList.add(deadline);","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"Tanzhiheng26"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Tanzhiheng26"},"content":" String from \u003d arr[3];","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Tanzhiheng26"},"content":" String to \u003d arr[4];","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Tanzhiheng26"},"content":" Event event \u003d new Event(description, from, to);","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"Tanzhiheng26"},"content":" event.isDone \u003d isDone;","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"Tanzhiheng26"},"content":" this.arrayList.add(event);","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"Tanzhiheng26"},"content":" public void listTasks() {","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"Tanzhiheng26"},"content":" if (this.arrayList.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"Tanzhiheng26"},"content":" System.out.println(\"\\tThere are no tasks in your list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"Tanzhiheng26"},"content":" return;","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"Tanzhiheng26"},"content":" System.out.println(\"\\tHere are the tasks in your list:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"Tanzhiheng26"},"content":" for (int i \u003d 0; i \u003c this.arrayList.size(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"Tanzhiheng26"},"content":" System.out.printf(","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"Tanzhiheng26"},"content":" \"\\t%d.%s\\n\",","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"Tanzhiheng26"},"content":" i + 1,","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"Tanzhiheng26"},"content":" this.arrayList.get(i)","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"Tanzhiheng26"},"content":" );","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"Tanzhiheng26"},"content":" public void delete(int taskIndex, Storage storage) {","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"Tanzhiheng26"},"content":" if (taskIndex \u003c 0 || taskIndex \u003e\u003d this.arrayList.size()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"Tanzhiheng26"},"content":" System.out.println(\"\\tInvalid task number\");","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"Tanzhiheng26"},"content":" return;","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"Tanzhiheng26"},"content":" System.out.println(\"\\tNoted, I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"Tanzhiheng26"},"content":" System.out.printf(","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"Tanzhiheng26"},"content":" \"\\t %s\\n\",","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"Tanzhiheng26"},"content":" this.arrayList.get(taskIndex)","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"Tanzhiheng26"},"content":" );","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"Tanzhiheng26"},"content":" this.arrayList.remove(taskIndex);","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"Tanzhiheng26"},"content":" System.out.printf(\"\\tNow you have %d tasks in the list.\\n\", this.arrayList.size());","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"Tanzhiheng26"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"Tanzhiheng26"},"content":" storage.writeToFile(this);","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"Tanzhiheng26"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"Tanzhiheng26"},"content":" System.out.println(\"\\tSomething went wrong: \" + e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"Tanzhiheng26"},"content":" public void updateTasks(Task task, Storage storage) {","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"Tanzhiheng26"},"content":" this.arrayList.add(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"Tanzhiheng26"},"content":" System.out.printf(\"\\tGot it. I\u0027ve added this task:\\n\\t %s\\n\", task);","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"Tanzhiheng26"},"content":" System.out.printf(\"\\tNow you have %d tasks in the list.\\n\", this.arrayList.size());","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"Tanzhiheng26"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"Tanzhiheng26"},"content":" storage.writeToFile(this);","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"Tanzhiheng26"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"Tanzhiheng26"},"content":" System.out.println(\"\\tSomething went wrong: \" + e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"Tanzhiheng26"},"content":" public void mark(int taskIndex, Storage storage) {","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"Tanzhiheng26"},"content":" if (taskIndex \u003c 0 || taskIndex \u003e\u003d this.arrayList.size()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"Tanzhiheng26"},"content":" System.out.println(\"\\tInvalid task number\");","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"Tanzhiheng26"},"content":" return;","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"Tanzhiheng26"},"content":" this.arrayList.get(taskIndex).isDone \u003d true;","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"Tanzhiheng26"},"content":" System.out.println(\"\\tNice! I have marked this task as done:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"Tanzhiheng26"},"content":" System.out.printf(","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"Tanzhiheng26"},"content":" \"\\t %s\\n\",","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"Tanzhiheng26"},"content":" this.arrayList.get(taskIndex)","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"Tanzhiheng26"},"content":" );","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"Tanzhiheng26"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"Tanzhiheng26"},"content":" storage.writeToFile(this);","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"Tanzhiheng26"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"Tanzhiheng26"},"content":" System.out.println(\"\\tSomething went wrong: \" + e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"Tanzhiheng26"},"content":" public void unmark(int taskIndex, Storage storage) {","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"Tanzhiheng26"},"content":" if (taskIndex \u003c 0 || taskIndex \u003e\u003d this.arrayList.size()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"Tanzhiheng26"},"content":" System.out.println(\"\\tInvalid task number\");","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"Tanzhiheng26"},"content":" return;","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"Tanzhiheng26"},"content":" this.arrayList.get(taskIndex).isDone \u003d false;","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"Tanzhiheng26"},"content":" System.out.println(\"\\tOK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"Tanzhiheng26"},"content":" System.out.printf(","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"Tanzhiheng26"},"content":" \"\\t %s\\n\",","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"Tanzhiheng26"},"content":" this.arrayList.get(taskIndex)","lastModifiedDate":"2024-01-29"},{"lineNumber":116,"author":{"gitId":"Tanzhiheng26"},"content":" );","lastModifiedDate":"2024-01-29"},{"lineNumber":117,"author":{"gitId":"Tanzhiheng26"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":118,"author":{"gitId":"Tanzhiheng26"},"content":" storage.writeToFile(this);","lastModifiedDate":"2024-01-29"},{"lineNumber":119,"author":{"gitId":"Tanzhiheng26"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":120,"author":{"gitId":"Tanzhiheng26"},"content":" System.out.println(\"\\tSomething went wrong: \" + e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":121,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":122,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":123,"author":{"gitId":"Tanzhiheng26"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Tanzhiheng26":123}},{"path":"src/main/java/ezra/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Tanzhiheng26"},"content":"package ezra;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Tanzhiheng26"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-20"},{"lineNumber":4,"author":{"gitId":"Tanzhiheng26"},"content":" public ToDo(String description) {","lastModifiedDate":"2024-01-20"},{"lineNumber":5,"author":{"gitId":"Tanzhiheng26"},"content":" super(description);","lastModifiedDate":"2024-01-20"},{"lineNumber":6,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":7,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":8,"author":{"gitId":"Tanzhiheng26"},"content":" @Override","lastModifiedDate":"2024-01-20"},{"lineNumber":9,"author":{"gitId":"Tanzhiheng26"},"content":" public String toString() {","lastModifiedDate":"2024-01-20"},{"lineNumber":10,"author":{"gitId":"Tanzhiheng26"},"content":" return String.format(\"[T][%s] %s\", this.getStatusIcon(), this.description);","lastModifiedDate":"2024-01-20"},{"lineNumber":11,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":12,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"Tanzhiheng26"},"content":" public String toString2() {","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"Tanzhiheng26"},"content":" return String.format(\"T | %d | %s\", this.isDone ? 1 : 0, this.description);","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Tanzhiheng26"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Tanzhiheng26"},"content":" public boolean equals(Object o) {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Tanzhiheng26"},"content":" if (o \u003d\u003d this) {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Tanzhiheng26"},"content":" return true;","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Tanzhiheng26"},"content":" if (!(o instanceof ToDo t)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Tanzhiheng26"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Tanzhiheng26"},"content":" return this.description.equals(t.description);","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Tanzhiheng26"},"content":"}","lastModifiedDate":"2024-01-20"}],"authorContributionMap":{"Tanzhiheng26":27}},{"path":"src/main/java/ezra/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Tanzhiheng26"},"content":"package ezra;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Tanzhiheng26"},"content":"public class Ui {","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Tanzhiheng26"},"content":" public static void horizontalLine() {","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Tanzhiheng26"},"content":" System.out.println(\"\\t────────────────────────────────────────────────────────────\");","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Tanzhiheng26"},"content":" public void greet() {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Tanzhiheng26"},"content":" Ui.horizontalLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Tanzhiheng26"},"content":" System.out.println(\"\\tHello! I\u0027m Ezra.\\n\\tWhat can I do for you?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Tanzhiheng26"},"content":" Ui.horizontalLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Tanzhiheng26"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Tanzhiheng26":12}},{"path":"src/main/java/ezra/WrongFormatException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Tanzhiheng26"},"content":"package ezra;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Tanzhiheng26"},"content":"public class WrongFormatException extends Exception {","lastModifiedDate":"2024-01-21"},{"lineNumber":4,"author":{"gitId":"Tanzhiheng26"},"content":" public WrongFormatException(String message) {","lastModifiedDate":"2024-01-21"},{"lineNumber":5,"author":{"gitId":"Tanzhiheng26"},"content":" super(message);","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"Tanzhiheng26"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"Tanzhiheng26":7}},{"path":"src/test/java/ezra/DeadlineTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Tanzhiheng26"},"content":"package ezra;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Tanzhiheng26"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Tanzhiheng26"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Tanzhiheng26"},"content":"public class DeadlineTest {","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Tanzhiheng26"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Tanzhiheng26"},"content":" public void testToString() {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Tanzhiheng26"},"content":" Deadline deadline1 \u003d new Deadline(\"Return book\", \"29/01/2024 1800\");","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Tanzhiheng26"},"content":" String expectedString1 \u003d \"[D][ ] Return book (by: 29 Jan 2024 06:00 pm)\";","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Tanzhiheng26"},"content":" assertEquals(expectedString1, deadline1.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Tanzhiheng26"},"content":" Deadline deadline2 \u003d new Deadline(\"Finish assignment\", \"01/02/2024 0000\");","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Tanzhiheng26"},"content":" String expectedString2 \u003d \"[D][ ] Finish assignment (by: 01 Feb 2024 12:00 am)\";","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Tanzhiheng26"},"content":" assertEquals(expectedString2, deadline2.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Tanzhiheng26"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Tanzhiheng26"},"content":" public void testToString2() {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Tanzhiheng26"},"content":" Deadline deadline1 \u003d new Deadline(\"Return book\", \"29/01/2024 1800\");","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Tanzhiheng26"},"content":" String expectedString1 \u003d \"D | 0 | Return book | 29/01/2024 1800\";","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Tanzhiheng26"},"content":" assertEquals(expectedString1, deadline1.toString2());","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Tanzhiheng26"},"content":" Deadline deadline2 \u003d new Deadline(\"Finish assignment\", \"01/02/2024 0000\");","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Tanzhiheng26"},"content":" String expectedString2 \u003d \"D | 0 | Finish assignment | 01/02/2024 0000\";","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Tanzhiheng26"},"content":" assertEquals(expectedString2, deadline2.toString2());","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Tanzhiheng26"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Tanzhiheng26":28}},{"path":"src/test/java/ezra/TestParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Tanzhiheng26"},"content":"package ezra;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Tanzhiheng26"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Tanzhiheng26"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Tanzhiheng26"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Tanzhiheng26"},"content":"public class TestParser {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Tanzhiheng26"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Tanzhiheng26"},"content":" public void TestParseDeadline() throws WrongFormatException {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Tanzhiheng26"},"content":" assertThrows(WrongFormatException.class, () -\u003e","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Tanzhiheng26"},"content":" Parser.parseDeadline(\"deadline return books\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Tanzhiheng26"},"content":" assertThrows(WrongFormatException.class, () -\u003e","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Tanzhiheng26"},"content":" Parser.parseDeadline(\"deadline /by 29/01/24 1800\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Tanzhiheng26"},"content":" assertThrows(WrongFormatException.class, () -\u003e","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Tanzhiheng26"},"content":" Parser.parseDeadline(\"deadline return books /by\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Tanzhiheng26"},"content":" assertThrows(WrongFormatException.class, () -\u003e","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Tanzhiheng26"},"content":" Parser.parseDeadline(\"deadline return books by 29/01/24 1800\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Tanzhiheng26"},"content":" assertEquals(new Deadline(\"return books\", \"29/01/2024 1800\"),","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Tanzhiheng26"},"content":" Parser.parseDeadline(\"deadline return books /by 29/01/2024 1800\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Tanzhiheng26"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Tanzhiheng26"},"content":" public void TestParseDelete() throws WrongFormatException {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Tanzhiheng26"},"content":" assertEquals(0, Parser.parseDelete(\"delete 1\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Tanzhiheng26"},"content":" assertEquals(9, Parser.parseDelete(\"delete 10\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Tanzhiheng26"},"content":" assertThrows(WrongFormatException.class, () -\u003e","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Tanzhiheng26"},"content":" Parser.parseDelete(\"delete -1\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Tanzhiheng26"},"content":" assertThrows(WrongFormatException.class, () -\u003e","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Tanzhiheng26"},"content":" Parser.parseDelete(\"delete abc\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Tanzhiheng26"},"content":" assertThrows(WrongFormatException.class, () -\u003e","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Tanzhiheng26"},"content":" Parser.parseDelete(\"delete 12a\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Tanzhiheng26"},"content":" assertThrows(WrongFormatException.class, () -\u003e","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"Tanzhiheng26"},"content":" Parser.parseDelete(\"delete\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Tanzhiheng26"},"content":" assertThrows(WrongFormatException.class, () -\u003e","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Tanzhiheng26"},"content":" Parser.parseDelete(\"delete \"));","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"Tanzhiheng26"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Tanzhiheng26":37}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Tanzhiheng26"},"content":"todo borrow book","lastModifiedDate":"2024-01-21"},{"lineNumber":2,"author":{"gitId":"Tanzhiheng26"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-21"},{"lineNumber":3,"author":{"gitId":"Tanzhiheng26"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-21"},{"lineNumber":4,"author":{"gitId":"Tanzhiheng26"},"content":"list","lastModifiedDate":"2024-01-21"},{"lineNumber":5,"author":{"gitId":"Tanzhiheng26"},"content":"mark 2","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"Tanzhiheng26"},"content":"list","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"Tanzhiheng26"},"content":"unmark 2","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"Tanzhiheng26"},"content":"list","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"Tanzhiheng26"},"content":"delete 1","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"Tanzhiheng26"},"content":"list","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"Tanzhiheng26"},"content":"bye","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"Tanzhiheng26":11}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"Tanzhiheng26"},"content":"java -classpath ..\\bin Ezra \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":{"Tanzhiheng26":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":"Tanzhiheng26"},"content":" mainClass.set(\"ezra.Ezra\")","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"Tanzhiheng26"},"content":" archiveBaseName \u003d \"ezra\"","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Tanzhiheng26"},"content":" archiveFileName \u003d \u0027ezra.jar\u0027","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Tanzhiheng26":3,"-":40}},{"path":"data/ezra.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Tanzhiheng26"},"content":"D | 1 | task | 28/01/2023 1800","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Tanzhiheng26"},"content":"E | 0 | task | 28/01/2023 1800 | 28/01/2023 1900","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"Tanzhiheng26"},"content":"D | 0 | d | 29/01/2024 1800","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Tanzhiheng26":3}},{"path":"src/main/java/ezra/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Tanzhiheng26"},"content":"package ezra;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Tanzhiheng26"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Tanzhiheng26"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Tanzhiheng26"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"Tanzhiheng26"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Tanzhiheng26"},"content":" * Represents a task with a deadline.","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Tanzhiheng26"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Tanzhiheng26"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-20"},{"lineNumber":11,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Tanzhiheng26"},"content":" protected LocalDateTime by;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Tanzhiheng26"},"content":" protected String byInput;","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Tanzhiheng26"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Tanzhiheng26"},"content":" * Constructs a Deadline object with the specified description and deadline.","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Tanzhiheng26"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Tanzhiheng26"},"content":" * @param description The description of the task.","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Tanzhiheng26"},"content":" * @param by The deadline of the task in the format \"dd/MM/yyyy HHmm\".","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Tanzhiheng26"},"content":" * @throws DateTimeParseException If the deadline format is invalid.","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Tanzhiheng26"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Tanzhiheng26"},"content":" public Deadline(String description, String by) throws DateTimeParseException {","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Tanzhiheng26"},"content":" super(description);","lastModifiedDate":"2024-01-20"},{"lineNumber":24,"author":{"gitId":"Tanzhiheng26"},"content":" this.by \u003d LocalDateTime.parse(by, DateTimeFormatter.ofPattern(\"dd/MM/yyyy HHmm\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Tanzhiheng26"},"content":" this.byInput \u003d by;","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":27,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":28,"author":{"gitId":"Tanzhiheng26"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Tanzhiheng26"},"content":" * Returns a formatted string representation of the Deadline object to display to the user.","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Tanzhiheng26"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Tanzhiheng26"},"content":" * @return A formatted string including task type, status, description, and deadline.","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Tanzhiheng26"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Tanzhiheng26"},"content":" @Override","lastModifiedDate":"2024-01-20"},{"lineNumber":34,"author":{"gitId":"Tanzhiheng26"},"content":" public String toString() {","lastModifiedDate":"2024-01-20"},{"lineNumber":35,"author":{"gitId":"Tanzhiheng26"},"content":" String byString \u003d this.by.format(DateTimeFormatter.ofPattern(\"dd MMM yyyy hh:mm a\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Tanzhiheng26"},"content":" return String.format(\"[D][%s] %s (by: %s)\", this.getStatusIcon(), this.description, byString);","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":38,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"Tanzhiheng26"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Tanzhiheng26"},"content":" * Returns a formatted string representation of the Deadline object for storage purposes.","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Tanzhiheng26"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"Tanzhiheng26"},"content":" * @return A formatted string suitable for storage, including task type, status, description, and deadline.","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"Tanzhiheng26"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"Tanzhiheng26"},"content":" public String toString2() {","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"Tanzhiheng26"},"content":" return String.format(\"D | %d | %s | %s\", this.isDone ? 1 : 0, this.description, this.byInput);","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"Tanzhiheng26"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"Tanzhiheng26"},"content":" * Checks if this Deadline object is equal to another object.","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"Tanzhiheng26"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"Tanzhiheng26"},"content":" * @param o The object to compare to.","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"Tanzhiheng26"},"content":" * @return True if the objects are equal, false otherwise.","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"Tanzhiheng26"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"Tanzhiheng26"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"Tanzhiheng26"},"content":" public boolean equals(Object o) {","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"Tanzhiheng26"},"content":" if (o \u003d\u003d this) {","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"Tanzhiheng26"},"content":" return true;","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"Tanzhiheng26"},"content":" if (!(o instanceof Deadline)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"Tanzhiheng26"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"Tanzhiheng26"},"content":" Deadline d \u003d (Deadline) o;","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"Tanzhiheng26"},"content":" return this.description.equals(d.description) \u0026\u0026 this.byInput.equals(d.byInput);","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"Tanzhiheng26"},"content":"}","lastModifiedDate":"2024-01-20"}],"authorContributionMap":{"Tanzhiheng26":65}},{"path":"src/main/java/ezra/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Tanzhiheng26"},"content":"package ezra;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Tanzhiheng26"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Tanzhiheng26"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Tanzhiheng26"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"Tanzhiheng26"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Tanzhiheng26"},"content":" * Represents a task with a specific start and end time.","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Tanzhiheng26"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Tanzhiheng26"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Tanzhiheng26"},"content":" protected LocalDateTime start;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Tanzhiheng26"},"content":" protected LocalDateTime end;","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"Tanzhiheng26"},"content":" protected String startInput;","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"Tanzhiheng26"},"content":" protected String endInput;","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":17,"author":{"gitId":"Tanzhiheng26"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Tanzhiheng26"},"content":" * Constructs an Event object with the specified description, start time, and end time.","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Tanzhiheng26"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Tanzhiheng26"},"content":" * @param description The description of the task.","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Tanzhiheng26"},"content":" * @param start The start time of the event in the format \"dd/MM/yyyy HHmm\".","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Tanzhiheng26"},"content":" * @param end The end time of the event in the format \"dd/MM/yyyy HHmm\".","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Tanzhiheng26"},"content":" * @throws DateTimeParseException If the start or end time format is invalid.","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Tanzhiheng26"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Tanzhiheng26"},"content":" public Event(String description, String start, String end) throws DateTimeParseException {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Tanzhiheng26"},"content":" super(description);","lastModifiedDate":"2024-01-21"},{"lineNumber":27,"author":{"gitId":"Tanzhiheng26"},"content":" this.start \u003d LocalDateTime.parse(start, DateTimeFormatter.ofPattern(\"dd/MM/yyyy HHmm\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Tanzhiheng26"},"content":" this.end \u003d LocalDateTime.parse(end, DateTimeFormatter.ofPattern(\"dd/MM/yyyy HHmm\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Tanzhiheng26"},"content":" this.startInput \u003d start;","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Tanzhiheng26"},"content":" this.endInput \u003d end;","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":32,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":33,"author":{"gitId":"Tanzhiheng26"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Tanzhiheng26"},"content":" * Returns a formatted string representation of the Event object to display to the user.","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Tanzhiheng26"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Tanzhiheng26"},"content":" * @return A formatted string including task type, status, description, start time, and end time.","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Tanzhiheng26"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Tanzhiheng26"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":39,"author":{"gitId":"Tanzhiheng26"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":40,"author":{"gitId":"Tanzhiheng26"},"content":" String startString \u003d this.start.format(DateTimeFormatter.ofPattern(\"dd MMM yyyy hh:mm a\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"Tanzhiheng26"},"content":" String endString \u003d this.end.format(DateTimeFormatter.ofPattern(\"dd MMM yyyy hh:mm a\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"Tanzhiheng26"},"content":" return String.format(","lastModifiedDate":"2024-01-21"},{"lineNumber":43,"author":{"gitId":"Tanzhiheng26"},"content":" \"[E][%s] %s (from: %s | to: %s)\",","lastModifiedDate":"2024-01-21"},{"lineNumber":44,"author":{"gitId":"Tanzhiheng26"},"content":" this.getStatusIcon(),","lastModifiedDate":"2024-01-21"},{"lineNumber":45,"author":{"gitId":"Tanzhiheng26"},"content":" this.description,","lastModifiedDate":"2024-01-21"},{"lineNumber":46,"author":{"gitId":"Tanzhiheng26"},"content":" startString,","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"Tanzhiheng26"},"content":" endString","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"Tanzhiheng26"},"content":" );","lastModifiedDate":"2024-01-21"},{"lineNumber":49,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":50,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"Tanzhiheng26"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"Tanzhiheng26"},"content":" * Returns a formatted string representation of the Event object for storage purposes.","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"Tanzhiheng26"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"Tanzhiheng26"},"content":" * @return A formatted string suitable for storage, including task type, status, description, start time,","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"Tanzhiheng26"},"content":" * and end time.","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"Tanzhiheng26"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"Tanzhiheng26"},"content":" public String toString2() {","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"Tanzhiheng26"},"content":" return String.format(\"E | %d | %s | %s | %s\", this.isDone ? 1 : 0,","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"Tanzhiheng26"},"content":" this.description,","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"Tanzhiheng26"},"content":" this.startInput,","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"Tanzhiheng26"},"content":" this.endInput","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"Tanzhiheng26"},"content":" );","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":64,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"Tanzhiheng26"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"Tanzhiheng26"},"content":" * Checks if this Event object is equal to another object.","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"Tanzhiheng26"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"Tanzhiheng26"},"content":" * @param o The object to compare to.","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"Tanzhiheng26"},"content":" * @return True if the objects are equal, false otherwise.","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"Tanzhiheng26"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"Tanzhiheng26"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"Tanzhiheng26"},"content":" public boolean equals(Object o) {","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"Tanzhiheng26"},"content":" if (o \u003d\u003d this) {","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"Tanzhiheng26"},"content":" return true;","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"Tanzhiheng26"},"content":" if (!(o instanceof Event)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"Tanzhiheng26"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"Tanzhiheng26"},"content":" Event e \u003d (Event) o;","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"Tanzhiheng26"},"content":" return this.description.equals(e.description)","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"Tanzhiheng26"},"content":" \u0026\u0026 this.startInput.equals(e.startInput)","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"Tanzhiheng26"},"content":" \u0026\u0026 this.endInput.equals(e.endInput);","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"Tanzhiheng26"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"Tanzhiheng26":84}},{"path":"src/main/java/ezra/Ezra.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Tanzhiheng26"},"content":"package ezra;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Tanzhiheng26"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Tanzhiheng26"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Tanzhiheng26"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"Tanzhiheng26"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Tanzhiheng26"},"content":" * Main class for the Ezra chatbot.","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Tanzhiheng26"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Tanzhiheng26"},"content":"public class Ezra {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Tanzhiheng26"},"content":" private Ui ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Tanzhiheng26"},"content":" private Storage storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Tanzhiheng26"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Tanzhiheng26"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Tanzhiheng26"},"content":" * Constructs an Ezra object with the specified file path to load saved tasks from.","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Tanzhiheng26"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Tanzhiheng26"},"content":" * @param filepath The file path for storing tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Tanzhiheng26"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Tanzhiheng26"},"content":" public Ezra(String filepath) {","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Tanzhiheng26"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Tanzhiheng26"},"content":" this.storage \u003d new Storage(filepath);","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Tanzhiheng26"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"Tanzhiheng26"},"content":" this.tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Tanzhiheng26"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"Tanzhiheng26"},"content":" this.tasks \u003d new TaskList();","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Tanzhiheng26"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Tanzhiheng26"},"content":" * Runs the Ezra application, allowing the user to enter commands.","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Tanzhiheng26"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Tanzhiheng26"},"content":" public void run() {","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Tanzhiheng26"},"content":" ui.greet();","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Tanzhiheng26"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-20"},{"lineNumber":39,"author":{"gitId":"Tanzhiheng26"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2024-01-21"},{"lineNumber":40,"author":{"gitId":"Tanzhiheng26"},"content":" String input \u003d scanner.nextLine();","lastModifiedDate":"2024-01-21"},{"lineNumber":41,"author":{"gitId":"Tanzhiheng26"},"content":" Parser.read(input, storage, tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"Tanzhiheng26"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2024-01-21"},{"lineNumber":43,"author":{"gitId":"Tanzhiheng26"},"content":" break;","lastModifiedDate":"2024-01-21"},{"lineNumber":44,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":45,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"Tanzhiheng26"},"content":" scanner.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"Tanzhiheng26"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"Tanzhiheng26"},"content":" * The main method to start the Ezra application.","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"Tanzhiheng26"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"Tanzhiheng26"},"content":" * @param args Command line arguments (not used in this application).","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"Tanzhiheng26"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"Tanzhiheng26"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"Tanzhiheng26"},"content":" new Ezra(\"data\" + File.separator + \"ezra.txt\").run();","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"Tanzhiheng26":56,"-":1}},{"path":"src/main/java/ezra/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Tanzhiheng26"},"content":"package ezra;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Tanzhiheng26"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Tanzhiheng26"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Tanzhiheng26"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Tanzhiheng26"},"content":" * Parses user input commands and performs corresponding actions.","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Tanzhiheng26"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Tanzhiheng26"},"content":"public class Parser {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Tanzhiheng26"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Tanzhiheng26"},"content":" * Reads the user input, processes the command, and updates the task list.","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Tanzhiheng26"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Tanzhiheng26"},"content":" * @param input The user input command.","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Tanzhiheng26"},"content":" * @param storage Storage object for writing tasks to a file.","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Tanzhiheng26"},"content":" * @param tasks TaskList object for managing tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Tanzhiheng26"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Tanzhiheng26"},"content":" public static void read(String input, Storage storage, TaskList tasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Tanzhiheng26"},"content":" Ui.horizontalLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Tanzhiheng26"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Tanzhiheng26"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Tanzhiheng26"},"content":" System.out.println(\"\\tBye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Tanzhiheng26"},"content":" } else if (input.equals(\"list\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Tanzhiheng26"},"content":" tasks.listTasks();","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Tanzhiheng26"},"content":" } else if (input.startsWith(\"mark\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Tanzhiheng26"},"content":" tasks.mark(Parser.parseMark(input), storage);","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Tanzhiheng26"},"content":" } else if (input.startsWith(\"unmark\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Tanzhiheng26"},"content":" tasks.unmark(Parser.parseUnmark(input), storage);","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Tanzhiheng26"},"content":" } else if (input.startsWith(\"delete\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Tanzhiheng26"},"content":" tasks.delete(Parser.parseDelete(input), storage);","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Tanzhiheng26"},"content":" } else if (input.startsWith(\"todo\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"Tanzhiheng26"},"content":" tasks.updateTasks(Parser.parseToDo(input), storage);","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Tanzhiheng26"},"content":" } else if (input.startsWith(\"deadline\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Tanzhiheng26"},"content":" tasks.updateTasks(Parser.parseDeadline(input), storage);","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Tanzhiheng26"},"content":" } else if (input.startsWith(\"event\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"Tanzhiheng26"},"content":" tasks.updateTasks(Parser.parseEvent(input), storage);","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"Tanzhiheng26"},"content":" } else if (input.startsWith(\"find\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Tanzhiheng26"},"content":" tasks.find(Parser.parseFind(input));","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Tanzhiheng26"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"Tanzhiheng26"},"content":" System.out.println(\"\\tInvalid command\");","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"Tanzhiheng26"},"content":" } catch (WrongFormatException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"Tanzhiheng26"},"content":" System.out.println(\"\\t\" + e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"Tanzhiheng26"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"Tanzhiheng26"},"content":" System.out.println(\"\\tDate time must be in this format: 28/01/2023 1800\");","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"Tanzhiheng26"},"content":" Ui.horizontalLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"Tanzhiheng26"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"Tanzhiheng26"},"content":" * Parses a \u0027todo\u0027 command from the user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"Tanzhiheng26"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"Tanzhiheng26"},"content":" * @param input The user input command.","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"Tanzhiheng26"},"content":" * @return A ToDo object representing the task to be added.","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"Tanzhiheng26"},"content":" * @throws WrongFormatException If the command format is invalid.","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"Tanzhiheng26"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"Tanzhiheng26"},"content":" public static ToDo parseToDo(String input) throws WrongFormatException {","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"Tanzhiheng26"},"content":" if (Pattern.matches(\"todo\\\\s\\\\S.*\", input)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"Tanzhiheng26"},"content":" String description \u003d input.split(\"\\\\s\", 2)[1];","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"Tanzhiheng26"},"content":" return new ToDo(description);","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"Tanzhiheng26"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"Tanzhiheng26"},"content":" throw new WrongFormatException(\"Invalid \u0027todo\u0027 command format. Usage: todo \u003cdescription\u003e\");","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"Tanzhiheng26"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"Tanzhiheng26"},"content":" * Parses a \u0027deadline\u0027 command from the user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"Tanzhiheng26"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"Tanzhiheng26"},"content":" * @param input The user input command.","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"Tanzhiheng26"},"content":" * @return A Deadline object representing the task to be added.","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"Tanzhiheng26"},"content":" * @throws WrongFormatException If the command format is invalid.","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"Tanzhiheng26"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"Tanzhiheng26"},"content":" public static Deadline parseDeadline(String input) throws WrongFormatException {","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"Tanzhiheng26"},"content":" if (Pattern.matches(\"deadline\\\\s\\\\S.*\\\\s/by\\\\s\\\\S.*\", input)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"Tanzhiheng26"},"content":" String[] arr \u003d input.split(\"\\\\s/by\\\\s\");","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"Tanzhiheng26"},"content":" String by \u003d arr[1];","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"Tanzhiheng26"},"content":" String description \u003d arr[0].split(\"\\\\s\", 2)[1];","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"Tanzhiheng26"},"content":" return new Deadline(description, by);","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"Tanzhiheng26"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"Tanzhiheng26"},"content":" throw new WrongFormatException(","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"Tanzhiheng26"},"content":" \"Invalid \u0027deadline\u0027 command format. Usage: deadline \u003cdescription\u003e /by \u003cdate time\u003e\");","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"Tanzhiheng26"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"Tanzhiheng26"},"content":" * Parses an \u0027event\u0027 command from the user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"Tanzhiheng26"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"Tanzhiheng26"},"content":" * @param input The user input command.","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"Tanzhiheng26"},"content":" * @return An Event object representing the task to be added.","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"Tanzhiheng26"},"content":" * @throws WrongFormatException If the command format is invalid.","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"Tanzhiheng26"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"Tanzhiheng26"},"content":" public static Event parseEvent(String input) throws WrongFormatException {","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"Tanzhiheng26"},"content":" if (Pattern.matches(\"event\\\\s\\\\S.*\\\\s/from\\\\s\\\\S.*\\\\s/to\\\\s\\\\S.*\", input)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"Tanzhiheng26"},"content":" String[] splitTo \u003d input.split(\"\\\\s/to\\\\s\");","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"Tanzhiheng26"},"content":" String to \u003d splitTo[1];","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"Tanzhiheng26"},"content":" String[] splitFrom \u003d splitTo[0].split(\"\\\\s/from\\\\s\");","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"Tanzhiheng26"},"content":" String from \u003d splitFrom[1];","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"Tanzhiheng26"},"content":" String description \u003d splitFrom[0].split(\"\\\\s\", 2)[1];","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"Tanzhiheng26"},"content":" return new Event(description, from, to);","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"Tanzhiheng26"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"Tanzhiheng26"},"content":" throw new WrongFormatException(","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"Tanzhiheng26"},"content":" \"Invalid \u0027event\u0027 command format. Usage: event \u003cdescription\u003e /from \u003cdate time\u003e /to \u003cdate time\u003e\");","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"Tanzhiheng26"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"Tanzhiheng26"},"content":" * Parses a \u0027delete\u0027 command from the user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"Tanzhiheng26"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"Tanzhiheng26"},"content":" * @param input The user input command.","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"Tanzhiheng26"},"content":" * @return The index of the task to be deleted. Invalid index is handled by delete in TaskList.","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"Tanzhiheng26"},"content":" * @throws WrongFormatException If the command format is invalid.","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"Tanzhiheng26"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"Tanzhiheng26"},"content":" public static int parseDelete(String input) throws WrongFormatException {","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"Tanzhiheng26"},"content":" if (Pattern.matches(\"delete\\\\s\\\\d+\", input)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":116,"author":{"gitId":"Tanzhiheng26"},"content":" return Integer.parseInt(input.split(\"\\\\s\")[1]) - 1;","lastModifiedDate":"2024-01-29"},{"lineNumber":117,"author":{"gitId":"Tanzhiheng26"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":118,"author":{"gitId":"Tanzhiheng26"},"content":" throw new WrongFormatException(\"Invalid \u0027delete\u0027 command format. Usage: delete \u003cexisting task number\u003e\");","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":120,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":121,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":122,"author":{"gitId":"Tanzhiheng26"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":123,"author":{"gitId":"Tanzhiheng26"},"content":" * Parses a \u0027mark\u0027 command from the user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":124,"author":{"gitId":"Tanzhiheng26"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"Tanzhiheng26"},"content":" * @param input The user input command.","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"Tanzhiheng26"},"content":" * @return The index of the task to be marked as done. Invalid index is handled by mark in TaskList.","lastModifiedDate":"2024-01-30"},{"lineNumber":127,"author":{"gitId":"Tanzhiheng26"},"content":" * @throws WrongFormatException If the command format is invalid.","lastModifiedDate":"2024-01-30"},{"lineNumber":128,"author":{"gitId":"Tanzhiheng26"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"Tanzhiheng26"},"content":" public static int parseMark(String input) throws WrongFormatException {","lastModifiedDate":"2024-01-29"},{"lineNumber":130,"author":{"gitId":"Tanzhiheng26"},"content":" if (Pattern.matches(\"mark\\\\s\\\\d+\", input)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":131,"author":{"gitId":"Tanzhiheng26"},"content":" return Integer.parseInt(input.split(\"\\\\s\")[1]) - 1;","lastModifiedDate":"2024-01-29"},{"lineNumber":132,"author":{"gitId":"Tanzhiheng26"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":133,"author":{"gitId":"Tanzhiheng26"},"content":" throw new WrongFormatException(\"Invalid \u0027mark\u0027 command format. Usage: mark \u003cexisting task number\u003e\");","lastModifiedDate":"2024-01-30"},{"lineNumber":134,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":135,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":136,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":137,"author":{"gitId":"Tanzhiheng26"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"Tanzhiheng26"},"content":" * Parses an \u0027unmark\u0027 command from the user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":139,"author":{"gitId":"Tanzhiheng26"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"Tanzhiheng26"},"content":" * @param input The user input command.","lastModifiedDate":"2024-01-30"},{"lineNumber":141,"author":{"gitId":"Tanzhiheng26"},"content":" * @return The index of the task to be marked as not done. Invalid index is handled by unmark in TaskList.","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"Tanzhiheng26"},"content":" * @throws WrongFormatException If the command format is invalid.","lastModifiedDate":"2024-01-30"},{"lineNumber":143,"author":{"gitId":"Tanzhiheng26"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":144,"author":{"gitId":"Tanzhiheng26"},"content":" public static int parseUnmark(String input) throws WrongFormatException {","lastModifiedDate":"2024-01-29"},{"lineNumber":145,"author":{"gitId":"Tanzhiheng26"},"content":" if (Pattern.matches(\"unmark\\\\s\\\\d+\", input)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":146,"author":{"gitId":"Tanzhiheng26"},"content":" return Integer.parseInt(input.split(\"\\\\s\")[1]) - 1;","lastModifiedDate":"2024-01-29"},{"lineNumber":147,"author":{"gitId":"Tanzhiheng26"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":148,"author":{"gitId":"Tanzhiheng26"},"content":" throw new WrongFormatException(\"Invalid \u0027unmark\u0027 command format. Usage: unmark \u003cexisting task number\u003e\");","lastModifiedDate":"2024-01-30"},{"lineNumber":149,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":150,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":151,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":152,"author":{"gitId":"Tanzhiheng26"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":153,"author":{"gitId":"Tanzhiheng26"},"content":" * Parses a \u0027find\u0027 command from the user input and extracts the keyword to search for.","lastModifiedDate":"2024-01-30"},{"lineNumber":154,"author":{"gitId":"Tanzhiheng26"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":155,"author":{"gitId":"Tanzhiheng26"},"content":" * @param input The user input command.","lastModifiedDate":"2024-01-30"},{"lineNumber":156,"author":{"gitId":"Tanzhiheng26"},"content":" * @return The keyword to search for in task descriptions.","lastModifiedDate":"2024-01-30"},{"lineNumber":157,"author":{"gitId":"Tanzhiheng26"},"content":" * @throws WrongFormatException If the command format is invalid.","lastModifiedDate":"2024-01-30"},{"lineNumber":158,"author":{"gitId":"Tanzhiheng26"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":159,"author":{"gitId":"Tanzhiheng26"},"content":" public static String parseFind(String input) throws WrongFormatException {","lastModifiedDate":"2024-01-30"},{"lineNumber":160,"author":{"gitId":"Tanzhiheng26"},"content":" if (Pattern.matches(\"find\\\\s\\\\S.*\", input)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":161,"author":{"gitId":"Tanzhiheng26"},"content":" return input.split(\"\\\\s\", 2)[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":162,"author":{"gitId":"Tanzhiheng26"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":163,"author":{"gitId":"Tanzhiheng26"},"content":" throw new WrongFormatException(","lastModifiedDate":"2024-01-30"},{"lineNumber":164,"author":{"gitId":"Tanzhiheng26"},"content":" \"Invalid \u0027find\u0027 command format. Usage: find \u003ckeyword\u003e\"","lastModifiedDate":"2024-01-30"},{"lineNumber":165,"author":{"gitId":"Tanzhiheng26"},"content":" );","lastModifiedDate":"2024-01-30"},{"lineNumber":166,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":167,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":168,"author":{"gitId":"Tanzhiheng26"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Tanzhiheng26":168}},{"path":"src/main/java/ezra/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Tanzhiheng26"},"content":"package ezra;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Tanzhiheng26"},"content":"import java.io.File;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Tanzhiheng26"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Tanzhiheng26"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Tanzhiheng26"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Tanzhiheng26"},"content":" * Handles the storage of tasks in a file.","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Tanzhiheng26"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Tanzhiheng26"},"content":"public class Storage {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Tanzhiheng26"},"content":" String filepath;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Tanzhiheng26"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Tanzhiheng26"},"content":" * Constructs a Storage object with the specified file path.","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Tanzhiheng26"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Tanzhiheng26"},"content":" * @param filepath The file path for storing tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Tanzhiheng26"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Tanzhiheng26"},"content":" public Storage(String filepath) {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Tanzhiheng26"},"content":" this.filepath \u003d filepath;","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Tanzhiheng26"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Tanzhiheng26"},"content":" * Writes the tasks from a TaskList to the storage file.","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Tanzhiheng26"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Tanzhiheng26"},"content":" * @param taskList The TaskList containing tasks to be written to the file.","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Tanzhiheng26"},"content":" * @throws IOException If an I/O error occurs while writing to the file.","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Tanzhiheng26"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Tanzhiheng26"},"content":" public void writeToFile(TaskList taskList) throws IOException {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Tanzhiheng26"},"content":" // Create data directory if it does not exist","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Tanzhiheng26"},"content":" File directory \u003d new File(\"data\");","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Tanzhiheng26"},"content":" directory.mkdir();","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Tanzhiheng26"},"content":" // Create ezra.txt in data directory if it does not exist","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Tanzhiheng26"},"content":" File f \u003d new File(\"data\" + File.separator + \"ezra.txt\");","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Tanzhiheng26"},"content":" f.createNewFile();","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Tanzhiheng26"},"content":" // Write tasks to ezra.txt","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Tanzhiheng26"},"content":" FileWriter fw \u003d new FileWriter(f);","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"Tanzhiheng26"},"content":" StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"Tanzhiheng26"},"content":" for (Task t : taskList.tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"Tanzhiheng26"},"content":" builder.append(t.toString2()).append(\"\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"Tanzhiheng26"},"content":" fw.write(builder.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"Tanzhiheng26"},"content":" fw.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"Tanzhiheng26"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"Tanzhiheng26"},"content":" * Loads the storage file.","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"Tanzhiheng26"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"Tanzhiheng26"},"content":" * @return The File object representing the storage file.","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"Tanzhiheng26"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"Tanzhiheng26"},"content":" public File load() {","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"Tanzhiheng26"},"content":" return new File(filepath);","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"Tanzhiheng26"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Tanzhiheng26":56}},{"path":"src/main/java/ezra/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Tanzhiheng26"},"content":"package ezra;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Tanzhiheng26"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Tanzhiheng26"},"content":" * Represents a generic task with a description and completion status.","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Tanzhiheng26"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Tanzhiheng26"},"content":"public class Task {","lastModifiedDate":"2024-01-20"},{"lineNumber":7,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Tanzhiheng26"},"content":" protected String description;","lastModifiedDate":"2024-01-20"},{"lineNumber":9,"author":{"gitId":"Tanzhiheng26"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-20"},{"lineNumber":10,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":11,"author":{"gitId":"Tanzhiheng26"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Tanzhiheng26"},"content":" * Constructs a Task object with the specified description.","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Tanzhiheng26"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Tanzhiheng26"},"content":" * @param description The description of the task.","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Tanzhiheng26"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Tanzhiheng26"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-20"},{"lineNumber":17,"author":{"gitId":"Tanzhiheng26"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-20"},{"lineNumber":18,"author":{"gitId":"Tanzhiheng26"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-20"},{"lineNumber":19,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":20,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":21,"author":{"gitId":"Tanzhiheng26"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Tanzhiheng26"},"content":" * Gets the status icon for the task.","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Tanzhiheng26"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Tanzhiheng26"},"content":" * @return \"X\" if the task is done, \" \" (space) otherwise.","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Tanzhiheng26"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Tanzhiheng26"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-20"},{"lineNumber":27,"author":{"gitId":"Tanzhiheng26"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-20"},{"lineNumber":28,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":29,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":30,"author":{"gitId":"Tanzhiheng26"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Tanzhiheng26"},"content":" * Returns a formatted string representation of the Task object to display to the user.","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Tanzhiheng26"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Tanzhiheng26"},"content":" * @return A formatted string including the status icon and description.","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Tanzhiheng26"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Tanzhiheng26"},"content":" @Override","lastModifiedDate":"2024-01-20"},{"lineNumber":36,"author":{"gitId":"Tanzhiheng26"},"content":" public String toString() {","lastModifiedDate":"2024-01-20"},{"lineNumber":37,"author":{"gitId":"Tanzhiheng26"},"content":" return String.format(\"[%s] %s\", this.getStatusIcon(), this.description);","lastModifiedDate":"2024-01-20"},{"lineNumber":38,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":39,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"Tanzhiheng26"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Tanzhiheng26"},"content":" * Returns a formatted string representation of the Task object for storage purposes.","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"Tanzhiheng26"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"Tanzhiheng26"},"content":" * @return A formatted string suitable for storage, including the completion status and description.","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"Tanzhiheng26"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"Tanzhiheng26"},"content":" public String toString2() {","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"Tanzhiheng26"},"content":" return String.format(\"%s | %s\", this.isDone ? 1 : 0, this.description);","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"Tanzhiheng26"},"content":"}","lastModifiedDate":"2024-01-20"}],"authorContributionMap":{"Tanzhiheng26":48}},{"path":"src/main/java/ezra/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Tanzhiheng26"},"content":"package ezra;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Tanzhiheng26"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Tanzhiheng26"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Tanzhiheng26"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Tanzhiheng26"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Tanzhiheng26"},"content":"import java.io.File;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Tanzhiheng26"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Tanzhiheng26"},"content":" * Represents a collection of tasks and provides methods for managing them.","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Tanzhiheng26"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Tanzhiheng26"},"content":"public class TaskList {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Tanzhiheng26"},"content":" protected ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Tanzhiheng26"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Tanzhiheng26"},"content":" * Constructs an empty TaskList.","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Tanzhiheng26"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Tanzhiheng26"},"content":" public TaskList() {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Tanzhiheng26"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Tanzhiheng26"},"content":" * Constructs a TaskList by reading tasks from a file.","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Tanzhiheng26"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Tanzhiheng26"},"content":" * @param f The file containing tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Tanzhiheng26"},"content":" * @throws FileNotFoundException If the specified file is not found.","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Tanzhiheng26"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Tanzhiheng26"},"content":" public TaskList(File f) throws FileNotFoundException{","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Tanzhiheng26"},"content":" Scanner s \u003d new Scanner(f);","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Tanzhiheng26"},"content":" while (s.hasNextLine()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"Tanzhiheng26"},"content":" // Extract command, isDone and description from input","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Tanzhiheng26"},"content":" String task \u003d s.nextLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Tanzhiheng26"},"content":" String[] arr \u003d task.split(\" \\\\| \");","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Tanzhiheng26"},"content":" String command \u003d arr[0];","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"Tanzhiheng26"},"content":" boolean isDone \u003d arr[1].equals(\"1\");","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"Tanzhiheng26"},"content":" String description \u003d arr[2];","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Tanzhiheng26"},"content":" if (command.equals(\"T\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"Tanzhiheng26"},"content":" ToDo todo \u003d new ToDo(description);","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"Tanzhiheng26"},"content":" todo.isDone \u003d isDone;","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"Tanzhiheng26"},"content":" this.tasks.add(todo);","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"Tanzhiheng26"},"content":" } else if (command.equals(\"D\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"Tanzhiheng26"},"content":" String by \u003d arr[3];","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"Tanzhiheng26"},"content":" Deadline deadline \u003d new Deadline(description, by);","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"Tanzhiheng26"},"content":" deadline.isDone \u003d isDone;","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"Tanzhiheng26"},"content":" this.tasks.add(deadline);","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"Tanzhiheng26"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"Tanzhiheng26"},"content":" String from \u003d arr[3];","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"Tanzhiheng26"},"content":" String to \u003d arr[4];","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"Tanzhiheng26"},"content":" Event event \u003d new Event(description, from, to);","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"Tanzhiheng26"},"content":" event.isDone \u003d isDone;","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"Tanzhiheng26"},"content":" this.tasks.add(event);","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"Tanzhiheng26"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"Tanzhiheng26"},"content":" * Lists all tasks in the TaskList.","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"Tanzhiheng26"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"Tanzhiheng26"},"content":" public void listTasks() {","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"Tanzhiheng26"},"content":" if (this.tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"Tanzhiheng26"},"content":" System.out.println(\"\\tThere are no tasks in your list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"Tanzhiheng26"},"content":" return;","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"Tanzhiheng26"},"content":" System.out.println(\"\\tHere are the tasks in your list:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"Tanzhiheng26"},"content":" for (int i \u003d 0; i \u003c this.tasks.size(); i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"Tanzhiheng26"},"content":" System.out.printf(","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"Tanzhiheng26"},"content":" \"\\t%d.%s\\n\",","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"Tanzhiheng26"},"content":" i + 1,","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"Tanzhiheng26"},"content":" this.tasks.get(i));","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"Tanzhiheng26"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"Tanzhiheng26"},"content":" * Deletes a task at the specified index.","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"Tanzhiheng26"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"Tanzhiheng26"},"content":" * @param taskIndex The arrayList index of the task in to be deleted.","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"Tanzhiheng26"},"content":" * @param storage The storage to update after deletion.","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"Tanzhiheng26"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"Tanzhiheng26"},"content":" public void delete(int taskIndex, Storage storage) {","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"Tanzhiheng26"},"content":" // Check for invalid taskIndex","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"Tanzhiheng26"},"content":" if (taskIndex \u003c 0 || taskIndex \u003e\u003d this.tasks.size()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"Tanzhiheng26"},"content":" System.out.println(\"\\tInvalid task number\");","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"Tanzhiheng26"},"content":" return;","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"Tanzhiheng26"},"content":" // Print task that was deleted and number of tasks remaining","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"Tanzhiheng26"},"content":" System.out.println(\"\\tNoted, I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"Tanzhiheng26"},"content":" System.out.printf(","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"Tanzhiheng26"},"content":" \"\\t %s\\n\",","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"Tanzhiheng26"},"content":" this.tasks.get(taskIndex));","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"Tanzhiheng26"},"content":" this.tasks.remove(taskIndex);","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"Tanzhiheng26"},"content":" System.out.printf(\"\\tNow you have %d tasks in the list.\\n\", this.tasks.size());","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"Tanzhiheng26"},"content":" // Update tasks in storage","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"Tanzhiheng26"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"Tanzhiheng26"},"content":" storage.writeToFile(this);","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"Tanzhiheng26"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"Tanzhiheng26"},"content":" System.out.println(\"\\tSomething went wrong: \" + e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"Tanzhiheng26"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"Tanzhiheng26"},"content":" * Updates the TaskList by adding a new task.","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"Tanzhiheng26"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"Tanzhiheng26"},"content":" * @param task The task to be added.","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"Tanzhiheng26"},"content":" * @param storage The storage to update after addition.","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"Tanzhiheng26"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"Tanzhiheng26"},"content":" public void updateTasks(Task task, Storage storage) {","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"Tanzhiheng26"},"content":" this.tasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"Tanzhiheng26"},"content":" // Print task that was added and number of tasks remaining","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"Tanzhiheng26"},"content":" System.out.printf(\"\\tGot it. I\u0027ve added this task:\\n\\t %s\\n\", task);","lastModifiedDate":"2024-01-29"},{"lineNumber":117,"author":{"gitId":"Tanzhiheng26"},"content":" System.out.printf(\"\\tNow you have %d tasks in the list.\\n\", this.tasks.size());","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"Tanzhiheng26"},"content":" // Update tasks in storage","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"Tanzhiheng26"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":121,"author":{"gitId":"Tanzhiheng26"},"content":" storage.writeToFile(this);","lastModifiedDate":"2024-01-29"},{"lineNumber":122,"author":{"gitId":"Tanzhiheng26"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":123,"author":{"gitId":"Tanzhiheng26"},"content":" System.out.println(\"\\tSomething went wrong: \" + e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":124,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":125,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":126,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":127,"author":{"gitId":"Tanzhiheng26"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":128,"author":{"gitId":"Tanzhiheng26"},"content":" * Marks a task as done at the specified index.","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"Tanzhiheng26"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"Tanzhiheng26"},"content":" * @param taskIndex The arrayList index of the task to be marked as done.","lastModifiedDate":"2024-01-30"},{"lineNumber":131,"author":{"gitId":"Tanzhiheng26"},"content":" * @param storage The storage to update after marking.","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"Tanzhiheng26"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":133,"author":{"gitId":"Tanzhiheng26"},"content":" public void mark(int taskIndex, Storage storage) {","lastModifiedDate":"2024-01-29"},{"lineNumber":134,"author":{"gitId":"Tanzhiheng26"},"content":" // Check for invalid taskIndex","lastModifiedDate":"2024-01-30"},{"lineNumber":135,"author":{"gitId":"Tanzhiheng26"},"content":" if (taskIndex \u003c 0 || taskIndex \u003e\u003d this.tasks.size()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":136,"author":{"gitId":"Tanzhiheng26"},"content":" System.out.println(\"\\tInvalid task number\");","lastModifiedDate":"2024-01-29"},{"lineNumber":137,"author":{"gitId":"Tanzhiheng26"},"content":" return;","lastModifiedDate":"2024-01-29"},{"lineNumber":138,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":139,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"Tanzhiheng26"},"content":" this.tasks.get(taskIndex).isDone \u003d true;","lastModifiedDate":"2024-01-30"},{"lineNumber":141,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"Tanzhiheng26"},"content":" // Print task that was marked","lastModifiedDate":"2024-01-30"},{"lineNumber":143,"author":{"gitId":"Tanzhiheng26"},"content":" System.out.println(\"\\tNice! I have marked this task as done:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":144,"author":{"gitId":"Tanzhiheng26"},"content":" System.out.printf(","lastModifiedDate":"2024-01-29"},{"lineNumber":145,"author":{"gitId":"Tanzhiheng26"},"content":" \"\\t %s\\n\",","lastModifiedDate":"2024-01-29"},{"lineNumber":146,"author":{"gitId":"Tanzhiheng26"},"content":" this.tasks.get(taskIndex));","lastModifiedDate":"2024-01-30"},{"lineNumber":147,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":148,"author":{"gitId":"Tanzhiheng26"},"content":" // Update tasks in storage","lastModifiedDate":"2024-01-30"},{"lineNumber":149,"author":{"gitId":"Tanzhiheng26"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":150,"author":{"gitId":"Tanzhiheng26"},"content":" storage.writeToFile(this);","lastModifiedDate":"2024-01-29"},{"lineNumber":151,"author":{"gitId":"Tanzhiheng26"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":152,"author":{"gitId":"Tanzhiheng26"},"content":" System.out.println(\"\\tSomething went wrong: \" + e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":153,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":154,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":155,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":156,"author":{"gitId":"Tanzhiheng26"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":157,"author":{"gitId":"Tanzhiheng26"},"content":" * Marks a task as not done at the specified index.","lastModifiedDate":"2024-01-30"},{"lineNumber":158,"author":{"gitId":"Tanzhiheng26"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":159,"author":{"gitId":"Tanzhiheng26"},"content":" * @param taskIndex The arrayList index of the task to be marked as not done.","lastModifiedDate":"2024-01-30"},{"lineNumber":160,"author":{"gitId":"Tanzhiheng26"},"content":" * @param storage The storage to update after marking.","lastModifiedDate":"2024-01-30"},{"lineNumber":161,"author":{"gitId":"Tanzhiheng26"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":162,"author":{"gitId":"Tanzhiheng26"},"content":" public void unmark(int taskIndex, Storage storage) {","lastModifiedDate":"2024-01-29"},{"lineNumber":163,"author":{"gitId":"Tanzhiheng26"},"content":" // Check for invalid taskIndex","lastModifiedDate":"2024-01-30"},{"lineNumber":164,"author":{"gitId":"Tanzhiheng26"},"content":" if (taskIndex \u003c 0 || taskIndex \u003e\u003d this.tasks.size()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":165,"author":{"gitId":"Tanzhiheng26"},"content":" System.out.println(\"\\tInvalid task number\");","lastModifiedDate":"2024-01-29"},{"lineNumber":166,"author":{"gitId":"Tanzhiheng26"},"content":" return;","lastModifiedDate":"2024-01-29"},{"lineNumber":167,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":168,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":169,"author":{"gitId":"Tanzhiheng26"},"content":" this.tasks.get(taskIndex).isDone \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":170,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":171,"author":{"gitId":"Tanzhiheng26"},"content":" // Print task that was unmarked","lastModifiedDate":"2024-01-30"},{"lineNumber":172,"author":{"gitId":"Tanzhiheng26"},"content":" System.out.println(\"\\tOK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":173,"author":{"gitId":"Tanzhiheng26"},"content":" System.out.printf(","lastModifiedDate":"2024-01-29"},{"lineNumber":174,"author":{"gitId":"Tanzhiheng26"},"content":" \"\\t %s\\n\",","lastModifiedDate":"2024-01-29"},{"lineNumber":175,"author":{"gitId":"Tanzhiheng26"},"content":" this.tasks.get(taskIndex));","lastModifiedDate":"2024-01-30"},{"lineNumber":176,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":177,"author":{"gitId":"Tanzhiheng26"},"content":" // Update tasks in storage","lastModifiedDate":"2024-01-30"},{"lineNumber":178,"author":{"gitId":"Tanzhiheng26"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":179,"author":{"gitId":"Tanzhiheng26"},"content":" storage.writeToFile(this);","lastModifiedDate":"2024-01-29"},{"lineNumber":180,"author":{"gitId":"Tanzhiheng26"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":181,"author":{"gitId":"Tanzhiheng26"},"content":" System.out.println(\"\\tSomething went wrong: \" + e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":182,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":183,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":184,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":185,"author":{"gitId":"Tanzhiheng26"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":186,"author":{"gitId":"Tanzhiheng26"},"content":" * Finds tasks in the TaskList that contain the specified keyword in their descriptions.","lastModifiedDate":"2024-01-30"},{"lineNumber":187,"author":{"gitId":"Tanzhiheng26"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":188,"author":{"gitId":"Tanzhiheng26"},"content":" * @param keyword The keyword to search for in task descriptions.","lastModifiedDate":"2024-01-30"},{"lineNumber":189,"author":{"gitId":"Tanzhiheng26"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":190,"author":{"gitId":"Tanzhiheng26"},"content":" public void find(String keyword) {","lastModifiedDate":"2024-01-30"},{"lineNumber":191,"author":{"gitId":"Tanzhiheng26"},"content":" ArrayList\u003cInteger\u003e matchingTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":192,"author":{"gitId":"Tanzhiheng26"},"content":" for (int i \u003d 0; i \u003c this.tasks.size(); i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":193,"author":{"gitId":"Tanzhiheng26"},"content":" if (this.tasks.get(i).description.contains(keyword)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":194,"author":{"gitId":"Tanzhiheng26"},"content":" matchingTasks.add(i);","lastModifiedDate":"2024-01-30"},{"lineNumber":195,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":196,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":197,"author":{"gitId":"Tanzhiheng26"},"content":" if (matchingTasks.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-30"},{"lineNumber":198,"author":{"gitId":"Tanzhiheng26"},"content":" System.out.println(\"\\tThere are no matching tasks in your list:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":199,"author":{"gitId":"Tanzhiheng26"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":200,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":201,"author":{"gitId":"Tanzhiheng26"},"content":" System.out.println(\"\\tHere are the matching tasks in your list:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":202,"author":{"gitId":"Tanzhiheng26"},"content":" for (Integer i : matchingTasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":203,"author":{"gitId":"Tanzhiheng26"},"content":" System.out.printf(","lastModifiedDate":"2024-01-30"},{"lineNumber":204,"author":{"gitId":"Tanzhiheng26"},"content":" \"\\t%d.%s\\n\",","lastModifiedDate":"2024-01-30"},{"lineNumber":205,"author":{"gitId":"Tanzhiheng26"},"content":" i + 1,","lastModifiedDate":"2024-01-30"},{"lineNumber":206,"author":{"gitId":"Tanzhiheng26"},"content":" this.tasks.get(i));","lastModifiedDate":"2024-01-30"},{"lineNumber":207,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":208,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":209,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":210,"author":{"gitId":"Tanzhiheng26"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Tanzhiheng26":210}},{"path":"src/main/java/ezra/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Tanzhiheng26"},"content":"package ezra;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Tanzhiheng26"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Tanzhiheng26"},"content":" * Represents a simple to-do task without a specific deadline or start/end time.","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Tanzhiheng26"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Tanzhiheng26"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-20"},{"lineNumber":7,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Tanzhiheng26"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Tanzhiheng26"},"content":" * Constructs a ToDo object with the specified description.","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Tanzhiheng26"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Tanzhiheng26"},"content":" * @param description The description of the to-do task.","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Tanzhiheng26"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Tanzhiheng26"},"content":" public ToDo(String description) {","lastModifiedDate":"2024-01-20"},{"lineNumber":14,"author":{"gitId":"Tanzhiheng26"},"content":" super(description);","lastModifiedDate":"2024-01-20"},{"lineNumber":15,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":16,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":17,"author":{"gitId":"Tanzhiheng26"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Tanzhiheng26"},"content":" * Returns a formatted string representation of the ToDo object to display to the user.","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Tanzhiheng26"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Tanzhiheng26"},"content":" * @return A formatted string including task type, status, and description.","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Tanzhiheng26"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Tanzhiheng26"},"content":" @Override","lastModifiedDate":"2024-01-20"},{"lineNumber":23,"author":{"gitId":"Tanzhiheng26"},"content":" public String toString() {","lastModifiedDate":"2024-01-20"},{"lineNumber":24,"author":{"gitId":"Tanzhiheng26"},"content":" return String.format(\"[T][%s] %s\", this.getStatusIcon(), this.description);","lastModifiedDate":"2024-01-20"},{"lineNumber":25,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":26,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"Tanzhiheng26"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Tanzhiheng26"},"content":" * Returns a formatted string representation of the ToDo object for storage purposes.","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Tanzhiheng26"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Tanzhiheng26"},"content":" * @return A formatted string suitable for storage, including task type, status, and description.","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Tanzhiheng26"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Tanzhiheng26"},"content":" public String toString2() {","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"Tanzhiheng26"},"content":" return String.format(\"T | %d | %s\", this.isDone ? 1 : 0, this.description);","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Tanzhiheng26"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Tanzhiheng26"},"content":" * Checks if this ToDo object is equal to another object.","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Tanzhiheng26"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Tanzhiheng26"},"content":" * @param o The object to compare to.","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Tanzhiheng26"},"content":" * @return True if the objects are equal, false otherwise.","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Tanzhiheng26"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"Tanzhiheng26"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"Tanzhiheng26"},"content":" public boolean equals(Object o) {","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"Tanzhiheng26"},"content":" if (o \u003d\u003d this) {","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"Tanzhiheng26"},"content":" return true;","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"Tanzhiheng26"},"content":" if (!(o instanceof ToDo)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"Tanzhiheng26"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"Tanzhiheng26"},"content":" ToDo t \u003d (ToDo) o;","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"Tanzhiheng26"},"content":" return this.description.equals(t.description);","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"Tanzhiheng26"},"content":"}","lastModifiedDate":"2024-01-20"}],"authorContributionMap":{"Tanzhiheng26":53}},{"path":"src/main/java/ezra/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Tanzhiheng26"},"content":"package ezra;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Tanzhiheng26"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Tanzhiheng26"},"content":" * Represents the user interface for the Ezra task management application.","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Tanzhiheng26"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Tanzhiheng26"},"content":"public class Ui {","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Tanzhiheng26"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Tanzhiheng26"},"content":" * Prints a horizontal line to the console.","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Tanzhiheng26"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Tanzhiheng26"},"content":" public static void horizontalLine() {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Tanzhiheng26"},"content":" System.out.println(\"\\t____________________________________________________________\");","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Tanzhiheng26"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Tanzhiheng26"},"content":" * Displays a greeting message to the user.","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Tanzhiheng26"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Tanzhiheng26"},"content":" public void greet() {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Tanzhiheng26"},"content":" Ui.horizontalLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Tanzhiheng26"},"content":" System.out.println(\"\\tHello! I\u0027m Ezra.\\n\\tWhat can I do for you?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Tanzhiheng26"},"content":" Ui.horizontalLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Tanzhiheng26"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Tanzhiheng26":23}},{"path":"src/main/java/ezra/WrongFormatException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Tanzhiheng26"},"content":"package ezra;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Tanzhiheng26"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Tanzhiheng26"},"content":" * Exception thrown when there is an incorrect format in user input commands.","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Tanzhiheng26"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Tanzhiheng26"},"content":"public class WrongFormatException extends Exception {","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Tanzhiheng26"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Tanzhiheng26"},"content":" * Constructs a WrongFormatException with the specified error message.","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Tanzhiheng26"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Tanzhiheng26"},"content":" * @param message The error message describing the incorrect format.","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Tanzhiheng26"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Tanzhiheng26"},"content":" public WrongFormatException(String message) {","lastModifiedDate":"2024-01-21"},{"lineNumber":14,"author":{"gitId":"Tanzhiheng26"},"content":" super(message);","lastModifiedDate":"2024-01-21"},{"lineNumber":15,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":16,"author":{"gitId":"Tanzhiheng26"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"Tanzhiheng26":16}},{"path":"src/test/java/ezra/DeadlineTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Tanzhiheng26"},"content":"package ezra;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Tanzhiheng26"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Tanzhiheng26"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Tanzhiheng26"},"content":"public class DeadlineTest {","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Tanzhiheng26"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Tanzhiheng26"},"content":" public void testToString() {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Tanzhiheng26"},"content":" Deadline deadline1 \u003d new Deadline(\"Return book\", \"29/01/2024 1800\");","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Tanzhiheng26"},"content":" String expectedString1 \u003d \"[D][ ] Return book (by: 29 Jan 2024 06:00 pm)\";","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Tanzhiheng26"},"content":" assertEquals(expectedString1, deadline1.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Tanzhiheng26"},"content":" Deadline deadline2 \u003d new Deadline(\"Finish assignment\", \"01/02/2024 0000\");","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Tanzhiheng26"},"content":" String expectedString2 \u003d \"[D][ ] Finish assignment (by: 01 Feb 2024 12:00 am)\";","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Tanzhiheng26"},"content":" assertEquals(expectedString2, deadline2.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Tanzhiheng26"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Tanzhiheng26"},"content":" public void testToString2() {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Tanzhiheng26"},"content":" Deadline deadline1 \u003d new Deadline(\"Return book\", \"29/01/2024 1800\");","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Tanzhiheng26"},"content":" String expectedString1 \u003d \"D | 0 | Return book | 29/01/2024 1800\";","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Tanzhiheng26"},"content":" assertEquals(expectedString1, deadline1.toString2());","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Tanzhiheng26"},"content":" Deadline deadline2 \u003d new Deadline(\"Finish assignment\", \"01/02/2024 0000\");","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Tanzhiheng26"},"content":" String expectedString2 \u003d \"D | 0 | Finish assignment | 01/02/2024 0000\";","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Tanzhiheng26"},"content":" assertEquals(expectedString2, deadline2.toString2());","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Tanzhiheng26"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Tanzhiheng26":28}},{"path":"src/test/java/ezra/TestParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Tanzhiheng26"},"content":"package ezra;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Tanzhiheng26"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Tanzhiheng26"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Tanzhiheng26"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Tanzhiheng26"},"content":"public class TestParser {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Tanzhiheng26"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Tanzhiheng26"},"content":" public void TestParseDeadline() throws WrongFormatException {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Tanzhiheng26"},"content":" assertThrows(WrongFormatException.class, () -\u003e","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Tanzhiheng26"},"content":" Parser.parseDeadline(\"deadline return books\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Tanzhiheng26"},"content":" assertThrows(WrongFormatException.class, () -\u003e","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Tanzhiheng26"},"content":" Parser.parseDeadline(\"deadline /by 29/01/24 1800\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Tanzhiheng26"},"content":" assertThrows(WrongFormatException.class, () -\u003e","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Tanzhiheng26"},"content":" Parser.parseDeadline(\"deadline return books /by\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Tanzhiheng26"},"content":" assertThrows(WrongFormatException.class, () -\u003e","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Tanzhiheng26"},"content":" Parser.parseDeadline(\"deadline return books by 29/01/24 1800\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Tanzhiheng26"},"content":" assertEquals(new Deadline(\"return books\", \"29/01/2024 1800\"),","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Tanzhiheng26"},"content":" Parser.parseDeadline(\"deadline return books /by 29/01/2024 1800\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Tanzhiheng26"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Tanzhiheng26"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Tanzhiheng26"},"content":" public void TestParseDelete() throws WrongFormatException {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Tanzhiheng26"},"content":" assertEquals(0, Parser.parseDelete(\"delete 1\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Tanzhiheng26"},"content":" assertEquals(9, Parser.parseDelete(\"delete 10\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Tanzhiheng26"},"content":" assertThrows(WrongFormatException.class, () -\u003e","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Tanzhiheng26"},"content":" Parser.parseDelete(\"delete -1\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Tanzhiheng26"},"content":" assertThrows(WrongFormatException.class, () -\u003e","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Tanzhiheng26"},"content":" Parser.parseDelete(\"delete abc\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Tanzhiheng26"},"content":" assertThrows(WrongFormatException.class, () -\u003e","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Tanzhiheng26"},"content":" Parser.parseDelete(\"delete 12a\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Tanzhiheng26"},"content":" assertThrows(WrongFormatException.class, () -\u003e","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"Tanzhiheng26"},"content":" Parser.parseDelete(\"delete\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Tanzhiheng26"},"content":" assertThrows(WrongFormatException.class, () -\u003e","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Tanzhiheng26"},"content":" Parser.parseDelete(\"delete \"));","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Tanzhiheng26"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"Tanzhiheng26"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Tanzhiheng26":37}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Tanzhiheng26"},"content":"list","lastModifiedDate":"2024-01-21"},{"lineNumber":2,"author":{"gitId":"Tanzhiheng26"},"content":"todo borrow book","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Tanzhiheng26"},"content":"mark 1","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Tanzhiheng26"},"content":"unmark 1","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Tanzhiheng26"},"content":"delete 1","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"Tanzhiheng26"},"content":"bye","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"Tanzhiheng26":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":"Tanzhiheng26"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\ezra\\*.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":"Tanzhiheng26"},"content":"java -classpath ..\\bin ezra.Ezra \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":{"Tanzhiheng26":2,"-":19}}] diff --git a/Tanzhiheng26_ip_master/commits.json b/Tanzhiheng26_ip_master/commits.json index 7b72eab9..98095eec 100644 --- a/Tanzhiheng26_ip_master/commits.json +++ b/Tanzhiheng26_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Tanzhiheng26":[{"date":"2024-01-20","commitResults":[{"hash":"0a7fd4ad0511ebba0b8beeeb704946938e7fb8e9","isMergeCommit":false,"messageTitle":"Rename chatbot to Ezra, print greeting and exit messages","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":6}}},{"hash":"207a08442e24709ecdc83bf1934538816cda2fb0","isMergeCommit":false,"messageTitle":"Echo user input until user enters \"bye\", add indentation to chatbot messages","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":3}}},{"hash":"e721b45e95f4e41deac2359b452c6982eda53462","isMergeCommit":false,"messageTitle":"Store user input in tasks ArrayList and display previous inputs when user enters \"list\"","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":3}}},{"hash":"63a9ef05d0642e84dfc67eb14ca5188e2982a859","isMergeCommit":false,"messageTitle":"Add Task class, allow tasks to be marked as done or not done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":84,"deletions":18}}},{"hash":"7bab8dfcaf871b612e42281e3919b2a78faa0fd8","isMergeCommit":false,"messageTitle":"Change static fields and methods to non-static.","messageBody":"This allows each instance of the chatbot to have its own task list.\n","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":17}}},{"hash":"18d93da79154527fe58e55bb41b8587b60cad0af","isMergeCommit":false,"messageTitle":"Add ToDo class and handle todo command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":5}}},{"hash":"394541aa2284f31cbc7eef42bf28acc8d8cc786f","isMergeCommit":false,"messageTitle":"Add Deadline class and handle deadline command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":0}}}]},{"date":"2024-01-21","commitResults":[{"hash":"957f0634def85ea70bae3735c66fd1d1b2efaa59","isMergeCommit":false,"messageTitle":"Add Event class and handle event command","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":14}}},{"hash":"b7b295207310b0c3bb3e43ce385f0252000db912","isMergeCommit":false,"messageTitle":"Test UI","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":7,"deletions":4}}},{"hash":"c3d3ba86f9fb22a07567bcb96cbb94912d1db839","isMergeCommit":false,"messageTitle":"Handle commands with incorrect format using custom WrongFormatException class","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":85,"deletions":32}}},{"hash":"d0dce1ac2d9647a44ea1884f216a2979f6e61405","isMergeCommit":false,"messageTitle":"Add delete command to remove tasks from the list","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":0}}},{"hash":"5ffe57a80cec5a12ba70eb30ed386a4b6cb28524","isMergeCommit":false,"messageTitle":"Add test for delete command","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0}}}]},{"date":"2024-01-27","commitResults":[{"hash":"4974ca3276fc1f6c10cca2ae347035571036704c","isMergeCommit":false,"messageTitle":"Write tasks to ./data/ezra.txt","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":53,"deletions":0}}},{"hash":"c6e783feb8a9f9869b0342f1c88306f67f539906","isMergeCommit":false,"messageTitle":"Load tasks from ./data/ezra.txt","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":5}}},{"hash":"4d108c93c59a33f76b9b8f2d248b1c345fd7f51f","isMergeCommit":false,"messageTitle":"Create data folder if it does not exist","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":2,"deletions":0}}},{"hash":"2ad13177ea8210e47bbfecd02c64c9a15b534783","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-28","commitResults":[{"hash":"0fc3d58a4639126df43f6e960cde65bf5a595f63","isMergeCommit":false,"messageTitle":"Store date as LocalDate in Deadline","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":4}}},{"hash":"51f383e9ed5f38c21cf101ec0b37021758ceaff9","isMergeCommit":false,"messageTitle":"Store date as LocalDate in Event","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":7}}},{"hash":"acfaff3c18410b623fb0587f739b6547b7f8b013","isMergeCommit":false,"messageTitle":"Store date and time as LocalDateTime in Deadline and Event","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":29,"deletions":19}}},{"hash":"3145327be94698661c6a591f4b460d2992246c67","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-29","commitResults":[{"hash":"e787990088c93024f2165263427d767eaaa70856","isMergeCommit":false,"messageTitle":"Create Ui, Storage, Parser, TaskList class and refactor Duke.java","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":3},"java":{"insertions":286,"deletions":244}}},{"hash":"23e86d8ef45bbf3f6be88380b42bcee4fa23f1b9","isMergeCommit":false,"messageTitle":"Put all classes in src.main.java.ezra package","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":22,"deletions":4},"bat":{"insertions":1,"deletions":1}}},{"hash":"2e56fab5727be43464c54365de15790ec9fa33b3","isMergeCommit":false,"messageTitle":"Put all classes in ezra package","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":10}}},{"hash":"fb21bd3792224b79d3914bf7d9a0ac2715ff9115","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027 of https://github.com/Tanzhiheng26/ip","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"be4a47dfe4ee84eee41d82c31ca222d6d450f040","isMergeCommit":false,"messageTitle":"Add JUnit tests","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":85,"deletions":22}}},{"hash":"c855e3a37fb9b2f602216644ccf42a05f33ee123","isMergeCommit":false,"messageTitle":"Add equals method to Event, Deadline and ToDo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":0}}},{"hash":"9ae345d1fcdcf4b8a9b317d397c2ab06718b8200","isMergeCommit":false,"messageTitle":"Add test case to TestParseDeadline","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"Tanzhiheng26":{"java":522,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":15}},"authorContributionVariance":{"Tanzhiheng26":43933.17},"authorDisplayNameMap":{"Tanzhiheng26":"CS2103T-W09-3 TAN ..HENG"}} +{"authorDailyContributionsMap":{"Tanzhiheng26":[{"date":"2024-01-20","commitResults":[{"hash":"0a7fd4ad0511ebba0b8beeeb704946938e7fb8e9","isMergeCommit":false,"messageTitle":"Rename chatbot to Ezra, print greeting and exit messages","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":6}}},{"hash":"207a08442e24709ecdc83bf1934538816cda2fb0","isMergeCommit":false,"messageTitle":"Echo user input until user enters \"bye\", add indentation to chatbot messages","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":3}}},{"hash":"e721b45e95f4e41deac2359b452c6982eda53462","isMergeCommit":false,"messageTitle":"Store user input in tasks ArrayList and display previous inputs when user enters \"list\"","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":3}}},{"hash":"63a9ef05d0642e84dfc67eb14ca5188e2982a859","isMergeCommit":false,"messageTitle":"Add Task class, allow tasks to be marked as done or not done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":84,"deletions":18}}},{"hash":"7bab8dfcaf871b612e42281e3919b2a78faa0fd8","isMergeCommit":false,"messageTitle":"Change static fields and methods to non-static.","messageBody":"This allows each instance of the chatbot to have its own task list.\n","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":17}}},{"hash":"18d93da79154527fe58e55bb41b8587b60cad0af","isMergeCommit":false,"messageTitle":"Add ToDo class and handle todo command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":5}}},{"hash":"394541aa2284f31cbc7eef42bf28acc8d8cc786f","isMergeCommit":false,"messageTitle":"Add Deadline class and handle deadline command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":0}}}]},{"date":"2024-01-21","commitResults":[{"hash":"957f0634def85ea70bae3735c66fd1d1b2efaa59","isMergeCommit":false,"messageTitle":"Add Event class and handle event command","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":14}}},{"hash":"b7b295207310b0c3bb3e43ce385f0252000db912","isMergeCommit":false,"messageTitle":"Test UI","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":7,"deletions":4}}},{"hash":"c3d3ba86f9fb22a07567bcb96cbb94912d1db839","isMergeCommit":false,"messageTitle":"Handle commands with incorrect format using custom WrongFormatException class","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":85,"deletions":32}}},{"hash":"d0dce1ac2d9647a44ea1884f216a2979f6e61405","isMergeCommit":false,"messageTitle":"Add delete command to remove tasks from the list","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":0}}},{"hash":"5ffe57a80cec5a12ba70eb30ed386a4b6cb28524","isMergeCommit":false,"messageTitle":"Add test for delete command","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0}}}]},{"date":"2024-01-27","commitResults":[{"hash":"4974ca3276fc1f6c10cca2ae347035571036704c","isMergeCommit":false,"messageTitle":"Write tasks to ./data/ezra.txt","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":53,"deletions":0}}},{"hash":"c6e783feb8a9f9869b0342f1c88306f67f539906","isMergeCommit":false,"messageTitle":"Load tasks from ./data/ezra.txt","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":5}}},{"hash":"4d108c93c59a33f76b9b8f2d248b1c345fd7f51f","isMergeCommit":false,"messageTitle":"Create data folder if it does not exist","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":2,"deletions":0}}},{"hash":"2ad13177ea8210e47bbfecd02c64c9a15b534783","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-28","commitResults":[{"hash":"0fc3d58a4639126df43f6e960cde65bf5a595f63","isMergeCommit":false,"messageTitle":"Store date as LocalDate in Deadline","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":4}}},{"hash":"51f383e9ed5f38c21cf101ec0b37021758ceaff9","isMergeCommit":false,"messageTitle":"Store date as LocalDate in Event","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":7}}},{"hash":"acfaff3c18410b623fb0587f739b6547b7f8b013","isMergeCommit":false,"messageTitle":"Store date and time as LocalDateTime in Deadline and Event","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":29,"deletions":19}}},{"hash":"3145327be94698661c6a591f4b460d2992246c67","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-29","commitResults":[{"hash":"e787990088c93024f2165263427d767eaaa70856","isMergeCommit":false,"messageTitle":"Create Ui, Storage, Parser, TaskList class and refactor Duke.java","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":3},"java":{"insertions":286,"deletions":244}}},{"hash":"23e86d8ef45bbf3f6be88380b42bcee4fa23f1b9","isMergeCommit":false,"messageTitle":"Put all classes in src.main.java.ezra package","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":22,"deletions":4},"bat":{"insertions":1,"deletions":1}}},{"hash":"2e56fab5727be43464c54365de15790ec9fa33b3","isMergeCommit":false,"messageTitle":"Put all classes in ezra package","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":10}}},{"hash":"fb21bd3792224b79d3914bf7d9a0ac2715ff9115","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027 of https://github.com/Tanzhiheng26/ip","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"be4a47dfe4ee84eee41d82c31ca222d6d450f040","isMergeCommit":false,"messageTitle":"Add JUnit tests","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":85,"deletions":22}}},{"hash":"c855e3a37fb9b2f602216644ccf42a05f33ee123","isMergeCommit":false,"messageTitle":"Add equals method to Event, Deadline and ToDo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":0}}},{"hash":"9ae345d1fcdcf4b8a9b317d397c2ab06718b8200","isMergeCommit":false,"messageTitle":"Add test case to TestParseDeadline","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":1}}}]},{"date":"2024-01-30","commitResults":[{"hash":"1ba8eae082b180cdcf7a2344998e91892f185aeb","isMergeCommit":false,"messageTitle":"Update build.gradle to create JAR files","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":3,"deletions":2},"java":{"insertions":7,"deletions":5}}},{"hash":"226e28773cecd47535c4fa60c955b5cb16266a80","isMergeCommit":false,"messageTitle":"Update filepath of Ezra in runtest.bat","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":9},"bat":{"insertions":2,"deletions":2}}},{"hash":"45d4016d70479e443348976ee9c2f57af6af97d7","isMergeCommit":false,"messageTitle":"Add javadoc comments to Task and its subclasses","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":102,"deletions":0}}},{"hash":"cb703c387822d915f23ea4cba532aa87e03ba2e9","isMergeCommit":false,"messageTitle":"Add javadoc comments all classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":155,"deletions":1}}},{"hash":"34411c170eca4b1646380d2cb87565e162976178","isMergeCommit":false,"messageTitle":"Follow Coding Standard","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":66,"deletions":47}}},{"hash":"86d81556b73dbc3001db862fa41685c7c34574c1","isMergeCommit":false,"messageTitle":"Add find command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":0}}},{"hash":"0717dcb0e4feb031a6112bcbe7db727a806cf50c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{}},{"hash":"98d4f9d9e680aa26fe8c7f229d7db0d209b6f3d7","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/ezra/Storage.java\n#\tsrc/main/java/ezra/TaskList.java\n","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"0385c4e0193663badea2276c77bc1ed68ac15c4d","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{}},{"hash":"a78cfca1eafa03f75e56ad903baadcdaa64e2229","isMergeCommit":false,"messageTitle":"Add javadoc comments for find and parseFind","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":3}}}]}]},"authorFileTypeContributionMap":{"Tanzhiheng26":{"java":844,"md":0,"fxml":0,"sh":0,"bat":2,"gradle":3,"txt":9}},"authorContributionVariance":{"Tanzhiheng26":48586.246},"authorDisplayNameMap":{"Tanzhiheng26":"CS2103T-W09-3 TAN ..HENG"}} diff --git a/Yskie_ip_master/authorship.json b/Yskie_ip_master/authorship.json index 38b475ff..c6bdf71a 100644 --- a/Yskie_ip_master/authorship.json +++ b/Yskie_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"data/tasks.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Yskie"},"content":"E | 1 | 19 | 1 | gf","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Yskie":1}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Yskie"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Yskie"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Yskie"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Yskie"},"content":" protected LocalDateTime endDatetime;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Yskie"},"content":" public Deadline(String name, String endDatetime) throws TinyException {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Yskie"},"content":" super(name);","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"Yskie"},"content":" this.endDatetime \u003d datetimeParser(endDatetime);","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"Yskie"},"content":" public Deadline(String name, boolean isDone, String endDatetime) throws TinyException {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Yskie"},"content":" super(name, isDone);","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Yskie"},"content":" this.endDatetime \u003d datetimeParser(endDatetime);","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Yskie"},"content":" public LocalDateTime datetimeParser(String date) throws TinyException {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Yskie"},"content":" String[] dateTimeSplit \u003d date.split(\" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Yskie"},"content":" int year \u003d 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Yskie"},"content":" int month \u003d 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Yskie"},"content":" int day \u003d 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Yskie"},"content":" int hour \u003d 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Yskie"},"content":" int minute \u003d 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Yskie"},"content":" String errorMsg \u003d \"Please ensure that you are using the format deadline \u003cdescription\u003e /by yyyy-MM-dd \u003ctime\u003e. eg. deadline assignment /by 2024-01-29 1835\";","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Yskie"},"content":" //Date","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Yskie"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Yskie"},"content":" String[] dateSplit \u003d dateTimeSplit[0].split(\"-\");","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Yskie"},"content":" year \u003d Integer.parseInt(dateSplit[0]);","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Yskie"},"content":" month \u003d Integer.parseInt(dateSplit[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Yskie"},"content":" day \u003d Integer.parseInt(dateSplit[2]);","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Yskie"},"content":" ","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Yskie"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Yskie"},"content":" throw new TinyException(errorMsg);","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Yskie"},"content":" //Time","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Yskie"},"content":" if (dateTimeSplit[1].length() \u003d\u003d 4) {","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Yskie"},"content":" try { ","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Yskie"},"content":" int time \u003d Integer.parseInt(dateTimeSplit[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Yskie"},"content":" if (time \u003e\u003d 2400 || time \u003c 0) {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Yskie"},"content":" throw new TinyException(\"Please choose a time from 0000 to 2359!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"Yskie"},"content":" String[] hourMinuteSplit \u003d dateTimeSplit[1].split(\"\");","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"Yskie"},"content":" hour \u003d Integer.parseInt(hourMinuteSplit[0] + hourMinuteSplit[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"Yskie"},"content":" minute \u003d Integer.parseInt(hourMinuteSplit[2] + hourMinuteSplit[3]);","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"Yskie"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"Yskie"},"content":" throw new TinyException(errorMsg);","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"Yskie"},"content":" //Combine","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"Yskie"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"Yskie"},"content":" return LocalDateTime.of(year, month, day, hour, minute);","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"Yskie"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"Yskie"},"content":" throw new TinyException(errorMsg);","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"Yskie"},"content":" public String endDatetimeFormat() {","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"Yskie"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy, HH:mm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"Yskie"},"content":" return endDatetime.format(formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"Yskie"},"content":" public String endDatetimeSaveFormat() {","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"Yskie"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"Yskie"},"content":" return endDatetime.format(formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"Yskie"},"content":" } ","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"Yskie"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"Yskie"},"content":" public String toSave() {","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"Yskie"},"content":" return \"D\" + super.toSave() + \" | \" + endDatetimeSaveFormat();","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"Yskie"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"Yskie"},"content":" return \"[D]\" + super.toString() + \" (by: \" + endDatetimeFormat() + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"Yskie"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Yskie":78}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Yskie"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Yskie"},"content":"import java.time.LocalTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Yskie"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Yskie"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Yskie"},"content":" protected LocalDateTime startDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Yskie"},"content":" protected LocalTime endDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"Yskie"},"content":" public Event(String name, String startDateTime, String endDateTime) throws TinyException {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Yskie"},"content":" super(name);","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"Yskie"},"content":" this.startDateTime \u003d startDatetimeParser(startDateTime);","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Yskie"},"content":" this.endDateTime \u003d endDatetimeParser(endDateTime);","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"Yskie"},"content":" public Event(String name, boolean isDone, String startDateTime, String endDateTime) throws TinyException {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Yskie"},"content":" super(name, isDone);","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Yskie"},"content":" this.startDateTime \u003d startDatetimeParser(startDateTime);","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Yskie"},"content":" this.endDateTime \u003d endDatetimeParser(endDateTime);","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Yskie"},"content":" public LocalDateTime startDatetimeParser(String date) throws TinyException {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Yskie"},"content":" String[] dateTimeSplit \u003d date.split(\" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Yskie"},"content":" int year \u003d 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Yskie"},"content":" int month \u003d 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Yskie"},"content":" int day \u003d 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Yskie"},"content":" int hour \u003d 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Yskie"},"content":" int minute \u003d 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Yskie"},"content":" String errorMsg \u003d \"Please ensure that you are using the format event \u003cdescription\u003e /from yyyy-MM-dd \u003ctime\u003e /to \u003cend date\u003e. \"","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Yskie"},"content":" + \"eg. event meeting /from 2024-01-29 1835 /to 2035\";","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Yskie"},"content":" // Date","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Yskie"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Yskie"},"content":" String[] dateSplit \u003d dateTimeSplit[0].split(\"-\");","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Yskie"},"content":" year \u003d Integer.parseInt(dateSplit[0]);","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Yskie"},"content":" month \u003d Integer.parseInt(dateSplit[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Yskie"},"content":" day \u003d Integer.parseInt(dateSplit[2]);","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Yskie"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Yskie"},"content":" throw new TinyException(errorMsg);","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Yskie"},"content":" // Time","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"Yskie"},"content":" if (dateTimeSplit[1].length() \u003d\u003d 4) {","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"Yskie"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"Yskie"},"content":" int time \u003d Integer.parseInt(dateTimeSplit[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"Yskie"},"content":" if (time \u003e\u003d 2400 || time \u003c 0) {","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"Yskie"},"content":" throw new TinyException(\"Please choose a time from 0000 to 2359!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"Yskie"},"content":" String[] hourMinuteSplit \u003d dateTimeSplit[1].split(\"\");","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"Yskie"},"content":" hour \u003d Integer.parseInt(hourMinuteSplit[0] + hourMinuteSplit[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"Yskie"},"content":" minute \u003d Integer.parseInt(hourMinuteSplit[2] + hourMinuteSplit[3]);","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"Yskie"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"Yskie"},"content":" throw new TinyException(errorMsg);","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"Yskie"},"content":" // Combine","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"Yskie"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"Yskie"},"content":" return LocalDateTime.of(year, month, day, hour, minute);","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"Yskie"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"Yskie"},"content":" throw new TinyException(errorMsg);","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"Yskie"},"content":" public LocalTime endDatetimeParser(String timeStr) throws TinyException { ","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"Yskie"},"content":" String errorMsg \u003d \"Please ensure that you are using the format event \u003cdescription\u003e /from yyyy-MM-dd \u003ctime\u003e /to \u003cend date\u003e. \"","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"Yskie"},"content":" + \"eg. event meeting /from 2024-01-29 1835 /to 2035\";","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"Yskie"},"content":" int time \u003d Integer.parseInt(timeStr);","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"Yskie"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"Yskie"},"content":" if (time \u003e\u003d 2400 || time \u003c 0) {","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"Yskie"},"content":" throw new TinyException(\"Please choose your end time from 0000 to 2359!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"Yskie"},"content":" String[] hourMinuteSplit \u003d timeStr.split(\"\");","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"Yskie"},"content":" int hour \u003d Integer.parseInt(hourMinuteSplit[0] + hourMinuteSplit[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"Yskie"},"content":" int minute \u003d Integer.parseInt(hourMinuteSplit[2] + hourMinuteSplit[3]);","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"Yskie"},"content":" return LocalTime.of(hour, minute);","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"Yskie"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"Yskie"},"content":" throw new TinyException(errorMsg);","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"Yskie"},"content":" ","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"Yskie"},"content":" public String startDatetimeFormat() {","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"Yskie"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy, HH:mm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"Yskie"},"content":" return startDateTime.format(formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"Yskie"},"content":" public String endDatetimeFormat() {","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"Yskie"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"HH:mm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"Yskie"},"content":" return endDateTime.format(formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"Yskie"},"content":" } ","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"Yskie"},"content":" public String startDatetimeSaveFormat() {","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"Yskie"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"Yskie"},"content":" return startDateTime.format(formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"Yskie"},"content":" } ","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"Yskie"},"content":" public String endDatetimeSaveFormat() {","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"Yskie"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"Yskie"},"content":" return endDateTime.format(formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"Yskie"},"content":" } ","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"Yskie"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"Yskie"},"content":" public String toSave() {","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"Yskie"},"content":" return \"E\" + super.toSave() + \" | \" + startDatetimeSaveFormat() + \" | \" + endDatetimeSaveFormat();","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":108,"author":{"gitId":"Yskie"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":109,"author":{"gitId":"Yskie"},"content":" return \"[E]\" + super.toString() + \" (from: \" + startDatetimeFormat() + \" to: \" + endDatetimeFormat() + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":111,"author":{"gitId":"Yskie"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Yskie":111}},{"path":"src/main/java/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Yskie"},"content":"public class Parser {","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Yskie"},"content":" protected boolean terminate \u003d false;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Yskie"},"content":" protected String input;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Yskie"},"content":" protected TaskList taskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Yskie"},"content":" public String parse(String input, TaskList taskList) throws TinyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Yskie"},"content":" this.input \u003d input;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Yskie"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Yskie"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Yskie"},"content":" if (input.equals(\"list\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Yskie"},"content":" return taskList.list();","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Yskie"},"content":" } else if (checkCmd(input, \"mark\", 4)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Yskie"},"content":" return mark();","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Yskie"},"content":" } else if (checkCmd(input, \"unmark\", 6)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Yskie"},"content":" return unmark();","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Yskie"},"content":" } else if (checkCmd(input, \"todo\", 4)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Yskie"},"content":" return todo();","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Yskie"},"content":" } else if (checkCmd(input, \"deadline\", 8)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Yskie"},"content":" return deadline();","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Yskie"},"content":" } else if (checkCmd(input, \"event\", 5)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Yskie"},"content":" return event();","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Yskie"},"content":" } else if (checkCmd(input, \"delete\", 6)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Yskie"},"content":" return delete(); ","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Yskie"},"content":" } else if (input.equals(\"bye\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Yskie"},"content":" terminate \u003d true;","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Yskie"},"content":" return bye();","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Yskie"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Yskie"},"content":" return cmdUnknown();","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Yskie"},"content":" } catch (TinyException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Yskie"},"content":" throw e;","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Yskie"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"Yskie"},"content":" return terminate;","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"Yskie"},"content":" public String mark() throws TinyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"Yskie"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"Yskie"},"content":" String[] s \u003d input.split(\" \");","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"Yskie"},"content":" if (s.length !\u003d 2 || !s[0].equals(\"mark\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"Yskie"},"content":" return \"OOPS! You need to type \\\"mark \u003cnumber\u003e\\\" to change the status to done!\";","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"Yskie"},"content":" int ind \u003d Integer.parseInt(s[1]);","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"Yskie"},"content":" taskList.get(ind - 1).taskDone();","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"Yskie"},"content":" return \"Nice! I\u0027ve marked this task as done:\\n \" + taskList.get(ind - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"Yskie"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"Yskie"},"content":" return \"OOPS! You need to type \\\"mark \u003cnumber\u003e\\\" to change the status to done!\";","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"Yskie"},"content":" } catch (NullPointerException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"Yskie"},"content":" return \"OOPS! Please type a valid number! Type \\\"list\\\" to check the lists of tasks.\";","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"Yskie"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"Yskie"},"content":" throw new TinyException(\"Something went wrong...\");","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"Yskie"},"content":" public String unmark() throws TinyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"Yskie"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"Yskie"},"content":" String[] s \u003d input.split(\" \");","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"Yskie"},"content":" if (s.length !\u003d 2 || !s[0].equals(\"unmark\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"Yskie"},"content":" return \"OOPS! You need to type \\\"unmark \u003cnumber\u003e\\\" to change the status not done!\";","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"Yskie"},"content":" int ind \u003d Integer.parseInt(s[1]);","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"Yskie"},"content":" taskList.get(ind - 1).taskUndone();","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"Yskie"},"content":" return \"OK, I\u0027ve marked this task as not done yet:\\n \" + taskList.get(ind - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"Yskie"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"Yskie"},"content":" return \"OOPS! You need to type \\\"unmark \u003cnumber\u003e\\\" to change the status to not done!\";","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"Yskie"},"content":" } catch (NullPointerException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"Yskie"},"content":" return \"OOPS! Please type a valid number! Type \\\"list\\\" to check the lists of tasks.\";","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"Yskie"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"Yskie"},"content":" throw new TinyException(\"Something went wrong...\");","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"Yskie"},"content":" public String todo() throws TinyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"Yskie"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"Yskie"},"content":" String name \u003d \"\";","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"Yskie"},"content":" String[] st \u003d input.split(\"\");","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"Yskie"},"content":" String[] s \u003d input.split(\" \");","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"Yskie"},"content":" if (!s[0].equals(\"todo\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"Yskie"},"content":" return \"OOPS! You need to type \\\"todo \u003cdescription\u003e\\\" to create a new todo!\";","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"Yskie"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"Yskie"},"content":" for (int i \u003d 5; i \u003c st.length; i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"Yskie"},"content":" name +\u003d st[i];","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"Yskie"},"content":" if (name \u003d\u003d \"\") {","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"Yskie"},"content":" return \"OOPS! The description of a todo cannot be empty.\";","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"Yskie"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"Yskie"},"content":" taskList.add(new Todo(name));","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"Yskie"},"content":" return \"Got it. I\u0027ve added this task:\\n \" + taskList.get(taskList.size() - 1)","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"Yskie"},"content":" + \"\\n Now you have \" + taskList.size() + \" task(s) in the list.\";","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"Yskie"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"Yskie"},"content":" return \"OOPS! You need to type \\\"todo \u003cdescription\u003e\\\" to create a new todo!\";","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"Yskie"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"Yskie"},"content":" throw new TinyException(\"Something went wrong...\");","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"Yskie"},"content":" public String deadline() throws TinyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"Yskie"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"Yskie"},"content":" String name \u003d \"\";","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"Yskie"},"content":" String[] st \u003d input.split(\"/by \");","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"Yskie"},"content":" String[] s \u003d input.split(\" \");","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"Yskie"},"content":" if (!s[0].equals(\"deadline\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"Yskie"},"content":" return \"OOPS! You need to type \\\"deadline \u003cdescription\u003e /by \u003cyyyy-mm-dd\u003e \u003ctime\u003e\\\" to create a new deadline!\";","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"Yskie"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"Yskie"},"content":" name \u003d st[0].substring(9);","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"Yskie"},"content":" taskList.add(new Deadline(name.trim(), st[1]));","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"Yskie"},"content":" // printAdd(tasks.get(tasks.size() - 1).toString(), tasks.size());","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"Yskie"},"content":" return \"Got it. I\u0027ve added this task:\\n\" + \" \" + taskList.get(taskList.size() - 1)","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"Yskie"},"content":" + \"\\n Now you have \" + taskList.size() + \" task(s) in the list.\";","lastModifiedDate":"2024-01-29"},{"lineNumber":116,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":117,"author":{"gitId":"Yskie"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":118,"author":{"gitId":"Yskie"},"content":" return \"OOPS! You need to type \\\"deadline \u003cdescription\u003e /by \u003cyyyy-mm-dd\u003e \u003ctime\u003e\\\" to create a new deadline!\";","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"Yskie"},"content":" } catch (TinyException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"Yskie"},"content":" throw e;","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":122,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":123,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":124,"author":{"gitId":"Yskie"},"content":" public String event() throws TinyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":125,"author":{"gitId":"Yskie"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":126,"author":{"gitId":"Yskie"},"content":" String name \u003d \"\";","lastModifiedDate":"2024-01-29"},{"lineNumber":127,"author":{"gitId":"Yskie"},"content":" String[] s \u003d input.split(\" \");","lastModifiedDate":"2024-01-29"},{"lineNumber":128,"author":{"gitId":"Yskie"},"content":" if (!s[0].equals(\"event\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":129,"author":{"gitId":"Yskie"},"content":" System.out.println(\"YES\");","lastModifiedDate":"2024-01-29"},{"lineNumber":130,"author":{"gitId":"Yskie"},"content":" return \"OOPS! You need to type \\\"event \u003cdescription\u003e /from \u003cstart date\u003e /to \u003cend date\u003e\\\" to create a new deadline!\";","lastModifiedDate":"2024-01-29"},{"lineNumber":131,"author":{"gitId":"Yskie"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":132,"author":{"gitId":"Yskie"},"content":" String[] from \u003d input.split(\"/from \");","lastModifiedDate":"2024-01-29"},{"lineNumber":133,"author":{"gitId":"Yskie"},"content":" String[] fromTo \u003d from[1].split(\"/to \");","lastModifiedDate":"2024-01-29"},{"lineNumber":134,"author":{"gitId":"Yskie"},"content":" name \u003d from[0].substring(5);","lastModifiedDate":"2024-01-29"},{"lineNumber":135,"author":{"gitId":"Yskie"},"content":" taskList.add(new Event(name.trim(), fromTo[0].trim(), fromTo[1].trim()));","lastModifiedDate":"2024-01-29"},{"lineNumber":136,"author":{"gitId":"Yskie"},"content":" return \"Got it. I\u0027ve added this task:\\n\" + \" \" + taskList.get(taskList.size() - 1)","lastModifiedDate":"2024-01-29"},{"lineNumber":137,"author":{"gitId":"Yskie"},"content":" + \"\\n Now you have \" + taskList.size() + \" task(s) in the list.\";","lastModifiedDate":"2024-01-29"},{"lineNumber":138,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":139,"author":{"gitId":"Yskie"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":140,"author":{"gitId":"Yskie"},"content":" return \"OOPS! You need to type \\\"event \u003cdescription\u003e /from \u003cstart date\u003e /to \u003cend date\u003e\\\" to create a new deadline!\";","lastModifiedDate":"2024-01-29"},{"lineNumber":141,"author":{"gitId":"Yskie"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":142,"author":{"gitId":"Yskie"},"content":" throw new TinyException(\"Something went wrong...\");","lastModifiedDate":"2024-01-29"},{"lineNumber":143,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":144,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":145,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":146,"author":{"gitId":"Yskie"},"content":" public String delete() throws TinyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":147,"author":{"gitId":"Yskie"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":148,"author":{"gitId":"Yskie"},"content":" String[] s \u003d input.split(\" \");","lastModifiedDate":"2024-01-29"},{"lineNumber":149,"author":{"gitId":"Yskie"},"content":" if (s.length !\u003d 2 || !s[0].equals(\"delete\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":150,"author":{"gitId":"Yskie"},"content":" return \"OOPS! You need to type \\\"delete \u003cnumber\u003e\\\" to delete the task!\";","lastModifiedDate":"2024-01-29"},{"lineNumber":151,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":152,"author":{"gitId":"Yskie"},"content":" int ind \u003d Integer.parseInt(s[1]); ","lastModifiedDate":"2024-01-29"},{"lineNumber":153,"author":{"gitId":"Yskie"},"content":" String output \u003d \"Noted. I\u0027ve removed this task:\" + ","lastModifiedDate":"2024-01-29"},{"lineNumber":154,"author":{"gitId":"Yskie"},"content":" \"\\n \" + taskList.get(ind - 1).toString() + ","lastModifiedDate":"2024-01-29"},{"lineNumber":155,"author":{"gitId":"Yskie"},"content":" \"\\n Now you have \" + (taskList.size() - 1) + \" task(s) in the list.\";","lastModifiedDate":"2024-01-29"},{"lineNumber":156,"author":{"gitId":"Yskie"},"content":" taskList.delete(ind - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":157,"author":{"gitId":"Yskie"},"content":" return output;","lastModifiedDate":"2024-01-29"},{"lineNumber":158,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":159,"author":{"gitId":"Yskie"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":160,"author":{"gitId":"Yskie"},"content":" return \"OOPS! You need to type \\\"delete \u003cnumber\u003e\\\" to delete the task!\";","lastModifiedDate":"2024-01-29"},{"lineNumber":161,"author":{"gitId":"Yskie"},"content":" } catch (NullPointerException | IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":162,"author":{"gitId":"Yskie"},"content":" return ","lastModifiedDate":"2024-01-29"},{"lineNumber":163,"author":{"gitId":"Yskie"},"content":" \"OOPS! Please type a valid number! Type \\\"list\\\" to check the lists of tasks.\";","lastModifiedDate":"2024-01-29"},{"lineNumber":164,"author":{"gitId":"Yskie"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":165,"author":{"gitId":"Yskie"},"content":" throw new TinyException(\"Something went wrong...\");","lastModifiedDate":"2024-01-29"},{"lineNumber":166,"author":{"gitId":"Yskie"},"content":" } ","lastModifiedDate":"2024-01-29"},{"lineNumber":167,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":168,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":169,"author":{"gitId":"Yskie"},"content":" public String bye() {","lastModifiedDate":"2024-01-29"},{"lineNumber":170,"author":{"gitId":"Yskie"},"content":" return \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2024-01-29"},{"lineNumber":171,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":172,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":173,"author":{"gitId":"Yskie"},"content":" public String cmdUnknown() {","lastModifiedDate":"2024-01-29"},{"lineNumber":174,"author":{"gitId":"Yskie"},"content":" return \"I\u0027m sorry, but I don\u0027t know what that means :-(\";","lastModifiedDate":"2024-01-29"},{"lineNumber":175,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":176,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":177,"author":{"gitId":"Yskie"},"content":" public static boolean checkCmd(String input, String name, int len) {","lastModifiedDate":"2024-01-29"},{"lineNumber":178,"author":{"gitId":"Yskie"},"content":" return input.length() \u003e\u003d len \u0026\u0026 input.substring(0, len).equals(name);","lastModifiedDate":"2024-01-29"},{"lineNumber":179,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":180,"author":{"gitId":"Yskie"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Yskie":180}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Yskie"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Yskie"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Yskie"},"content":"import java.io.File;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Yskie"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Yskie"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Yskie"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Yskie"},"content":"public class Storage {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Yskie"},"content":" protected String filePath;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Yskie"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Yskie"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Yskie"},"content":" // Returns a string of message to be parsed.","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Yskie"},"content":" public ArrayList\u003cString\u003e load() throws TinyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Yskie"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Yskie"},"content":" //Creating the folder if it does not exists","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Yskie"},"content":" if (!new File(\"../../../data\").exists()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Yskie"},"content":" new File(\"../../../data\").mkdirs(); ","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Yskie"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Yskie"},"content":" Scanner sc \u003d new Scanner(file);","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Yskie"},"content":" ArrayList\u003cString\u003e dataFromFile \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Yskie"},"content":" while (sc.hasNextLine()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Yskie"},"content":" String data \u003d sc.nextLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Yskie"},"content":" dataFromFile.add(data);","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Yskie"},"content":" sc.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Yskie"},"content":" return dataFromFile;","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Yskie"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"Yskie"},"content":" return new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Yskie"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Yskie"},"content":" throw new TinyException(\"\");","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"Yskie"},"content":" public void save(ArrayList\u003cString\u003e tasksToSave) {","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"Yskie"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"Yskie"},"content":" new FileWriter(filePath).close();","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"Yskie"},"content":" FileWriter myWriter \u003d new FileWriter(filePath);","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"Yskie"},"content":" for (int i \u003d 0; i \u003c tasksToSave.size(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"Yskie"},"content":" myWriter.write(tasksToSave.get(i) + \"\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"Yskie"},"content":" myWriter.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"Yskie"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"Yskie"},"content":" System.out.println(\"An error occurred when saving.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"Yskie"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Yskie":52}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Yskie"},"content":"class Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Yskie"},"content":" protected String name;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Yskie"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Yskie"},"content":" protected String type \u003d \" \";","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Yskie"},"content":" //add","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Yskie"},"content":" public Task(String name) {","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Yskie"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Yskie"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Yskie"},"content":" public Task(String name, boolean isDone) {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Yskie"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Yskie"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Yskie"},"content":" } ","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Yskie"},"content":" public String getName() {","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"Yskie"},"content":" return this.name;","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"Yskie"},"content":" public String getTypeIcon() {","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"Yskie"},"content":" return this.type;","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"Yskie"},"content":" } ","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"Yskie"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"Yskie"},"content":" return (this.isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"Yskie"},"content":" } ","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"Yskie"},"content":" ","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"Yskie"},"content":" public void taskDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"Yskie"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"Yskie"},"content":" public void taskUndone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"Yskie"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"Yskie"},"content":" } ","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"Yskie"},"content":" public String toSave() {","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"Yskie"},"content":" return \" | \" + (isDone ? \"1\" : \"0\") + \" | \" + name;","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"Yskie"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"Yskie"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"Yskie"},"content":" return \"[\" + getStatusIcon() + \"] \" + getName();","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"Yskie"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Yskie":46}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Yskie"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Yskie"},"content":"public class TaskList {","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Yskie"},"content":" protected ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Yskie"},"content":" public TaskList(ArrayList\u003cString\u003e data) throws TinyException {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Yskie"},"content":" // Parse the data here.","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Yskie"},"content":" for (int i \u003d 0; i \u003c data.size(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Yskie"},"content":" String[] entry \u003d data.get(i).split(\" \\\\| \");","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Yskie"},"content":" if (entry[0].equals(\"T\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Yskie"},"content":" Todo todo \u003d new Todo(entry[2], entry[1].equals(\"0\") ? false : true);","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Yskie"},"content":" tasks.add(todo);","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Yskie"},"content":" } else if (entry[0].equals(\"D\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Yskie"},"content":" Deadline deadline \u003d new Deadline(entry[2], entry[1].equals(\"0\") ? false : true, entry[3]);","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Yskie"},"content":" tasks.add(deadline);","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Yskie"},"content":" } else if (entry[0].equals(\"E\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Yskie"},"content":" Event event \u003d new Event(entry[2], entry[1].equals(\"0\") ? false : true, entry[3], entry[4]);","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Yskie"},"content":" tasks.add(event);","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Yskie"},"content":" ","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Yskie"},"content":" public void add(Task task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Yskie"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Yskie"},"content":" public void delete(Integer ind) {","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Yskie"},"content":" tasks.remove(tasks.get(ind));","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Yskie"},"content":" } ","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Yskie"},"content":" public Task get(Integer ind) {","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Yskie"},"content":" return tasks.get(ind);","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Yskie"},"content":" public String list() {","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Yskie"},"content":" if (tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"Yskie"},"content":" return \"You don\u0027t have any tasks!\";","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"Yskie"},"content":" String output \u003d \"\";","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"Yskie"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"Yskie"},"content":" output +\u003d (i + 1) + \".\" + tasks.get(i);","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"Yskie"},"content":" output +\u003d \"\\n \";","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"Yskie"},"content":" return output;","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"Yskie"},"content":" public Integer size() {","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"Yskie"},"content":" return tasks.size();","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"Yskie"},"content":" public ArrayList\u003cString\u003e toSave() {","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"Yskie"},"content":" ArrayList\u003cString\u003e tasksToSave \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"Yskie"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"Yskie"},"content":" tasksToSave.add(tasks.get(i).toSave());","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"Yskie"},"content":" return tasksToSave;","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"Yskie"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Yskie":60}},{"path":"src/main/java/Tiny.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Yskie"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Yskie"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Yskie"},"content":"import java.io.InputStreamReader;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Yskie"},"content":"public class Tiny {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Yskie"},"content":" private Storage storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Yskie"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Yskie"},"content":" private Ui ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Yskie"},"content":" private Parser parser \u003d new Parser();","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Yskie"},"content":" public Tiny(String filePath) {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Yskie"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Yskie"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Yskie"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"Yskie"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Yskie"},"content":" } catch (TinyException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Yskie"},"content":" ui.showLoadingError();","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"Yskie"},"content":" public void run() throws IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Yskie"},"content":" ui.start();","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Yskie"},"content":" BufferedReader br \u003d new BufferedReader(new InputStreamReader(System.in));","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Yskie"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Yskie"},"content":" while (!isExit) {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Yskie"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"Yskie"},"content":" String input \u003d br.readLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Yskie"},"content":" printContent(parser.parse(input, tasks));","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Yskie"},"content":" storage.save(tasks.toSave());","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Yskie"},"content":" isExit \u003d parser.isExit();","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Yskie"},"content":" } catch (TinyException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"Yskie"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"Yskie"},"content":" public static void main(String[] args) throws IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"Yskie"},"content":" new Tiny(\"../../../data/tasks.txt\").run();","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"Yskie"},"content":" // Printing Methods","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"Yskie"},"content":" public static void tabPrint(String input) {","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"Yskie"},"content":" System.out.println(\" \" + input);","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"Yskie"},"content":" public static void printLine() {","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"Yskie"},"content":" tabPrint(\"____________________________________________________________\\n\");","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"Yskie"},"content":" public static void printContent(String input) {","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"Yskie"},"content":" printLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"Yskie"},"content":" tabPrint(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"Yskie"},"content":" printLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"Yskie"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Yskie":56}},{"path":"src/main/java/TinyException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Yskie"},"content":"public class TinyException extends Exception {","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Yskie"},"content":" public TinyException(String message) {","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Yskie"},"content":" super(message);","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Yskie"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Yskie":5}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Yskie"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Yskie"},"content":" public Todo(String name) {","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Yskie"},"content":" super(name);","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Yskie"},"content":" public Todo(String name, boolean isDone) {","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Yskie"},"content":" super(name, isDone);","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Yskie"},"content":" } ","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Yskie"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Yskie"},"content":" public String toSave() {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Yskie"},"content":" return \"T\" + super.toSave();","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"Yskie"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"Yskie"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"Yskie"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"Yskie"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Yskie":20}},{"path":"src/main/java/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Yskie"},"content":"public class Ui {","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Yskie"},"content":" public void start() {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Yskie"},"content":" System.out.println(\" ____________________________________________________________\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Yskie"},"content":" System.out.println(\" Hello! I\u0027m Tiny!\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Yskie"},"content":" \" What can I do for you?\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Yskie"},"content":" System.out.println(\" ____________________________________________________________\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Yskie"},"content":" public void showLoadingError() {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Yskie"},"content":" System.out.println(\"Error loading the data!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Yskie"},"content":" public void showError(String message) {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Yskie"},"content":" System.out.println(message);","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Yskie"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Yskie":19}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Yskie"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Yskie"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Yskie"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Yskie"},"content":"bye","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Yskie":4}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"Yskie"},"content":"java -classpath ../bin Tiny \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Yskie":1,"-":37}}] +[{"path":"data/tasks.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Yskie"},"content":"E | 1 | 19 | 1 | gf","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Yskie":1}},{"path":"src/main/java/tiny/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Yskie"},"content":"package tiny;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Yskie"},"content":"import tiny.exceptions.TinyException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Yskie"},"content":"import tiny.tasks.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Yskie"},"content":"import tiny.tasks.Event;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Yskie"},"content":"import tiny.tasks.Todo;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Yskie"},"content":"public class Parser {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Yskie"},"content":" protected boolean terminate \u003d false;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Yskie"},"content":" protected String input;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Yskie"},"content":" protected TaskList taskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Yskie"},"content":" public String parse(String input, TaskList taskList) throws TinyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Yskie"},"content":" this.input \u003d input;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Yskie"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Yskie"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Yskie"},"content":" if (input.equals(\"list\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Yskie"},"content":" return taskList.list();","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Yskie"},"content":" } else if (checkCmd(input, \"mark\", 4)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Yskie"},"content":" return mark();","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Yskie"},"content":" } else if (checkCmd(input, \"unmark\", 6)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Yskie"},"content":" return unmark();","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Yskie"},"content":" } else if (checkCmd(input, \"todo\", 4)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Yskie"},"content":" return todo();","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Yskie"},"content":" } else if (checkCmd(input, \"deadline\", 8)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Yskie"},"content":" return deadline();","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Yskie"},"content":" } else if (checkCmd(input, \"event\", 5)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Yskie"},"content":" return event();","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Yskie"},"content":" } else if (checkCmd(input, \"delete\", 6)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Yskie"},"content":" return delete(); ","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Yskie"},"content":" } else if (input.equals(\"bye\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"Yskie"},"content":" terminate \u003d true;","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Yskie"},"content":" return bye();","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Yskie"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Yskie"},"content":" return cmdUnknown();","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"Yskie"},"content":" } catch (TinyException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"Yskie"},"content":" throw e;","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"Yskie"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"Yskie"},"content":" return terminate;","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"Yskie"},"content":" public String mark() throws TinyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"Yskie"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"Yskie"},"content":" String[] s \u003d input.split(\" \");","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"Yskie"},"content":" if (s.length !\u003d 2 || !s[0].equals(\"mark\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"Yskie"},"content":" return \"OOPS! You need to type \\\"mark \u003cnumber\u003e\\\" to change the status to done!\";","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"Yskie"},"content":" int ind \u003d Integer.parseInt(s[1]);","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"Yskie"},"content":" taskList.get(ind - 1).taskDone();","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"Yskie"},"content":" return \"Nice! I\u0027ve marked this task as done:\\n \" + taskList.get(ind - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"Yskie"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"Yskie"},"content":" return \"OOPS! You need to type \\\"mark \u003cnumber\u003e\\\" to change the status to done!\";","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"Yskie"},"content":" } catch (NullPointerException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"Yskie"},"content":" return \"OOPS! Please type a valid number! Type \\\"list\\\" to check the lists of tasks.\";","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"Yskie"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"Yskie"},"content":" throw new TinyException(\"Something went wrong...\");","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"Yskie"},"content":" public String unmark() throws TinyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"Yskie"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"Yskie"},"content":" String[] s \u003d input.split(\" \");","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"Yskie"},"content":" if (s.length !\u003d 2 || !s[0].equals(\"unmark\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"Yskie"},"content":" return \"OOPS! You need to type \\\"unmark \u003cnumber\u003e\\\" to change the status not done!\";","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"Yskie"},"content":" int ind \u003d Integer.parseInt(s[1]);","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"Yskie"},"content":" taskList.get(ind - 1).taskUndone();","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"Yskie"},"content":" return \"OK, I\u0027ve marked this task as not done yet:\\n \" + taskList.get(ind - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"Yskie"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"Yskie"},"content":" return \"OOPS! You need to type \\\"unmark \u003cnumber\u003e\\\" to change the status to not done!\";","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"Yskie"},"content":" } catch (NullPointerException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"Yskie"},"content":" return \"OOPS! Please type a valid number! Type \\\"list\\\" to check the lists of tasks.\";","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"Yskie"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"Yskie"},"content":" throw new TinyException(\"Something went wrong...\");","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"Yskie"},"content":" public String todo() throws TinyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"Yskie"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"Yskie"},"content":" String name \u003d \"\";","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"Yskie"},"content":" String[] st \u003d input.split(\"\");","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"Yskie"},"content":" String[] s \u003d input.split(\" \");","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"Yskie"},"content":" if (!s[0].equals(\"todo\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"Yskie"},"content":" return \"OOPS! You need to type \\\"todo \u003cdescription\u003e\\\" to create a new todo!\";","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"Yskie"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"Yskie"},"content":" for (int i \u003d 5; i \u003c st.length; i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"Yskie"},"content":" name +\u003d st[i];","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"Yskie"},"content":" if (name \u003d\u003d \"\") {","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"Yskie"},"content":" return \"OOPS! The description of a todo cannot be empty.\";","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"Yskie"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"Yskie"},"content":" taskList.add(new Todo(name));","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"Yskie"},"content":" return \"Got it. I\u0027ve added this task:\\n \" + taskList.get(taskList.size() - 1)","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"Yskie"},"content":" + \"\\n Now you have \" + taskList.size() + \" task(s) in the list.\";","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"Yskie"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"Yskie"},"content":" return \"OOPS! You need to type \\\"todo \u003cdescription\u003e\\\" to create a new todo!\";","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"Yskie"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"Yskie"},"content":" throw new TinyException(\"Something went wrong...\");","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"Yskie"},"content":" public String deadline() throws TinyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"Yskie"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"Yskie"},"content":" String name \u003d \"\";","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"Yskie"},"content":" String[] st \u003d input.split(\"/by \");","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"Yskie"},"content":" String[] s \u003d input.split(\" \");","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"Yskie"},"content":" if (!s[0].equals(\"deadline\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":116,"author":{"gitId":"Yskie"},"content":" return \"OOPS! You need to type \\\"deadline \u003cdescription\u003e /by \u003cyyyy-mm-dd\u003e \u003ctime\u003e\\\" to create a new deadline!\";","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"Yskie"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":118,"author":{"gitId":"Yskie"},"content":" name \u003d st[0].substring(9);","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"Yskie"},"content":" taskList.add(new Deadline(name.trim(), st[1]));","lastModifiedDate":"2024-01-29"},{"lineNumber":120,"author":{"gitId":"Yskie"},"content":" // printAdd(tasks.get(tasks.size() - 1).toString(), tasks.size());","lastModifiedDate":"2024-01-29"},{"lineNumber":121,"author":{"gitId":"Yskie"},"content":" return \"Got it. I\u0027ve added this task:\\n\" + \" \" + taskList.get(taskList.size() - 1)","lastModifiedDate":"2024-01-29"},{"lineNumber":122,"author":{"gitId":"Yskie"},"content":" + \"\\n Now you have \" + taskList.size() + \" task(s) in the list.\";","lastModifiedDate":"2024-01-29"},{"lineNumber":123,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":124,"author":{"gitId":"Yskie"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":125,"author":{"gitId":"Yskie"},"content":" return \"OOPS! You need to type \\\"deadline \u003cdescription\u003e /by \u003cyyyy-mm-dd\u003e \u003ctime\u003e\\\" to create a new deadline!\";","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"Yskie"},"content":" } catch (TinyException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":127,"author":{"gitId":"Yskie"},"content":" throw e;","lastModifiedDate":"2024-01-30"},{"lineNumber":128,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":129,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":130,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":131,"author":{"gitId":"Yskie"},"content":" public String event() throws TinyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":132,"author":{"gitId":"Yskie"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":133,"author":{"gitId":"Yskie"},"content":" String name \u003d \"\";","lastModifiedDate":"2024-01-29"},{"lineNumber":134,"author":{"gitId":"Yskie"},"content":" String[] s \u003d input.split(\" \");","lastModifiedDate":"2024-01-29"},{"lineNumber":135,"author":{"gitId":"Yskie"},"content":" if (!s[0].equals(\"event\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":136,"author":{"gitId":"Yskie"},"content":" System.out.println(\"YES\");","lastModifiedDate":"2024-01-29"},{"lineNumber":137,"author":{"gitId":"Yskie"},"content":" return \"OOPS! You need to type \\\"event \u003cdescription\u003e /from \u003cstart date\u003e /to \u003cend date\u003e\\\" to create a new deadline!\";","lastModifiedDate":"2024-01-29"},{"lineNumber":138,"author":{"gitId":"Yskie"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":139,"author":{"gitId":"Yskie"},"content":" String[] from \u003d input.split(\"/from \");","lastModifiedDate":"2024-01-29"},{"lineNumber":140,"author":{"gitId":"Yskie"},"content":" String[] fromTo \u003d from[1].split(\"/to \");","lastModifiedDate":"2024-01-29"},{"lineNumber":141,"author":{"gitId":"Yskie"},"content":" name \u003d from[0].substring(5);","lastModifiedDate":"2024-01-29"},{"lineNumber":142,"author":{"gitId":"Yskie"},"content":" taskList.add(new Event(name.trim(), fromTo[0].trim(), fromTo[1].trim()));","lastModifiedDate":"2024-01-29"},{"lineNumber":143,"author":{"gitId":"Yskie"},"content":" return \"Got it. I\u0027ve added this task:\\n\" + \" \" + taskList.get(taskList.size() - 1)","lastModifiedDate":"2024-01-29"},{"lineNumber":144,"author":{"gitId":"Yskie"},"content":" + \"\\n Now you have \" + taskList.size() + \" task(s) in the list.\";","lastModifiedDate":"2024-01-29"},{"lineNumber":145,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":146,"author":{"gitId":"Yskie"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":147,"author":{"gitId":"Yskie"},"content":" return \"OOPS! You need to type \\\"event \u003cdescription\u003e /from \u003cstart date\u003e /to \u003cend date\u003e\\\" to create a new deadline!\";","lastModifiedDate":"2024-01-29"},{"lineNumber":148,"author":{"gitId":"Yskie"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":149,"author":{"gitId":"Yskie"},"content":" throw new TinyException(\"Something went wrong...\");","lastModifiedDate":"2024-01-29"},{"lineNumber":150,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":151,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":152,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":153,"author":{"gitId":"Yskie"},"content":" public String delete() throws TinyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":154,"author":{"gitId":"Yskie"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":155,"author":{"gitId":"Yskie"},"content":" String[] s \u003d input.split(\" \");","lastModifiedDate":"2024-01-29"},{"lineNumber":156,"author":{"gitId":"Yskie"},"content":" if (s.length !\u003d 2 || !s[0].equals(\"delete\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":157,"author":{"gitId":"Yskie"},"content":" return \"OOPS! You need to type \\\"delete \u003cnumber\u003e\\\" to delete the task!\";","lastModifiedDate":"2024-01-29"},{"lineNumber":158,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":159,"author":{"gitId":"Yskie"},"content":" int ind \u003d Integer.parseInt(s[1]); ","lastModifiedDate":"2024-01-29"},{"lineNumber":160,"author":{"gitId":"Yskie"},"content":" String output \u003d \"Noted. I\u0027ve removed this task:\" + ","lastModifiedDate":"2024-01-29"},{"lineNumber":161,"author":{"gitId":"Yskie"},"content":" \"\\n \" + taskList.get(ind - 1).toString() + ","lastModifiedDate":"2024-01-29"},{"lineNumber":162,"author":{"gitId":"Yskie"},"content":" \"\\n Now you have \" + (taskList.size() - 1) + \" task(s) in the list.\";","lastModifiedDate":"2024-01-29"},{"lineNumber":163,"author":{"gitId":"Yskie"},"content":" taskList.delete(ind - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":164,"author":{"gitId":"Yskie"},"content":" return output;","lastModifiedDate":"2024-01-29"},{"lineNumber":165,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":166,"author":{"gitId":"Yskie"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":167,"author":{"gitId":"Yskie"},"content":" return \"OOPS! You need to type \\\"delete \u003cnumber\u003e\\\" to delete the task!\";","lastModifiedDate":"2024-01-29"},{"lineNumber":168,"author":{"gitId":"Yskie"},"content":" } catch (NullPointerException | IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":169,"author":{"gitId":"Yskie"},"content":" return ","lastModifiedDate":"2024-01-29"},{"lineNumber":170,"author":{"gitId":"Yskie"},"content":" \"OOPS! Please type a valid number! Type \\\"list\\\" to check the lists of tasks.\";","lastModifiedDate":"2024-01-29"},{"lineNumber":171,"author":{"gitId":"Yskie"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":172,"author":{"gitId":"Yskie"},"content":" throw new TinyException(\"Something went wrong...\");","lastModifiedDate":"2024-01-29"},{"lineNumber":173,"author":{"gitId":"Yskie"},"content":" } ","lastModifiedDate":"2024-01-29"},{"lineNumber":174,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":175,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":176,"author":{"gitId":"Yskie"},"content":" public String bye() {","lastModifiedDate":"2024-01-29"},{"lineNumber":177,"author":{"gitId":"Yskie"},"content":" return \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2024-01-29"},{"lineNumber":178,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":179,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":180,"author":{"gitId":"Yskie"},"content":" public String cmdUnknown() {","lastModifiedDate":"2024-01-29"},{"lineNumber":181,"author":{"gitId":"Yskie"},"content":" return \"I\u0027m sorry, but I don\u0027t know what that means :-(\";","lastModifiedDate":"2024-01-29"},{"lineNumber":182,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":183,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":184,"author":{"gitId":"Yskie"},"content":" public static boolean checkCmd(String input, String name, int len) {","lastModifiedDate":"2024-01-29"},{"lineNumber":185,"author":{"gitId":"Yskie"},"content":" return input.length() \u003e\u003d len \u0026\u0026 input.substring(0, len).equals(name);","lastModifiedDate":"2024-01-29"},{"lineNumber":186,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":187,"author":{"gitId":"Yskie"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Yskie":187}},{"path":"src/main/java/tiny/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Yskie"},"content":"package tiny;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Yskie"},"content":"import tiny.exceptions.TinyException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Yskie"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Yskie"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Yskie"},"content":"import java.io.File;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Yskie"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Yskie"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Yskie"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Yskie"},"content":"public class Storage {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Yskie"},"content":" protected String filePath;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Yskie"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Yskie"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Yskie"},"content":" // Returns a string of message to be parsed.","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Yskie"},"content":" public ArrayList\u003cString\u003e load() throws TinyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Yskie"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Yskie"},"content":" //Creating the folder if it does not exists","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Yskie"},"content":" if (!new File(\"../../../data\").exists()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Yskie"},"content":" new File(\"../../../data\").mkdirs(); ","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Yskie"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Yskie"},"content":" Scanner sc \u003d new Scanner(file);","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Yskie"},"content":" ArrayList\u003cString\u003e dataFromFile \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Yskie"},"content":" while (sc.hasNextLine()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Yskie"},"content":" String data \u003d sc.nextLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Yskie"},"content":" dataFromFile.add(data);","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"Yskie"},"content":" sc.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Yskie"},"content":" return dataFromFile;","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Yskie"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Yskie"},"content":" return new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"Yskie"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"Yskie"},"content":" throw new TinyException(\"\");","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"Yskie"},"content":" public void save(ArrayList\u003cString\u003e tasksToSave) {","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"Yskie"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"Yskie"},"content":" new FileWriter(filePath).close();","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"Yskie"},"content":" FileWriter myWriter \u003d new FileWriter(filePath);","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"Yskie"},"content":" for (int i \u003d 0; i \u003c tasksToSave.size(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"Yskie"},"content":" myWriter.write(tasksToSave.get(i) + \"\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"Yskie"},"content":" myWriter.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"Yskie"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"Yskie"},"content":" System.out.println(\"An error occurred when saving.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"Yskie"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Yskie":55}},{"path":"src/main/java/tiny/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Yskie"},"content":"package tiny;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Yskie"},"content":"import tiny.exceptions.TinyException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Yskie"},"content":"import tiny.tasks.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Yskie"},"content":"import tiny.tasks.Event;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Yskie"},"content":"import tiny.tasks.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Yskie"},"content":"import tiny.tasks.Todo;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Yskie"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Yskie"},"content":"public class TaskList {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Yskie"},"content":" protected ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Yskie"},"content":" public TaskList(ArrayList\u003cString\u003e data) throws TinyException {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Yskie"},"content":" // Parse the data here.","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Yskie"},"content":" for (int i \u003d 0; i \u003c data.size(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Yskie"},"content":" String[] entry \u003d data.get(i).split(\" \\\\| \");","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Yskie"},"content":" if (entry[0].equals(\"T\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Yskie"},"content":" Todo todo \u003d new Todo(entry[2], entry[1].equals(\"0\") ? false : true);","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Yskie"},"content":" tasks.add(todo);","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Yskie"},"content":" } else if (entry[0].equals(\"D\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Yskie"},"content":" Deadline deadline \u003d new Deadline(entry[2], entry[1].equals(\"0\") ? false : true, entry[3]);","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Yskie"},"content":" tasks.add(deadline);","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Yskie"},"content":" } else if (entry[0].equals(\"E\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Yskie"},"content":" Event event \u003d new Event(entry[2], entry[1].equals(\"0\") ? false : true, entry[3], entry[4]);","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Yskie"},"content":" tasks.add(event);","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Yskie"},"content":" ","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Yskie"},"content":" public void add(Task task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"Yskie"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Yskie"},"content":" public void delete(Integer ind) {","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"Yskie"},"content":" tasks.remove(tasks.get(ind));","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"Yskie"},"content":" } ","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"Yskie"},"content":" public Task get(Integer ind) {","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"Yskie"},"content":" return tasks.get(ind);","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"Yskie"},"content":" public String list() {","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"Yskie"},"content":" if (tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"Yskie"},"content":" return \"You don\u0027t have any tasks!\";","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"Yskie"},"content":" String output \u003d \"\";","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"Yskie"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"Yskie"},"content":" output +\u003d (i + 1) + \".\" + tasks.get(i);","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"Yskie"},"content":" output +\u003d \"\\n \";","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"Yskie"},"content":" return output;","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"Yskie"},"content":" public Integer size() {","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"Yskie"},"content":" return tasks.size();","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"Yskie"},"content":" public ArrayList\u003cString\u003e toSave() {","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"Yskie"},"content":" ArrayList\u003cString\u003e tasksToSave \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"Yskie"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"Yskie"},"content":" tasksToSave.add(tasks.get(i).toSave());","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"Yskie"},"content":" return tasksToSave;","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"Yskie"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Yskie":69}},{"path":"src/main/java/tiny/Tiny.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Yskie"},"content":"package tiny;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Yskie"},"content":"import tiny.exceptions.TinyException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Yskie"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Yskie"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Yskie"},"content":"import java.io.InputStreamReader;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Yskie"},"content":"public class Tiny {","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Yskie"},"content":" private Storage storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Yskie"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Yskie"},"content":" private Ui ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Yskie"},"content":" private Parser parser \u003d new Parser();","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Yskie"},"content":" public Tiny(String filePath) {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Yskie"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Yskie"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Yskie"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"Yskie"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Yskie"},"content":" } catch (TinyException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Yskie"},"content":" ui.showLoadingError();","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"Yskie"},"content":" public void run() throws IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Yskie"},"content":" ui.start();","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Yskie"},"content":" BufferedReader br \u003d new BufferedReader(new InputStreamReader(System.in));","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Yskie"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Yskie"},"content":" while (!isExit) {","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Yskie"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"Yskie"},"content":" String input \u003d br.readLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"Yskie"},"content":" printContent(parser.parse(input, tasks));","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Yskie"},"content":" storage.save(tasks.toSave());","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Yskie"},"content":" isExit \u003d parser.isExit();","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Yskie"},"content":" } catch (TinyException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"Yskie"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"Yskie"},"content":" public static void main(String[] args) throws IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"Yskie"},"content":" new Tiny(\"../../../data/tasks.txt\").run();","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"Yskie"},"content":" // Printing Methods","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"Yskie"},"content":" public static void tabPrint(String input) {","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"Yskie"},"content":" System.out.println(\" \" + input);","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"Yskie"},"content":" public static void printLine() {","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"Yskie"},"content":" tabPrint(\"____________________________________________________________\\n\");","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"Yskie"},"content":" public static void printContent(String input) {","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"Yskie"},"content":" printLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"Yskie"},"content":" tabPrint(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"Yskie"},"content":" printLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"Yskie"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Yskie":60}},{"path":"src/main/java/tiny/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Yskie"},"content":"package tiny;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Yskie"},"content":"public class Ui {","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Yskie"},"content":" public void start() {","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Yskie"},"content":" System.out.println(\" ____________________________________________________________\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Yskie"},"content":" System.out.println(\" Hello! I\u0027m Tiny!\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Yskie"},"content":" \" What can I do for you?\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Yskie"},"content":" System.out.println(\" ____________________________________________________________\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Yskie"},"content":" public void showLoadingError() {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Yskie"},"content":" System.out.println(\"Error loading the data!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Yskie"},"content":" public void showError(String message) {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Yskie"},"content":" System.out.println(message);","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Yskie"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Yskie":21}},{"path":"src/main/java/tiny/exceptions/TinyException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Yskie"},"content":"package tiny.exceptions;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Yskie"},"content":"public class TinyException extends Exception {","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Yskie"},"content":" public TinyException(String message) {","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Yskie"},"content":" super(message);","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Yskie"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Yskie":7}},{"path":"src/main/java/tiny/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Yskie"},"content":"package tiny.tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Yskie"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Yskie"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Yskie"},"content":"import tiny.exceptions.TinyException;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Yskie"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"Yskie"},"content":" protected LocalDateTime endDatetime;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"Yskie"},"content":" public Deadline(String name, String endDatetime) throws TinyException {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Yskie"},"content":" super(name);","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"Yskie"},"content":" this.endDatetime \u003d datetimeParser(endDatetime);","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"Yskie"},"content":" public Deadline(String name, boolean isDone, String endDatetime) throws TinyException {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Yskie"},"content":" super(name, isDone);","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Yskie"},"content":" this.endDatetime \u003d datetimeParser(endDatetime);","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Yskie"},"content":" public LocalDateTime datetimeParser(String date) throws TinyException {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Yskie"},"content":" String[] dateTimeSplit \u003d date.split(\" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Yskie"},"content":" int year \u003d 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Yskie"},"content":" int month \u003d 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Yskie"},"content":" int day \u003d 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Yskie"},"content":" int hour \u003d 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Yskie"},"content":" int minute \u003d 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Yskie"},"content":" String errorMsg \u003d \"Please ensure that you are using the format deadline \u003cdescription\u003e /by yyyy-MM-dd \u003ctime\u003e. eg. deadline assignment /by 2024-01-29 1835\";","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Yskie"},"content":" //Date","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Yskie"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Yskie"},"content":" String[] dateSplit \u003d dateTimeSplit[0].split(\"-\");","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Yskie"},"content":" year \u003d Integer.parseInt(dateSplit[0]);","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Yskie"},"content":" month \u003d Integer.parseInt(dateSplit[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Yskie"},"content":" day \u003d Integer.parseInt(dateSplit[2]);","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Yskie"},"content":" ","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Yskie"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Yskie"},"content":" throw new TinyException(errorMsg);","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Yskie"},"content":" //Time","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Yskie"},"content":" if (dateTimeSplit[1].length() \u003d\u003d 4) {","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"Yskie"},"content":" try { ","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"Yskie"},"content":" int time \u003d Integer.parseInt(dateTimeSplit[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"Yskie"},"content":" if (time \u003e\u003d 2400 || time \u003c 0) {","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"Yskie"},"content":" throw new TinyException(\"Please choose a time from 0000 to 2359!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"Yskie"},"content":" String[] hourMinuteSplit \u003d dateTimeSplit[1].split(\"\");","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"Yskie"},"content":" hour \u003d Integer.parseInt(hourMinuteSplit[0] + hourMinuteSplit[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"Yskie"},"content":" minute \u003d Integer.parseInt(hourMinuteSplit[2] + hourMinuteSplit[3]);","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"Yskie"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"Yskie"},"content":" throw new TinyException(errorMsg);","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"Yskie"},"content":" //Combine","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"Yskie"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"Yskie"},"content":" return LocalDateTime.of(year, month, day, hour, minute);","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"Yskie"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"Yskie"},"content":" throw new TinyException(errorMsg);","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"Yskie"},"content":" public String endDatetimeFormat() {","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"Yskie"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy, HH:mm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"Yskie"},"content":" return endDatetime.format(formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"Yskie"},"content":" public String endDatetimeSaveFormat() {","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"Yskie"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"Yskie"},"content":" return endDatetime.format(formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"Yskie"},"content":" } ","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"Yskie"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"Yskie"},"content":" public String toSave() {","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"Yskie"},"content":" return \"D\" + super.toSave() + \" | \" + endDatetimeSaveFormat();","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"Yskie"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":79,"author":{"gitId":"Yskie"},"content":" return \"[D]\" + super.toString() + \" (by: \" + endDatetimeFormat() + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":82,"author":{"gitId":"Yskie"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Yskie":82}},{"path":"src/main/java/tiny/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Yskie"},"content":"package tiny.tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Yskie"},"content":"import tiny.exceptions.TinyException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Yskie"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Yskie"},"content":"import java.time.LocalTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Yskie"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Yskie"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"Yskie"},"content":" protected LocalDateTime startDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Yskie"},"content":" protected LocalTime endDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"Yskie"},"content":" public Event(String name, String startDateTime, String endDateTime) throws TinyException {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Yskie"},"content":" super(name);","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"Yskie"},"content":" this.startDateTime \u003d startDatetimeParser(startDateTime);","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Yskie"},"content":" this.endDateTime \u003d endDatetimeParser(endDateTime);","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"Yskie"},"content":" public Event(String name, boolean isDone, String startDateTime, String endDateTime) throws TinyException {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Yskie"},"content":" super(name, isDone);","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Yskie"},"content":" this.startDateTime \u003d startDatetimeParser(startDateTime);","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Yskie"},"content":" this.endDateTime \u003d endDatetimeParser(endDateTime);","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Yskie"},"content":" public LocalDateTime startDatetimeParser(String date) throws TinyException {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Yskie"},"content":" String[] dateTimeSplit \u003d date.split(\" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Yskie"},"content":" int year \u003d 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Yskie"},"content":" int month \u003d 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Yskie"},"content":" int day \u003d 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Yskie"},"content":" int hour \u003d 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Yskie"},"content":" int minute \u003d 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Yskie"},"content":" String errorMsg \u003d \"Please ensure that you are using the format event \u003cdescription\u003e /from yyyy-MM-dd \u003ctime\u003e /to \u003cend date\u003e. \"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Yskie"},"content":" + \"eg. event meeting /from 2024-01-29 1835 /to 2035\";","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Yskie"},"content":" // Date","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Yskie"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Yskie"},"content":" String[] dateSplit \u003d dateTimeSplit[0].split(\"-\");","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Yskie"},"content":" year \u003d Integer.parseInt(dateSplit[0]);","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Yskie"},"content":" month \u003d Integer.parseInt(dateSplit[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Yskie"},"content":" day \u003d Integer.parseInt(dateSplit[2]);","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Yskie"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"Yskie"},"content":" throw new TinyException(errorMsg);","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"Yskie"},"content":" // Time","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"Yskie"},"content":" if (dateTimeSplit[1].length() \u003d\u003d 4) {","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"Yskie"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"Yskie"},"content":" int time \u003d Integer.parseInt(dateTimeSplit[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"Yskie"},"content":" if (time \u003e\u003d 2400 || time \u003c 0) {","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"Yskie"},"content":" throw new TinyException(\"Please choose a time from 0000 to 2359!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"Yskie"},"content":" String[] hourMinuteSplit \u003d dateTimeSplit[1].split(\"\");","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"Yskie"},"content":" hour \u003d Integer.parseInt(hourMinuteSplit[0] + hourMinuteSplit[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"Yskie"},"content":" minute \u003d Integer.parseInt(hourMinuteSplit[2] + hourMinuteSplit[3]);","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"Yskie"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"Yskie"},"content":" throw new TinyException(errorMsg);","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"Yskie"},"content":" // Combine","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"Yskie"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"Yskie"},"content":" return LocalDateTime.of(year, month, day, hour, minute);","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"Yskie"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"Yskie"},"content":" throw new TinyException(errorMsg);","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"Yskie"},"content":" public LocalTime endDatetimeParser(String timeStr) throws TinyException { ","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"Yskie"},"content":" String errorMsg \u003d \"Please ensure that you are using the format event \u003cdescription\u003e /from yyyy-MM-dd \u003ctime\u003e /to \u003cend date\u003e. \"","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"Yskie"},"content":" + \"eg. event meeting /from 2024-01-29 1835 /to 2035\";","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"Yskie"},"content":" int time \u003d Integer.parseInt(timeStr);","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"Yskie"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"Yskie"},"content":" if (time \u003e\u003d 2400 || time \u003c 0) {","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"Yskie"},"content":" throw new TinyException(\"Please choose your end time from 0000 to 2359!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"Yskie"},"content":" String[] hourMinuteSplit \u003d timeStr.split(\"\");","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"Yskie"},"content":" int hour \u003d Integer.parseInt(hourMinuteSplit[0] + hourMinuteSplit[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"Yskie"},"content":" int minute \u003d Integer.parseInt(hourMinuteSplit[2] + hourMinuteSplit[3]);","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"Yskie"},"content":" return LocalTime.of(hour, minute);","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"Yskie"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"Yskie"},"content":" throw new TinyException(errorMsg);","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"Yskie"},"content":" ","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"Yskie"},"content":" public String startDatetimeFormat() {","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"Yskie"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy, HH:mm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"Yskie"},"content":" return startDateTime.format(formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"Yskie"},"content":" public String endDatetimeFormat() {","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"Yskie"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"HH:mm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"Yskie"},"content":" return endDateTime.format(formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"Yskie"},"content":" } ","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"Yskie"},"content":" public String startDatetimeSaveFormat() {","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"Yskie"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"Yskie"},"content":" return startDateTime.format(formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"Yskie"},"content":" } ","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"Yskie"},"content":" public String endDatetimeSaveFormat() {","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"Yskie"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"Yskie"},"content":" return endDateTime.format(formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"Yskie"},"content":" } ","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"Yskie"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"Yskie"},"content":" public String toSave() {","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"Yskie"},"content":" return \"E\" + super.toSave() + \" | \" + startDatetimeSaveFormat() + \" | \" + endDatetimeSaveFormat();","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":112,"author":{"gitId":"Yskie"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":113,"author":{"gitId":"Yskie"},"content":" return \"[E]\" + super.toString() + \" (from: \" + startDatetimeFormat() + \" to: \" + endDatetimeFormat() + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":115,"author":{"gitId":"Yskie"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Yskie":115}},{"path":"src/main/java/tiny/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Yskie"},"content":"package tiny.tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Yskie"},"content":"public class Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Yskie"},"content":" protected String name;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Yskie"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Yskie"},"content":" protected String type \u003d \" \";","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Yskie"},"content":" //add","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"Yskie"},"content":" public Task(String name) {","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Yskie"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Yskie"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Yskie"},"content":" public Task(String name, boolean isDone) {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Yskie"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Yskie"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Yskie"},"content":" } ","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Yskie"},"content":" public String getName() {","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"Yskie"},"content":" return this.name;","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"Yskie"},"content":" public String getTypeIcon() {","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"Yskie"},"content":" return this.type;","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"Yskie"},"content":" } ","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"Yskie"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"Yskie"},"content":" return (this.isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"Yskie"},"content":" } ","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"Yskie"},"content":" ","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"Yskie"},"content":" public void taskDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"Yskie"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"Yskie"},"content":" public void taskUndone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"Yskie"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"Yskie"},"content":" } ","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"Yskie"},"content":" public String toSave() {","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"Yskie"},"content":" return \" | \" + (isDone ? \"1\" : \"0\") + \" | \" + name;","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"Yskie"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"Yskie"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"Yskie"},"content":" return \"[\" + getStatusIcon() + \"] \" + getName();","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"Yskie"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Yskie":48}},{"path":"src/main/java/tiny/tasks/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Yskie"},"content":"package tiny.tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Yskie"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Yskie"},"content":" public Todo(String name) {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Yskie"},"content":" super(name);","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"Yskie"},"content":" public Todo(String name, boolean isDone) {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Yskie"},"content":" super(name, isDone);","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Yskie"},"content":" } ","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Yskie"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Yskie"},"content":" public String toSave() {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Yskie"},"content":" return \"T\" + super.toSave();","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"Yskie"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"Yskie"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"Yskie"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"Yskie"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Yskie":22}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Yskie"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Yskie"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Yskie"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Yskie"},"content":"bye","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Yskie":4}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"Yskie"},"content":"java -classpath ../bin Tiny \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Yskie":1,"-":37}}] diff --git a/Yskie_ip_master/commits.json b/Yskie_ip_master/commits.json index c64cbce5..74efe25c 100644 --- a/Yskie_ip_master/commits.json +++ b/Yskie_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Yskie":[{"date":"2024-01-24","commitResults":[{"hash":"163b293c334a2713f7a0d6e36bff3f30cf082107","isMergeCommit":false,"messageTitle":"Implemented Skeletal Version of Tiny","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":0}}},{"hash":"81ff1a1a1157ca52dd13d53f74ab9527f1c023df","isMergeCommit":false,"messageTitle":"Echo and Bye Function","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":17}}},{"hash":"3126f232d73c7f954b38df4465fed85ad60f0d5d","isMergeCommit":false,"messageTitle":"Implemented Add and List Functions with a Task class.","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":1}}},{"hash":"f887b32cf8c043fec2f4db3add3e207f0d1366c0","isMergeCommit":false,"messageTitle":"Added Mark and Umarked Function with Exception Handling.","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":108,"deletions":22}}}]},{"date":"2024-01-25","commitResults":[{"hash":"da01acab4d43dad899763c6ecd7321a34bb6a11c","isMergeCommit":false,"messageTitle":"Added “Deadline, Event and Todo class and implemented their methods.","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":205,"deletions":53}}},{"hash":"1a6ef84f64caac0d4d2ec2fcad3a4e92c682b291","isMergeCommit":false,"messageTitle":"Handled Exceptions and Incorrect Inputs.","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":3}}},{"hash":"38cd27c05e2bc86dae4afb9b1eaf98fbbce116c0","isMergeCommit":false,"messageTitle":"Tested using I/O redirection.","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":1,"deletions":1},"sh":{"insertions":2,"deletions":2}}},{"hash":"be10f543020755b6bf8f52634aaf43ea0b287cf4","isMergeCommit":false,"messageTitle":"Implemented Deletion Feature.","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":7}}}]},{"date":"2024-01-29","commitResults":[{"hash":"6ee7268459de06f9647845eac333ddfba40b7839","isMergeCommit":false,"messageTitle":"Add Save function and OOP optimisation with the respective class","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":381,"deletions":219}}},{"hash":"cf0cb0752adf2e5f9049485bd0351e8f1a9264f1","isMergeCommit":false,"messageTitle":"Bug fix for the data directory is not found","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":7,"deletions":0}}},{"hash":"4fc817847c40d937770a53f4509924abd5ca4738","isMergeCommit":false,"messageTitle":"Updated the varaibles modifier to be protected","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":10}}},{"hash":"b4e6d09b47c3d718f6dbe741a1c1fd5adef0c112","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-01-30","commitResults":[{"hash":"2a851ccb5e255aa33c634fcf1d663da0301a9032","isMergeCommit":false,"messageTitle":"Changed deadline to be stored as LocalDateTime for deadline and event","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":176,"deletions":37}}},{"hash":"155e0fa25e484a472586697c901e1353b314d4be","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4e82947da2615dccc43799fddfd38e57569ddeb7","isMergeCommit":false,"messageTitle":"Refactored code to follow OOP Style","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":10}}}]}]},"authorFileTypeContributionMap":{"Yskie":{"java":627,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":0,"txt":5}},"authorContributionVariance":{"Yskie":35663.418},"authorDisplayNameMap":{"Yskie":"CS2103T-W13-4 YONG..KANG"}} +{"authorDailyContributionsMap":{"Yskie":[{"date":"2024-01-24","commitResults":[{"hash":"163b293c334a2713f7a0d6e36bff3f30cf082107","isMergeCommit":false,"messageTitle":"Implemented Skeletal Version of Tiny","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":0}}},{"hash":"81ff1a1a1157ca52dd13d53f74ab9527f1c023df","isMergeCommit":false,"messageTitle":"Echo and Bye Function","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":17}}},{"hash":"3126f232d73c7f954b38df4465fed85ad60f0d5d","isMergeCommit":false,"messageTitle":"Implemented Add and List Functions with a Task class.","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":1}}},{"hash":"f887b32cf8c043fec2f4db3add3e207f0d1366c0","isMergeCommit":false,"messageTitle":"Added Mark and Umarked Function with Exception Handling.","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":108,"deletions":22}}}]},{"date":"2024-01-25","commitResults":[{"hash":"da01acab4d43dad899763c6ecd7321a34bb6a11c","isMergeCommit":false,"messageTitle":"Added “Deadline, Event and Todo class and implemented their methods.","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":205,"deletions":53}}},{"hash":"1a6ef84f64caac0d4d2ec2fcad3a4e92c682b291","isMergeCommit":false,"messageTitle":"Handled Exceptions and Incorrect Inputs.","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":3}}},{"hash":"38cd27c05e2bc86dae4afb9b1eaf98fbbce116c0","isMergeCommit":false,"messageTitle":"Tested using I/O redirection.","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":1,"deletions":1},"sh":{"insertions":2,"deletions":2}}},{"hash":"be10f543020755b6bf8f52634aaf43ea0b287cf4","isMergeCommit":false,"messageTitle":"Implemented Deletion Feature.","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":7}}}]},{"date":"2024-01-29","commitResults":[{"hash":"6ee7268459de06f9647845eac333ddfba40b7839","isMergeCommit":false,"messageTitle":"Add Save function and OOP optimisation with the respective class","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":381,"deletions":219}}},{"hash":"cf0cb0752adf2e5f9049485bd0351e8f1a9264f1","isMergeCommit":false,"messageTitle":"Bug fix for the data directory is not found","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":7,"deletions":0}}},{"hash":"4fc817847c40d937770a53f4509924abd5ca4738","isMergeCommit":false,"messageTitle":"Updated the varaibles modifier to be protected","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":10}}},{"hash":"b4e6d09b47c3d718f6dbe741a1c1fd5adef0c112","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-01-30","commitResults":[{"hash":"2a851ccb5e255aa33c634fcf1d663da0301a9032","isMergeCommit":false,"messageTitle":"Changed deadline to be stored as LocalDateTime for deadline and event","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":176,"deletions":37}}},{"hash":"155e0fa25e484a472586697c901e1353b314d4be","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4e82947da2615dccc43799fddfd38e57569ddeb7","isMergeCommit":false,"messageTitle":"Refactored code to follow OOP Style","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":10}}},{"hash":"4d9c727a0f14ca38ae21165c81675498e36cd318","isMergeCommit":false,"messageTitle":"Refactor code into a package \u0027tiny\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":1}}},{"hash":"56f501503f6a6f142717b62793b3efee3dfd2ed1","isMergeCommit":false,"messageTitle":"Refactored code to follow Coding Standard","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":8}}},{"hash":"208c2d08e7f1a5d122c1a67ff330343f8b61b506","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Yskie":{"java":666,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":0,"txt":5}},"authorContributionVariance":{"Yskie":37065.855},"authorDisplayNameMap":{"Yskie":"CS2103T-W13-4 YONG..KANG"}} diff --git a/alfaloo_ip_master/authorship.json b/alfaloo_ip_master/authorship.json index 09806b3b..9b3d2a5e 100644 --- a/alfaloo_ip_master/authorship.json +++ b/alfaloo_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":"alfaloo"},"content":" mainClass.set(\"Lulu\")","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"alfaloo"},"content":" archiveBaseName \u003d \"lulu\"","lastModifiedDate":"2024-01-27"},{"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":{"alfaloo":2,"-":40}},{"path":"src/main/java/Lulu.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"alfaloo"},"content":"import command.Command;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"alfaloo"},"content":"import parser.Parser;","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"alfaloo"},"content":"import storage.Storage;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"alfaloo"},"content":"import tasklist.TaskList;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"alfaloo"},"content":"import ui.UI;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"alfaloo"},"content":"import exceptions.LuluException;","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"alfaloo"},"content":"import exceptions.InvalidCommandException;","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"alfaloo"},"content":"import exceptions.InvalidDateException;","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"alfaloo"},"content":"import exceptions.InvalidSlashParameterException;","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"alfaloo"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"alfaloo"},"content":" * The main class for Lulu, a simple chatbot application.","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"alfaloo"},"content":" * Lulu interacts with the user through a command-line interface (CLI)","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"alfaloo"},"content":" * to perform tasks such as adding, listing, and deleting tasks.","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"alfaloo"},"content":"public class Lulu {","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"alfaloo"},"content":" /** The storage component for managing data persistence. */","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"alfaloo"},"content":" private Storage storage;","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"alfaloo"},"content":" /** The task list for storing and managing tasks. */","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"alfaloo"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"alfaloo"},"content":" /** The parser for interpreting user input and generating commands. */","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"alfaloo"},"content":" private Parser parser;","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"alfaloo"},"content":" * Constructs a new instance of Lulu with default configurations.","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"alfaloo"},"content":" * Initializes the storage, task list, and parser.","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"alfaloo"},"content":" public Lulu() {","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"alfaloo"},"content":" storage \u003d new Storage(\"src/main/java/data/lulu.txt\");","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"alfaloo"},"content":" tasks \u003d new TaskList(storage.retrieveLines());","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"alfaloo"},"content":" parser \u003d new Parser();","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"alfaloo"},"content":" * Initiates the Lulu application.","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"alfaloo"},"content":" * Prints a welcome message to the user.","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"alfaloo"},"content":" public void start() {","lastModifiedDate":"2024-01-22"},{"lineNumber":43,"author":{"gitId":"alfaloo"},"content":" UI.print(\"Hello! I\u0027m Lulu \\n\\tWhat can I do for you?\");","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":45,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":46,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"alfaloo"},"content":" * Exits the Lulu application.","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"alfaloo"},"content":" * Prints a goodbye message to the user.","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"alfaloo"},"content":" public void exit() {","lastModifiedDate":"2024-01-22"},{"lineNumber":51,"author":{"gitId":"alfaloo"},"content":" UI.print(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":53,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":54,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"alfaloo"},"content":" * Listens for user input and responds accordingly until the user exits.","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"alfaloo"},"content":" * Handles various user commands and exceptions during interaction.","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"alfaloo"},"content":" public void respond() {","lastModifiedDate":"2024-01-22"},{"lineNumber":59,"author":{"gitId":"alfaloo"},"content":" while (true) {","lastModifiedDate":"2024-01-22"},{"lineNumber":60,"author":{"gitId":"alfaloo"},"content":" String input \u003d UI.nextLine();","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"alfaloo"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":63,"author":{"gitId":"alfaloo"},"content":" if (input.toLowerCase().equals(\"bye\")) {","lastModifiedDate":"2024-01-22"},{"lineNumber":64,"author":{"gitId":"alfaloo"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":65,"author":{"gitId":"alfaloo"},"content":" } else if (input.toLowerCase().equals(\"list\")) {","lastModifiedDate":"2024-01-22"},{"lineNumber":66,"author":{"gitId":"alfaloo"},"content":" UI.printTasks(this.tasks);","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"alfaloo"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":68,"author":{"gitId":"alfaloo"},"content":" Command command \u003d parser.parse(input);","lastModifiedDate":"2024-01-27"},{"lineNumber":69,"author":{"gitId":"alfaloo"},"content":" command.execute(this.tasks, this.storage);","lastModifiedDate":"2024-01-27"},{"lineNumber":70,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":71,"author":{"gitId":"alfaloo"},"content":" } catch (InvalidCommandException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":72,"author":{"gitId":"alfaloo"},"content":" UI.print(\"Sorry, I don\u0027t think I quite understood what you meant...\");","lastModifiedDate":"2024-01-27"},{"lineNumber":73,"author":{"gitId":"alfaloo"},"content":" } catch (InvalidDateException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":74,"author":{"gitId":"alfaloo"},"content":" UI.print(\"Please ensure that you are inputting valid start and end dates.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":75,"author":{"gitId":"alfaloo"},"content":" } catch (InvalidSlashParameterException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":76,"author":{"gitId":"alfaloo"},"content":" UI.print(\"Please ensure that you are inputting valid date parameters.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":77,"author":{"gitId":"alfaloo"},"content":" } catch (LuluException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":78,"author":{"gitId":"alfaloo"},"content":" UI.print(e.getMessage());","lastModifiedDate":"2024-01-27"},{"lineNumber":79,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":80,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":81,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":82,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":83,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":84,"author":{"gitId":"alfaloo"},"content":" * The main method to run the Lulu chatbot application.","lastModifiedDate":"2024-01-27"},{"lineNumber":85,"author":{"gitId":"alfaloo"},"content":" * Creates an instance of Lulu, starts the application, and handles exceptions.","lastModifiedDate":"2024-01-27"},{"lineNumber":86,"author":{"gitId":"alfaloo"},"content":" * Exits the application with a goodbye message.","lastModifiedDate":"2024-01-27"},{"lineNumber":87,"author":{"gitId":"alfaloo"},"content":" * @param args The command-line arguments (not used).","lastModifiedDate":"2024-01-27"},{"lineNumber":88,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":89,"author":{"gitId":"alfaloo"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-22"},{"lineNumber":90,"author":{"gitId":"alfaloo"},"content":" Lulu chatbot \u003d new Lulu();","lastModifiedDate":"2024-01-22"},{"lineNumber":91,"author":{"gitId":"alfaloo"},"content":" chatbot.start();","lastModifiedDate":"2024-01-22"},{"lineNumber":92,"author":{"gitId":"alfaloo"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":93,"author":{"gitId":"alfaloo"},"content":" chatbot.respond();","lastModifiedDate":"2024-01-22"},{"lineNumber":94,"author":{"gitId":"alfaloo"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":95,"author":{"gitId":"alfaloo"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-27"},{"lineNumber":96,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":97,"author":{"gitId":"alfaloo"},"content":" chatbot.exit();","lastModifiedDate":"2024-01-22"},{"lineNumber":98,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":99,"author":{"gitId":"alfaloo"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"alfaloo":99}},{"path":"src/main/java/command/AddCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"alfaloo"},"content":"package command;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"alfaloo"},"content":"import task.Task;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"alfaloo"},"content":"import storage.Storage;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"alfaloo"},"content":"import tasklist.TaskList;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"alfaloo"},"content":"import ui.UI;","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"alfaloo"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"alfaloo"},"content":" * The AddCommand class represents a command to add a new task to the task list.","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"alfaloo"},"content":" * It extends the Command class and implements the execute method to carry out the addition of the task.","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"alfaloo"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"alfaloo"},"content":" * The task to be added.","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"alfaloo"},"content":" private Task task;","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"alfaloo"},"content":" * The string representation of the data to be saved in storage.","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"alfaloo"},"content":" private String saveData;","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"alfaloo"},"content":" * Constructs an AddCommand with the specified task and saveData.","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"alfaloo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"alfaloo"},"content":" * @param task The task to be added.","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"alfaloo"},"content":" * @param saveData The string representation of the data to be saved in storage.","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"alfaloo"},"content":" public AddCommand(Task task, String saveData) {","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"alfaloo"},"content":" this.task \u003d task;","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"alfaloo"},"content":" this.saveData \u003d saveData;","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"alfaloo"},"content":" * Executes the AddCommand, adding the task to the task list, saving data in storage,","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"alfaloo"},"content":" * and printing a confirmation message to the user.","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"alfaloo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"alfaloo"},"content":" * @param tasks The TaskList to which the task is added.","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"alfaloo"},"content":" * @param storage The Storage to save the task data.","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"alfaloo"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"alfaloo"},"content":" public void execute(TaskList tasks, Storage storage) {","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"alfaloo"},"content":" tasks.addTask(this.task);","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"alfaloo"},"content":" storage.writeLine(this.saveData);","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"alfaloo"},"content":" UI.print(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"alfaloo"},"content":" UI.print(\"\\t\" + this.task);","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"alfaloo"},"content":" UI.print(String.format(\"Now you have %d tasks in the list.\", tasks.getSize()));","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"alfaloo"},"content":" * Retrieves the string representation of the data to be saved in storage.","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"alfaloo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"alfaloo"},"content":" * @return The saveData string.","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"alfaloo"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"alfaloo"},"content":" public String getTestData() {","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"alfaloo"},"content":" return saveData;","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"alfaloo"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"alfaloo":60}},{"path":"src/main/java/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"alfaloo"},"content":"package command;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"alfaloo"},"content":"import storage.Storage;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"alfaloo"},"content":"import tasklist.TaskList;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"alfaloo"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"alfaloo"},"content":" * An abstract class representing a command in the task management system.","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"alfaloo"},"content":"public abstract class Command {","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"alfaloo"},"content":" * Enum representing various types of commands.","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"alfaloo"},"content":" public enum Types {","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"alfaloo"},"content":" LIST,","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"alfaloo"},"content":" MARK,","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"alfaloo"},"content":" UNMARK,","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"alfaloo"},"content":" DELETE,","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"alfaloo"},"content":" TODO,","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"alfaloo"},"content":" DEADLINE,","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"alfaloo"},"content":" EVENT,","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"alfaloo"},"content":" QUERY,","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"alfaloo"},"content":" FIND;","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"alfaloo"},"content":" * Executes the command, modifying the task list and storage as needed.","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"alfaloo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"alfaloo"},"content":" * @param tasks The {@code TaskList} to be modified.","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"alfaloo"},"content":" * @param storage The {@code Storage} to be modified.","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"alfaloo"},"content":" public abstract void execute(TaskList tasks, Storage storage);","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"alfaloo"},"content":" * Gets test data associated with the command.","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"alfaloo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"alfaloo"},"content":" * @return A string containing test data for the command.","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"alfaloo"},"content":" public abstract String getTestData();","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"alfaloo"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"alfaloo":40}},{"path":"src/main/java/command/ManageCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"alfaloo"},"content":"package command;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"alfaloo"},"content":"import task.Task;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"alfaloo"},"content":"import storage.Storage;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"alfaloo"},"content":"import tasklist.TaskList;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"alfaloo"},"content":"import ui.UI;","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"alfaloo"},"content":"import exceptions.InvalidStatusUpdateException;","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"alfaloo"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"alfaloo"},"content":" * The ManageCommand class represents a command to manage tasks, such as marking, unmarking, or deleting.","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"alfaloo"},"content":" * It extends the Command class and implements the execute method to perform the specified manage action.","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"alfaloo"},"content":"public class ManageCommand extends Command {","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"alfaloo"},"content":" * The type of manage command (MARK, UNMARK, DELETE).","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"alfaloo"},"content":" private Command.Types type;","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"alfaloo"},"content":" * The index of the task to be managed.","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"alfaloo"},"content":" private int index;","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"alfaloo"},"content":" * Constructs a ManageCommand with the specified command type and index.","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"alfaloo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"alfaloo"},"content":" * @param type The type of manage command (MARK, UNMARK, DELETE).","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"alfaloo"},"content":" * @param index The index of the task to be managed.","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"alfaloo"},"content":" public ManageCommand(Command.Types type, int index) {","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"alfaloo"},"content":" this.type \u003d type;","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"alfaloo"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"alfaloo"},"content":" * Executes the ManageCommand, performing the specified manage action on the given task list and storage.","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"alfaloo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"alfaloo"},"content":" * @param tasks The TaskList on which the manage action is performed.","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"alfaloo"},"content":" * @param storage The Storage where changes are saved.","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"alfaloo"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"alfaloo"},"content":" public void execute(TaskList tasks, Storage storage) {","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"alfaloo"},"content":" switch (this.type) {","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"alfaloo"},"content":" case MARK:","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"alfaloo"},"content":" mark(tasks, storage);","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"alfaloo"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"alfaloo"},"content":" case UNMARK:","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"alfaloo"},"content":" unmark(tasks, storage);","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"alfaloo"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"alfaloo"},"content":" case DELETE:","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"alfaloo"},"content":" delete(tasks, storage);","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"alfaloo"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"alfaloo"},"content":" * Retrieves an empty string as test data associated with ManageCommand.","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"alfaloo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"alfaloo"},"content":" * @return An empty string used for testing.","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"alfaloo"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":64,"author":{"gitId":"alfaloo"},"content":" public String getTestData() {","lastModifiedDate":"2024-01-27"},{"lineNumber":65,"author":{"gitId":"alfaloo"},"content":" return \"\";","lastModifiedDate":"2024-01-27"},{"lineNumber":66,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":68,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":69,"author":{"gitId":"alfaloo"},"content":" * Marks the task at the specified index as done, updating its status in the task list and storage.","lastModifiedDate":"2024-01-27"},{"lineNumber":70,"author":{"gitId":"alfaloo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":71,"author":{"gitId":"alfaloo"},"content":" * @param tasks The TaskList from which the task is marked.","lastModifiedDate":"2024-01-27"},{"lineNumber":72,"author":{"gitId":"alfaloo"},"content":" * @param storage The Storage where changes are saved.","lastModifiedDate":"2024-01-27"},{"lineNumber":73,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":74,"author":{"gitId":"alfaloo"},"content":" public void mark(TaskList tasks, Storage storage) {","lastModifiedDate":"2024-01-27"},{"lineNumber":75,"author":{"gitId":"alfaloo"},"content":" if (index \u003e\u003d tasks.getSize() || index \u003c 0) {","lastModifiedDate":"2024-01-27"},{"lineNumber":76,"author":{"gitId":"alfaloo"},"content":" UI.print(\"Oops! You did not give a valid index.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":77,"author":{"gitId":"alfaloo"},"content":" return;","lastModifiedDate":"2024-01-27"},{"lineNumber":78,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":79,"author":{"gitId":"alfaloo"},"content":" Task task \u003d tasks.getTask(this.index);","lastModifiedDate":"2024-01-27"},{"lineNumber":80,"author":{"gitId":"alfaloo"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":81,"author":{"gitId":"alfaloo"},"content":" task.updateStatus(true);","lastModifiedDate":"2024-01-27"},{"lineNumber":82,"author":{"gitId":"alfaloo"},"content":" UI.print(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-27"},{"lineNumber":83,"author":{"gitId":"alfaloo"},"content":" UI.print(task);","lastModifiedDate":"2024-01-27"},{"lineNumber":84,"author":{"gitId":"alfaloo"},"content":" String line \u003d storage.readLine(index);","lastModifiedDate":"2024-01-27"},{"lineNumber":85,"author":{"gitId":"alfaloo"},"content":" String newLine \u003d line.substring(0, line.length() - 5) + \"true\";","lastModifiedDate":"2024-01-27"},{"lineNumber":86,"author":{"gitId":"alfaloo"},"content":" storage.updateLine(index, newLine);","lastModifiedDate":"2024-01-27"},{"lineNumber":87,"author":{"gitId":"alfaloo"},"content":" storage.updateLine(index, newLine);","lastModifiedDate":"2024-01-27"},{"lineNumber":88,"author":{"gitId":"alfaloo"},"content":" } catch (InvalidStatusUpdateException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":89,"author":{"gitId":"alfaloo"},"content":" UI.print(\"This task was already marked!\");","lastModifiedDate":"2024-01-27"},{"lineNumber":90,"author":{"gitId":"alfaloo"},"content":" UI.print(task);","lastModifiedDate":"2024-01-27"},{"lineNumber":91,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":92,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":93,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":94,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":95,"author":{"gitId":"alfaloo"},"content":" * Unmarks the task at the specified index, updating its status in the task list and storage.","lastModifiedDate":"2024-01-27"},{"lineNumber":96,"author":{"gitId":"alfaloo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":97,"author":{"gitId":"alfaloo"},"content":" * @param tasks The TaskList from which the task is unmarked.","lastModifiedDate":"2024-01-27"},{"lineNumber":98,"author":{"gitId":"alfaloo"},"content":" * @param storage The Storage where changes are saved.","lastModifiedDate":"2024-01-27"},{"lineNumber":99,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":100,"author":{"gitId":"alfaloo"},"content":" public void unmark(TaskList tasks, Storage storage) {","lastModifiedDate":"2024-01-27"},{"lineNumber":101,"author":{"gitId":"alfaloo"},"content":" if (index \u003e\u003d tasks.getSize() || index \u003c 0) {","lastModifiedDate":"2024-01-27"},{"lineNumber":102,"author":{"gitId":"alfaloo"},"content":" UI.print(\"Oops! You did not give a valid index.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":103,"author":{"gitId":"alfaloo"},"content":" return;","lastModifiedDate":"2024-01-27"},{"lineNumber":104,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":105,"author":{"gitId":"alfaloo"},"content":" Task task \u003d tasks.getTask(index);","lastModifiedDate":"2024-01-27"},{"lineNumber":106,"author":{"gitId":"alfaloo"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":107,"author":{"gitId":"alfaloo"},"content":" task.updateStatus(false);","lastModifiedDate":"2024-01-27"},{"lineNumber":108,"author":{"gitId":"alfaloo"},"content":" UI.print(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-27"},{"lineNumber":109,"author":{"gitId":"alfaloo"},"content":" UI.print(task);","lastModifiedDate":"2024-01-27"},{"lineNumber":110,"author":{"gitId":"alfaloo"},"content":" String line \u003d storage.readLine(index);","lastModifiedDate":"2024-01-27"},{"lineNumber":111,"author":{"gitId":"alfaloo"},"content":" String newLine \u003d line.substring(0, line.length() - 4) + \"false\";","lastModifiedDate":"2024-01-27"},{"lineNumber":112,"author":{"gitId":"alfaloo"},"content":" storage.updateLine(index, newLine);","lastModifiedDate":"2024-01-27"},{"lineNumber":113,"author":{"gitId":"alfaloo"},"content":" } catch (InvalidStatusUpdateException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":114,"author":{"gitId":"alfaloo"},"content":" UI.print(\"This task was already unmarked!\");","lastModifiedDate":"2024-01-27"},{"lineNumber":115,"author":{"gitId":"alfaloo"},"content":" UI.print(task);","lastModifiedDate":"2024-01-27"},{"lineNumber":116,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":117,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":118,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":119,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":120,"author":{"gitId":"alfaloo"},"content":" * Deletes the task at the specified index, removing it from the task list and storage.","lastModifiedDate":"2024-01-27"},{"lineNumber":121,"author":{"gitId":"alfaloo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":122,"author":{"gitId":"alfaloo"},"content":" * @param tasks The TaskList from which the task is deleted.","lastModifiedDate":"2024-01-27"},{"lineNumber":123,"author":{"gitId":"alfaloo"},"content":" * @param storage The Storage where changes are saved.","lastModifiedDate":"2024-01-27"},{"lineNumber":124,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":125,"author":{"gitId":"alfaloo"},"content":" public void delete(TaskList tasks, Storage storage) {","lastModifiedDate":"2024-01-27"},{"lineNumber":126,"author":{"gitId":"alfaloo"},"content":" if (index \u003e\u003d tasks.getSize() || index \u003c 0) {","lastModifiedDate":"2024-01-27"},{"lineNumber":127,"author":{"gitId":"alfaloo"},"content":" UI.print(\"Oops! You did not give a valid index.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":128,"author":{"gitId":"alfaloo"},"content":" return;","lastModifiedDate":"2024-01-27"},{"lineNumber":129,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":130,"author":{"gitId":"alfaloo"},"content":" Task removed \u003d tasks.deleteTask(index);","lastModifiedDate":"2024-01-27"},{"lineNumber":131,"author":{"gitId":"alfaloo"},"content":" storage.deleteLine(index);","lastModifiedDate":"2024-01-27"},{"lineNumber":132,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":133,"author":{"gitId":"alfaloo"},"content":" UI.print(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-27"},{"lineNumber":134,"author":{"gitId":"alfaloo"},"content":" UI.print(\"\\t\" + removed);","lastModifiedDate":"2024-01-27"},{"lineNumber":135,"author":{"gitId":"alfaloo"},"content":" UI.print(String.format(\"Now you have %d tasks in the list.\", tasks.getSize()));","lastModifiedDate":"2024-01-27"},{"lineNumber":136,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":137,"author":{"gitId":"alfaloo"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"alfaloo":137}},{"path":"src/main/java/command/QueryCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"alfaloo"},"content":"package command;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"alfaloo"},"content":"import task.Deadline;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"alfaloo"},"content":"import task.Event;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"alfaloo"},"content":"import task.Task;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"alfaloo"},"content":"import storage.Storage;","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"alfaloo"},"content":"import tasklist.TaskList;","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"alfaloo"},"content":"import ui.UI;","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"alfaloo"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"alfaloo"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"alfaloo"},"content":"import java.time.format.FormatStyle;","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"alfaloo"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"alfaloo"},"content":" * The QueryCommand class represents a command to query tasks based on type and date.","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"alfaloo"},"content":" * It extends the Command class and implements the execute method to perform the specified query action.","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"alfaloo"},"content":"public class QueryCommand extends Command {","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"alfaloo"},"content":" * The type of query command.","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"alfaloo"},"content":" private Command.Types commandType;","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"alfaloo"},"content":" * The type of task to be queried (deadline, event).","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"alfaloo"},"content":" private String query;","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"alfaloo"},"content":" * The date used for querying tasks.","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"alfaloo"},"content":" private LocalDate date;","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"alfaloo"},"content":" * Constructs a QueryCommand with the specified command type, query type, and date.","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"alfaloo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"alfaloo"},"content":" * @param commandType The type of query command.","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"alfaloo"},"content":" * @param query The type of task to be queried (deadline, event).","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"alfaloo"},"content":" * @param date The date used for querying tasks.","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"alfaloo"},"content":" public QueryCommand(Command.Types commandType, String query, LocalDate date) {","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"alfaloo"},"content":" this.commandType \u003d commandType;","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"alfaloo"},"content":" this.query \u003d query;","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"alfaloo"},"content":" this.date \u003d date;","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"alfaloo"},"content":" * Executes the QueryCommand, performing the specified query action on the given task list and storage.","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"alfaloo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"alfaloo"},"content":" * @param tasks The TaskList on which the query action is performed.","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"alfaloo"},"content":" * @param storage The Storage where changes are saved.","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"alfaloo"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"alfaloo"},"content":" public void execute(TaskList tasks, Storage storage) {","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"alfaloo"},"content":" switch (this.commandType) {","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"alfaloo"},"content":" case QUERY:","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"alfaloo"},"content":" query(tasks);","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"alfaloo"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"alfaloo"},"content":" case FIND:","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"alfaloo"},"content":" find(tasks);","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"alfaloo"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":64,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":65,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":66,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"alfaloo"},"content":" * Retrieves the query type as test data associated with QueryCommand.","lastModifiedDate":"2024-01-27"},{"lineNumber":68,"author":{"gitId":"alfaloo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":69,"author":{"gitId":"alfaloo"},"content":" * @return The query type used for testing.","lastModifiedDate":"2024-01-27"},{"lineNumber":70,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":71,"author":{"gitId":"alfaloo"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":72,"author":{"gitId":"alfaloo"},"content":" public String getTestData() {","lastModifiedDate":"2024-01-27"},{"lineNumber":73,"author":{"gitId":"alfaloo"},"content":" return this.query;","lastModifiedDate":"2024-01-27"},{"lineNumber":74,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":75,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":76,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":77,"author":{"gitId":"alfaloo"},"content":" * Finds tasks based on the specified query type and date, printing the results to the UI.","lastModifiedDate":"2024-01-27"},{"lineNumber":78,"author":{"gitId":"alfaloo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":79,"author":{"gitId":"alfaloo"},"content":" * @param tasks The TaskList from which tasks are queried.","lastModifiedDate":"2024-01-27"},{"lineNumber":80,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":81,"author":{"gitId":"alfaloo"},"content":" public void query(TaskList tasks) {","lastModifiedDate":"2024-01-27"},{"lineNumber":82,"author":{"gitId":"alfaloo"},"content":" String formattedDate \u003d this.date.format(DateTimeFormatter.ofLocalizedDate(FormatStyle.LONG));","lastModifiedDate":"2024-01-27"},{"lineNumber":83,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":84,"author":{"gitId":"alfaloo"},"content":" if (this.query.equals(\"deadline\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":85,"author":{"gitId":"alfaloo"},"content":" UI.print(\"Below are deadlines that are due on \" + formattedDate);","lastModifiedDate":"2024-01-27"},{"lineNumber":86,"author":{"gitId":"alfaloo"},"content":" for (Task task : tasks.fetchAll()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":87,"author":{"gitId":"alfaloo"},"content":" if (task instanceof Deadline \u0026\u0026 task.queryByDate(this.date)) {","lastModifiedDate":"2024-01-27"},{"lineNumber":88,"author":{"gitId":"alfaloo"},"content":" UI.print(task);","lastModifiedDate":"2024-01-27"},{"lineNumber":89,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":90,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":91,"author":{"gitId":"alfaloo"},"content":" } else if (this.query.equals(\"event\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":92,"author":{"gitId":"alfaloo"},"content":" UI.print(\"Below are events that are operating on \" + formattedDate);","lastModifiedDate":"2024-01-27"},{"lineNumber":93,"author":{"gitId":"alfaloo"},"content":" for (Task task : tasks.fetchAll()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":94,"author":{"gitId":"alfaloo"},"content":" if (task instanceof Event \u0026\u0026 task.queryByDate(date)) {","lastModifiedDate":"2024-01-27"},{"lineNumber":95,"author":{"gitId":"alfaloo"},"content":" UI.print(task);","lastModifiedDate":"2024-01-27"},{"lineNumber":96,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":97,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":98,"author":{"gitId":"alfaloo"},"content":" } else {","lastModifiedDate":"2024-01-27"},{"lineNumber":99,"author":{"gitId":"alfaloo"},"content":" UI.print(\"Could not query given task type\");","lastModifiedDate":"2024-01-27"},{"lineNumber":100,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":101,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":102,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":103,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":104,"author":{"gitId":"alfaloo"},"content":" * Finds and prints tasks in the task list that match the specified query.","lastModifiedDate":"2024-01-27"},{"lineNumber":105,"author":{"gitId":"alfaloo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":106,"author":{"gitId":"alfaloo"},"content":" * @param tasks The TaskList from which tasks are queried.","lastModifiedDate":"2024-01-27"},{"lineNumber":107,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":108,"author":{"gitId":"alfaloo"},"content":" public void find(TaskList tasks) {","lastModifiedDate":"2024-01-27"},{"lineNumber":109,"author":{"gitId":"alfaloo"},"content":" UI.print(\"Here are the matching tasks in your list:\");","lastModifiedDate":"2024-01-27"},{"lineNumber":110,"author":{"gitId":"alfaloo"},"content":" int index \u003d 1;","lastModifiedDate":"2024-01-27"},{"lineNumber":111,"author":{"gitId":"alfaloo"},"content":" for (Task task : tasks.fetchAll()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":112,"author":{"gitId":"alfaloo"},"content":" if (task.getName().contains(this.query)) {","lastModifiedDate":"2024-01-27"},{"lineNumber":113,"author":{"gitId":"alfaloo"},"content":" UI.print(index + \".\" + task);","lastModifiedDate":"2024-01-27"},{"lineNumber":114,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":115,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":116,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":117,"author":{"gitId":"alfaloo"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"alfaloo":117}},{"path":"src/main/java/data/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"alfaloo"},"content":"todo todo1","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"alfaloo"},"content":"deadline deadline1 /by 2023-01-02","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"alfaloo"},"content":"event event1 /from 2022-03-04 /to 2024-05-06","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"alfaloo"},"content":"todo todo2","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"alfaloo":4}},{"path":"src/main/java/data/lulu.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"alfaloo"},"content":"todo,todo1,false","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"alfaloo"},"content":"event,event1,2022-03-04,2024-05-06,false","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"alfaloo"},"content":"todo,bye,true","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"alfaloo"},"content":"todo,great day,false","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"alfaloo"},"content":"todo,great week,false","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"alfaloo"},"content":"todo,thats great,false","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"alfaloo":6}},{"path":"src/main/java/exceptions/InvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"alfaloo"},"content":"package exceptions;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"alfaloo"},"content":"public class InvalidCommandException extends LuluException {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"alfaloo"},"content":" public InvalidCommandException() {","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"alfaloo"},"content":" super(\"Could not decipher input string\");","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"alfaloo"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"alfaloo":7}},{"path":"src/main/java/exceptions/InvalidDateException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"alfaloo"},"content":"package exceptions;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"alfaloo"},"content":"public class InvalidDateException extends LuluException{","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"alfaloo"},"content":" public InvalidDateException() {","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"alfaloo"},"content":" super(\"Invalid date detected\");","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"alfaloo"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"alfaloo":7}},{"path":"src/main/java/exceptions/InvalidSlashParameterException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"alfaloo"},"content":"package exceptions;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"alfaloo"},"content":"public class InvalidSlashParameterException extends LuluException {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"alfaloo"},"content":" public InvalidSlashParameterException() {","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"alfaloo"},"content":" super(\"Could not decipher command after slash\");","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"alfaloo"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"alfaloo":7}},{"path":"src/main/java/exceptions/InvalidStatusUpdateException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"alfaloo"},"content":"package exceptions;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"alfaloo"},"content":"public class InvalidStatusUpdateException extends LuluException {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"alfaloo"},"content":" public InvalidStatusUpdateException() {","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"alfaloo"},"content":" super(\"Status was already updated to desired value\");","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"alfaloo"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"alfaloo":7}},{"path":"src/main/java/exceptions/LuluException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"alfaloo"},"content":"package exceptions;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"alfaloo"},"content":"public class LuluException extends Exception {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"alfaloo"},"content":" public LuluException(String message) {","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"alfaloo"},"content":" super(message);","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"alfaloo"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"alfaloo":7}},{"path":"src/main/java/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"alfaloo"},"content":"package parser;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"alfaloo"},"content":"import task.Deadline;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"alfaloo"},"content":"import task.Event;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"alfaloo"},"content":"import task.Todo;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"alfaloo"},"content":"import command.AddCommand;","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"alfaloo"},"content":"import command.Command;","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"alfaloo"},"content":"import command.ManageCommand;","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"alfaloo"},"content":"import command.QueryCommand;","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"alfaloo"},"content":"import exceptions.LuluException;","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"alfaloo"},"content":"import exceptions.InvalidCommandException;","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"alfaloo"},"content":"import exceptions.InvalidDateException;","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"alfaloo"},"content":"import exceptions.InvalidSlashParameterException;","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"alfaloo"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"alfaloo"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"alfaloo"},"content":" * The Parser class is responsible for parsing user input and creating corresponding Command objects.","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"alfaloo"},"content":" * It includes methods for parsing various commands such as adding, managing, and querying tasks.","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"alfaloo"},"content":"public class Parser {","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"alfaloo"},"content":" * Parses the input string and creates the corresponding Command object.","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"alfaloo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"alfaloo"},"content":" * @param input The user input string.","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"alfaloo"},"content":" * @return The Command object based on the parsed input.","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"alfaloo"},"content":" * @throws LuluException If an error occurs during parsing.","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"alfaloo"},"content":" public Command parse(String input) throws LuluException {","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"alfaloo"},"content":" String firstWord \u003d input.split(\" \")[0];","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"alfaloo"},"content":" if (input.toLowerCase().equals(\"list\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"alfaloo"},"content":" return manageTasks(Command.Types.LIST, input);","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"alfaloo"},"content":" } else if (firstWord.equals(\"mark\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"alfaloo"},"content":" return manageTasks(Command.Types.MARK, input);","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"alfaloo"},"content":" } else if (firstWord.equals(\"unmark\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"alfaloo"},"content":" return manageTasks(Command.Types.UNMARK, input);","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"alfaloo"},"content":" } else if (firstWord.equals(\"delete\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"alfaloo"},"content":" return manageTasks(Command.Types.DELETE, input);","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"alfaloo"},"content":" } else if (firstWord.equals(\"todo\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"alfaloo"},"content":" return addTasks(Command.Types.TODO, input);","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"alfaloo"},"content":" } else if (firstWord.equals(\"deadline\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"alfaloo"},"content":" return addTasks(Command.Types.DEADLINE, input);","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"alfaloo"},"content":" } else if (firstWord.equals(\"event\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"alfaloo"},"content":" return addTasks(Command.Types.EVENT, input);","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"alfaloo"},"content":" } else if (firstWord.equals(\"query\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"alfaloo"},"content":" return manageTasks(Command.Types.QUERY, input);","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"alfaloo"},"content":" } else if (firstWord.equals(\"find\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"alfaloo"},"content":" return manageTasks(Command.Types.FIND, input);","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"alfaloo"},"content":" } else {","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"alfaloo"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"alfaloo"},"content":" * Creates a ManageCommand object based on the specified command type and input.","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"alfaloo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"alfaloo"},"content":" * @param command The type of ManageCommand (MARK, UNMARK, DELETE, FIND).","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"alfaloo"},"content":" * @param input The user input string.","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"alfaloo"},"content":" * @return The ManageCommand object.","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"alfaloo"},"content":" * @throws LuluException If an error occurs during parsing.","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":64,"author":{"gitId":"alfaloo"},"content":" public Command manageTasks(Command.Types command, String input) throws LuluException {","lastModifiedDate":"2024-01-27"},{"lineNumber":65,"author":{"gitId":"alfaloo"},"content":" switch (command) {","lastModifiedDate":"2024-01-27"},{"lineNumber":66,"author":{"gitId":"alfaloo"},"content":" case MARK:","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"alfaloo"},"content":" return mark(input);","lastModifiedDate":"2024-01-27"},{"lineNumber":68,"author":{"gitId":"alfaloo"},"content":" case UNMARK:","lastModifiedDate":"2024-01-27"},{"lineNumber":69,"author":{"gitId":"alfaloo"},"content":" return unmark(input);","lastModifiedDate":"2024-01-27"},{"lineNumber":70,"author":{"gitId":"alfaloo"},"content":" case DELETE:","lastModifiedDate":"2024-01-27"},{"lineNumber":71,"author":{"gitId":"alfaloo"},"content":" return delete(input);","lastModifiedDate":"2024-01-27"},{"lineNumber":72,"author":{"gitId":"alfaloo"},"content":" case QUERY:","lastModifiedDate":"2024-01-27"},{"lineNumber":73,"author":{"gitId":"alfaloo"},"content":" return query(input);","lastModifiedDate":"2024-01-27"},{"lineNumber":74,"author":{"gitId":"alfaloo"},"content":" case FIND:","lastModifiedDate":"2024-01-27"},{"lineNumber":75,"author":{"gitId":"alfaloo"},"content":" return find(input);","lastModifiedDate":"2024-01-27"},{"lineNumber":76,"author":{"gitId":"alfaloo"},"content":" default:","lastModifiedDate":"2024-01-27"},{"lineNumber":77,"author":{"gitId":"alfaloo"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2024-01-27"},{"lineNumber":78,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":79,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":80,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":81,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":82,"author":{"gitId":"alfaloo"},"content":" * Creates an AddCommand object based on the specified command type and input.","lastModifiedDate":"2024-01-27"},{"lineNumber":83,"author":{"gitId":"alfaloo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":84,"author":{"gitId":"alfaloo"},"content":" * @param command The type of AddCommand (TODO, DEADLINE, EVENT).","lastModifiedDate":"2024-01-27"},{"lineNumber":85,"author":{"gitId":"alfaloo"},"content":" * @param input The user input string.","lastModifiedDate":"2024-01-27"},{"lineNumber":86,"author":{"gitId":"alfaloo"},"content":" * @return The AddCommand object.","lastModifiedDate":"2024-01-27"},{"lineNumber":87,"author":{"gitId":"alfaloo"},"content":" * @throws LuluException If an error occurs during parsing.","lastModifiedDate":"2024-01-27"},{"lineNumber":88,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":89,"author":{"gitId":"alfaloo"},"content":" public Command addTasks(Command.Types command, String input) throws LuluException {","lastModifiedDate":"2024-01-27"},{"lineNumber":90,"author":{"gitId":"alfaloo"},"content":" switch (command) {","lastModifiedDate":"2024-01-27"},{"lineNumber":91,"author":{"gitId":"alfaloo"},"content":" case TODO:","lastModifiedDate":"2024-01-27"},{"lineNumber":92,"author":{"gitId":"alfaloo"},"content":" return todo(input);","lastModifiedDate":"2024-01-27"},{"lineNumber":93,"author":{"gitId":"alfaloo"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-27"},{"lineNumber":94,"author":{"gitId":"alfaloo"},"content":" return deadline(input);","lastModifiedDate":"2024-01-27"},{"lineNumber":95,"author":{"gitId":"alfaloo"},"content":" case EVENT:","lastModifiedDate":"2024-01-27"},{"lineNumber":96,"author":{"gitId":"alfaloo"},"content":" return event(input);","lastModifiedDate":"2024-01-27"},{"lineNumber":97,"author":{"gitId":"alfaloo"},"content":" default:","lastModifiedDate":"2024-01-27"},{"lineNumber":98,"author":{"gitId":"alfaloo"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2024-01-27"},{"lineNumber":99,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":100,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":101,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":102,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":103,"author":{"gitId":"alfaloo"},"content":" * Parses the input string for a MARK command and creates the corresponding ManageCommand object.","lastModifiedDate":"2024-01-27"},{"lineNumber":104,"author":{"gitId":"alfaloo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":105,"author":{"gitId":"alfaloo"},"content":" * @param input The user input string.","lastModifiedDate":"2024-01-27"},{"lineNumber":106,"author":{"gitId":"alfaloo"},"content":" * @return The ManageCommand object for marking a task.","lastModifiedDate":"2024-01-27"},{"lineNumber":107,"author":{"gitId":"alfaloo"},"content":" * @throws LuluException If an error occurs during parsing.","lastModifiedDate":"2024-01-27"},{"lineNumber":108,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":109,"author":{"gitId":"alfaloo"},"content":" public Command mark(String input) throws LuluException {","lastModifiedDate":"2024-01-27"},{"lineNumber":110,"author":{"gitId":"alfaloo"},"content":" String[] words \u003d input.split(\" \");","lastModifiedDate":"2024-01-27"},{"lineNumber":111,"author":{"gitId":"alfaloo"},"content":" if (words.length \u003c\u003d 1) {","lastModifiedDate":"2024-01-27"},{"lineNumber":112,"author":{"gitId":"alfaloo"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2024-01-27"},{"lineNumber":113,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":114,"author":{"gitId":"alfaloo"},"content":" int index \u003d Integer.valueOf(words[1]) - 1;","lastModifiedDate":"2024-01-27"},{"lineNumber":115,"author":{"gitId":"alfaloo"},"content":" return new ManageCommand(Command.Types.MARK, index);","lastModifiedDate":"2024-01-27"},{"lineNumber":116,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":117,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":118,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":119,"author":{"gitId":"alfaloo"},"content":" * Parses the input string for an UNMARK command and creates the corresponding ManageCommand object.","lastModifiedDate":"2024-01-27"},{"lineNumber":120,"author":{"gitId":"alfaloo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":121,"author":{"gitId":"alfaloo"},"content":" * @param input The user input string.","lastModifiedDate":"2024-01-27"},{"lineNumber":122,"author":{"gitId":"alfaloo"},"content":" * @return The ManageCommand object for unmarking a task.","lastModifiedDate":"2024-01-27"},{"lineNumber":123,"author":{"gitId":"alfaloo"},"content":" * @throws LuluException If an error occurs during parsing.","lastModifiedDate":"2024-01-27"},{"lineNumber":124,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":125,"author":{"gitId":"alfaloo"},"content":" public Command unmark(String input) throws LuluException {","lastModifiedDate":"2024-01-27"},{"lineNumber":126,"author":{"gitId":"alfaloo"},"content":" String[] words \u003d input.split(\" \");","lastModifiedDate":"2024-01-27"},{"lineNumber":127,"author":{"gitId":"alfaloo"},"content":" if (words.length \u003c\u003d 1) {","lastModifiedDate":"2024-01-27"},{"lineNumber":128,"author":{"gitId":"alfaloo"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2024-01-27"},{"lineNumber":129,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":130,"author":{"gitId":"alfaloo"},"content":" int index \u003d Integer.valueOf(words[1]) - 1;","lastModifiedDate":"2024-01-27"},{"lineNumber":131,"author":{"gitId":"alfaloo"},"content":" return new ManageCommand(Command.Types.UNMARK, index);","lastModifiedDate":"2024-01-27"},{"lineNumber":132,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":133,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":134,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":135,"author":{"gitId":"alfaloo"},"content":" * Parses the input string for a DELETE command and creates the corresponding ManageCommand object.","lastModifiedDate":"2024-01-27"},{"lineNumber":136,"author":{"gitId":"alfaloo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":137,"author":{"gitId":"alfaloo"},"content":" * @param input The user input string.","lastModifiedDate":"2024-01-27"},{"lineNumber":138,"author":{"gitId":"alfaloo"},"content":" * @return The ManageCommand object for deleting a task.","lastModifiedDate":"2024-01-27"},{"lineNumber":139,"author":{"gitId":"alfaloo"},"content":" * @throws LuluException If an error occurs during parsing.","lastModifiedDate":"2024-01-27"},{"lineNumber":140,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":141,"author":{"gitId":"alfaloo"},"content":" public Command delete(String input) throws LuluException {","lastModifiedDate":"2024-01-27"},{"lineNumber":142,"author":{"gitId":"alfaloo"},"content":" String[] words \u003d input.split(\" \");","lastModifiedDate":"2024-01-27"},{"lineNumber":143,"author":{"gitId":"alfaloo"},"content":" if (words.length \u003c\u003d 1) {","lastModifiedDate":"2024-01-27"},{"lineNumber":144,"author":{"gitId":"alfaloo"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2024-01-27"},{"lineNumber":145,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":146,"author":{"gitId":"alfaloo"},"content":" int index \u003d Integer.valueOf(words[1]) - 1;","lastModifiedDate":"2024-01-27"},{"lineNumber":147,"author":{"gitId":"alfaloo"},"content":" return new ManageCommand(Command.Types.DELETE, index);","lastModifiedDate":"2024-01-27"},{"lineNumber":148,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":149,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":150,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":151,"author":{"gitId":"alfaloo"},"content":" * Parses the input string for a FIND command and creates the corresponding QueryCommand object.","lastModifiedDate":"2024-01-27"},{"lineNumber":152,"author":{"gitId":"alfaloo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":153,"author":{"gitId":"alfaloo"},"content":" * @param input The user input string.","lastModifiedDate":"2024-01-27"},{"lineNumber":154,"author":{"gitId":"alfaloo"},"content":" * @return The QueryCommand object for finding tasks.","lastModifiedDate":"2024-01-27"},{"lineNumber":155,"author":{"gitId":"alfaloo"},"content":" * @throws LuluException If an error occurs during parsing.","lastModifiedDate":"2024-01-27"},{"lineNumber":156,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":157,"author":{"gitId":"alfaloo"},"content":" public Command query(String input) throws LuluException {","lastModifiedDate":"2024-01-27"},{"lineNumber":158,"author":{"gitId":"alfaloo"},"content":" String[] words \u003d input.split(\" \");","lastModifiedDate":"2024-01-27"},{"lineNumber":159,"author":{"gitId":"alfaloo"},"content":" if (words.length \u003c\u003d 2) {","lastModifiedDate":"2024-01-27"},{"lineNumber":160,"author":{"gitId":"alfaloo"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2024-01-27"},{"lineNumber":161,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":162,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":163,"author":{"gitId":"alfaloo"},"content":" String taskType \u003d words[1].toLowerCase();","lastModifiedDate":"2024-01-27"},{"lineNumber":164,"author":{"gitId":"alfaloo"},"content":" LocalDate date \u003d LocalDate.parse(words[2]);","lastModifiedDate":"2024-01-27"},{"lineNumber":165,"author":{"gitId":"alfaloo"},"content":" return new QueryCommand(Command.Types.QUERY, taskType, date);","lastModifiedDate":"2024-01-27"},{"lineNumber":166,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":167,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":168,"author":{"gitId":"alfaloo"},"content":" public Command find(String input) throws LuluException {","lastModifiedDate":"2024-01-27"},{"lineNumber":169,"author":{"gitId":"alfaloo"},"content":" String[] words \u003d input.split(\" \");","lastModifiedDate":"2024-01-27"},{"lineNumber":170,"author":{"gitId":"alfaloo"},"content":" if (words.length \u003c\u003d 1) {","lastModifiedDate":"2024-01-27"},{"lineNumber":171,"author":{"gitId":"alfaloo"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2024-01-27"},{"lineNumber":172,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":173,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":174,"author":{"gitId":"alfaloo"},"content":" String queryString \u003d words[1].toLowerCase();","lastModifiedDate":"2024-01-27"},{"lineNumber":175,"author":{"gitId":"alfaloo"},"content":" return new QueryCommand(Command.Types.FIND, queryString, null);","lastModifiedDate":"2024-01-27"},{"lineNumber":176,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":177,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":178,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":179,"author":{"gitId":"alfaloo"},"content":" * Parses the input string for a TODO command and creates the corresponding AddCommand object.","lastModifiedDate":"2024-01-27"},{"lineNumber":180,"author":{"gitId":"alfaloo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":181,"author":{"gitId":"alfaloo"},"content":" * @param input The user input string.","lastModifiedDate":"2024-01-27"},{"lineNumber":182,"author":{"gitId":"alfaloo"},"content":" * @return The AddCommand object for adding a Todo task.","lastModifiedDate":"2024-01-27"},{"lineNumber":183,"author":{"gitId":"alfaloo"},"content":" * @throws LuluException If an error occurs during parsing.","lastModifiedDate":"2024-01-27"},{"lineNumber":184,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":185,"author":{"gitId":"alfaloo"},"content":" public Command todo(String input) throws LuluException {","lastModifiedDate":"2024-01-27"},{"lineNumber":186,"author":{"gitId":"alfaloo"},"content":" if (input.split(\" \").length \u003c\u003d 1) {","lastModifiedDate":"2024-01-27"},{"lineNumber":187,"author":{"gitId":"alfaloo"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2024-01-27"},{"lineNumber":188,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":189,"author":{"gitId":"alfaloo"},"content":" String name \u003d input.substring(5).strip();","lastModifiedDate":"2024-01-27"},{"lineNumber":190,"author":{"gitId":"alfaloo"},"content":" Todo todo \u003d new Todo(name);","lastModifiedDate":"2024-01-27"},{"lineNumber":191,"author":{"gitId":"alfaloo"},"content":" String data \u003d String.format(\"todo,%s,%b\", name, todo.getStatus());","lastModifiedDate":"2024-01-27"},{"lineNumber":192,"author":{"gitId":"alfaloo"},"content":" Command command \u003d new AddCommand(todo, data);","lastModifiedDate":"2024-01-27"},{"lineNumber":193,"author":{"gitId":"alfaloo"},"content":" return command;","lastModifiedDate":"2024-01-27"},{"lineNumber":194,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":195,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":196,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":197,"author":{"gitId":"alfaloo"},"content":" * Parses the input string for a DEADLINE command and creates the corresponding AddCommand object.","lastModifiedDate":"2024-01-27"},{"lineNumber":198,"author":{"gitId":"alfaloo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":199,"author":{"gitId":"alfaloo"},"content":" * @param input The user input string.","lastModifiedDate":"2024-01-27"},{"lineNumber":200,"author":{"gitId":"alfaloo"},"content":" * @return The AddCommand object for adding a Deadline task.","lastModifiedDate":"2024-01-27"},{"lineNumber":201,"author":{"gitId":"alfaloo"},"content":" * @throws LuluException If an error occurs during parsing.","lastModifiedDate":"2024-01-27"},{"lineNumber":202,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":203,"author":{"gitId":"alfaloo"},"content":" public Command deadline(String input) throws LuluException {","lastModifiedDate":"2024-01-27"},{"lineNumber":204,"author":{"gitId":"alfaloo"},"content":" if (input.split(\" \").length \u003c\u003d 1) {","lastModifiedDate":"2024-01-27"},{"lineNumber":205,"author":{"gitId":"alfaloo"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2024-01-27"},{"lineNumber":206,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":207,"author":{"gitId":"alfaloo"},"content":" int indexBy \u003d input.indexOf(\u0027/\u0027);","lastModifiedDate":"2024-01-27"},{"lineNumber":208,"author":{"gitId":"alfaloo"},"content":" if (!input.substring(indexBy + 1).split(\" \")[0].equals(\"by\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":209,"author":{"gitId":"alfaloo"},"content":" throw new InvalidSlashParameterException();","lastModifiedDate":"2024-01-27"},{"lineNumber":210,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":211,"author":{"gitId":"alfaloo"},"content":" String name \u003d input.substring(9, indexBy).strip();","lastModifiedDate":"2024-01-27"},{"lineNumber":212,"author":{"gitId":"alfaloo"},"content":" String by \u003d input.substring(indexBy + 3).strip();","lastModifiedDate":"2024-01-27"},{"lineNumber":213,"author":{"gitId":"alfaloo"},"content":" Deadline deadline \u003d new Deadline(name, LocalDate.parse(by));","lastModifiedDate":"2024-01-27"},{"lineNumber":214,"author":{"gitId":"alfaloo"},"content":" String data \u003d String.format(\"deadline,%s,%s,%b\", name, by, deadline.getStatus());","lastModifiedDate":"2024-01-27"},{"lineNumber":215,"author":{"gitId":"alfaloo"},"content":" Command command \u003d new AddCommand(deadline, data);","lastModifiedDate":"2024-01-27"},{"lineNumber":216,"author":{"gitId":"alfaloo"},"content":" return command;","lastModifiedDate":"2024-01-27"},{"lineNumber":217,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":218,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":219,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":220,"author":{"gitId":"alfaloo"},"content":" * Parses the input string for an EVENT command and creates the corresponding AddCommand object.","lastModifiedDate":"2024-01-27"},{"lineNumber":221,"author":{"gitId":"alfaloo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":222,"author":{"gitId":"alfaloo"},"content":" * @param input The user input string.","lastModifiedDate":"2024-01-27"},{"lineNumber":223,"author":{"gitId":"alfaloo"},"content":" * @return The AddCommand object for adding an Event task.","lastModifiedDate":"2024-01-27"},{"lineNumber":224,"author":{"gitId":"alfaloo"},"content":" * @throws LuluException If an error occurs during parsing.","lastModifiedDate":"2024-01-27"},{"lineNumber":225,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":226,"author":{"gitId":"alfaloo"},"content":" public Command event(String input) throws LuluException {","lastModifiedDate":"2024-01-27"},{"lineNumber":227,"author":{"gitId":"alfaloo"},"content":" if (input.split(\" \").length \u003c\u003d 1) {","lastModifiedDate":"2024-01-27"},{"lineNumber":228,"author":{"gitId":"alfaloo"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2024-01-27"},{"lineNumber":229,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":230,"author":{"gitId":"alfaloo"},"content":" int indexFrom \u003d input.indexOf(\u0027/\u0027);","lastModifiedDate":"2024-01-27"},{"lineNumber":231,"author":{"gitId":"alfaloo"},"content":" int indexTo \u003d input.indexOf(\u0027/\u0027, indexFrom + 1);","lastModifiedDate":"2024-01-27"},{"lineNumber":232,"author":{"gitId":"alfaloo"},"content":" if (!input.substring(indexFrom + 1).split(\" \")[0].equals(\"from\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":233,"author":{"gitId":"alfaloo"},"content":" throw new InvalidSlashParameterException();","lastModifiedDate":"2024-01-27"},{"lineNumber":234,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":235,"author":{"gitId":"alfaloo"},"content":" if (!input.substring(indexTo + 1).split(\" \")[0].equals(\"to\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":236,"author":{"gitId":"alfaloo"},"content":" throw new InvalidSlashParameterException();","lastModifiedDate":"2024-01-27"},{"lineNumber":237,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":238,"author":{"gitId":"alfaloo"},"content":" String name \u003d input.substring(6, indexFrom).strip();","lastModifiedDate":"2024-01-27"},{"lineNumber":239,"author":{"gitId":"alfaloo"},"content":" String from \u003d input.substring(indexFrom + 5, indexTo).strip();","lastModifiedDate":"2024-01-27"},{"lineNumber":240,"author":{"gitId":"alfaloo"},"content":" String to \u003d input.substring(indexTo + 3).strip();","lastModifiedDate":"2024-01-27"},{"lineNumber":241,"author":{"gitId":"alfaloo"},"content":" if (LocalDate.parse(to).isBefore(LocalDate.parse(from))) {","lastModifiedDate":"2024-01-27"},{"lineNumber":242,"author":{"gitId":"alfaloo"},"content":" throw new InvalidDateException();","lastModifiedDate":"2024-01-27"},{"lineNumber":243,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":244,"author":{"gitId":"alfaloo"},"content":" Event event \u003d new Event(name, LocalDate.parse(from), LocalDate.parse(to));","lastModifiedDate":"2024-01-27"},{"lineNumber":245,"author":{"gitId":"alfaloo"},"content":" String data \u003d String.format(\"event,%s,%s,%s,%b\", name, from, to, event.getStatus());","lastModifiedDate":"2024-01-27"},{"lineNumber":246,"author":{"gitId":"alfaloo"},"content":" Command command \u003d new AddCommand(event, data);","lastModifiedDate":"2024-01-27"},{"lineNumber":247,"author":{"gitId":"alfaloo"},"content":" return command;","lastModifiedDate":"2024-01-27"},{"lineNumber":248,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":249,"author":{"gitId":"alfaloo"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"alfaloo":249}},{"path":"src/main/java/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"alfaloo"},"content":"package storage;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"alfaloo"},"content":"import ui.UI;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"alfaloo"},"content":"import java.io.File;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"alfaloo"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"alfaloo"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"alfaloo"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"alfaloo"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"alfaloo"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"alfaloo"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"alfaloo"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"alfaloo"},"content":"import java.util.List;","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"alfaloo"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"alfaloo"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"alfaloo"},"content":" * The Storage class handles reading from and writing to a file for data persistence.","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"alfaloo"},"content":" * It provides methods for retrieving lines, writing a line, reading a line by index,","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"alfaloo"},"content":" * updating a line, and deleting a line from the stored data.","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"alfaloo"},"content":"public class Storage {","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"alfaloo"},"content":" /** The file path for data storage. */","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"alfaloo"},"content":" private String filePath;","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"alfaloo"},"content":" /** The File object representing the file for data storage. */","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"alfaloo"},"content":" private File file;","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"alfaloo"},"content":" /** The Path object representing the file path. */","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"alfaloo"},"content":" private Path path;","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"alfaloo"},"content":" * Constructs a Storage object with the specified file path.","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"alfaloo"},"content":" * Initializes the File and Path objects for data storage.","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"alfaloo"},"content":" * @param filePath The path to the file for data storage.","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"alfaloo"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"alfaloo"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"alfaloo"},"content":" this.file \u003d new File(filePath);","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"alfaloo"},"content":" this.path \u003d Path.of(this.filePath);","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"alfaloo"},"content":" * Retrieves all lines from the stored data in the file.","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"alfaloo"},"content":" * @return A List of strings representing the lines from the file.","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"alfaloo"},"content":" public List\u003cString\u003e retrieveLines() {","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"alfaloo"},"content":" List\u003cString\u003e result \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"alfaloo"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"alfaloo"},"content":" Scanner scanner \u003d new Scanner(this.file);","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"alfaloo"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"alfaloo"},"content":" result.add(scanner.nextLine());","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"alfaloo"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"alfaloo"},"content":" UI.print(\"Invalid file path provided, session will not be saved.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"alfaloo"},"content":" return result;","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"alfaloo"},"content":" * Writes a line of data to the file for data storage.","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"alfaloo"},"content":" * @param data The data to be written to the file.","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":64,"author":{"gitId":"alfaloo"},"content":" public void writeLine(String data) {","lastModifiedDate":"2024-01-27"},{"lineNumber":65,"author":{"gitId":"alfaloo"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":66,"author":{"gitId":"alfaloo"},"content":" BufferedWriter writer \u003d new BufferedWriter(new FileWriter(this.file, true));","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"alfaloo"},"content":" writer.write(data);","lastModifiedDate":"2024-01-27"},{"lineNumber":68,"author":{"gitId":"alfaloo"},"content":" writer.newLine();","lastModifiedDate":"2024-01-27"},{"lineNumber":69,"author":{"gitId":"alfaloo"},"content":" writer.close();","lastModifiedDate":"2024-01-27"},{"lineNumber":70,"author":{"gitId":"alfaloo"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":71,"author":{"gitId":"alfaloo"},"content":" UI.print(e.getMessage());","lastModifiedDate":"2024-01-27"},{"lineNumber":72,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":73,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":74,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":75,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":76,"author":{"gitId":"alfaloo"},"content":" * Reads a line from the stored data based on the specified index.","lastModifiedDate":"2024-01-27"},{"lineNumber":77,"author":{"gitId":"alfaloo"},"content":" * @param index The index of the line to be read.","lastModifiedDate":"2024-01-27"},{"lineNumber":78,"author":{"gitId":"alfaloo"},"content":" * @return The string representing the line at the specified index.","lastModifiedDate":"2024-01-27"},{"lineNumber":79,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":80,"author":{"gitId":"alfaloo"},"content":" public String readLine(int index) {","lastModifiedDate":"2024-01-27"},{"lineNumber":81,"author":{"gitId":"alfaloo"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":82,"author":{"gitId":"alfaloo"},"content":" Scanner scanner \u003d new Scanner(this.file);","lastModifiedDate":"2024-01-27"},{"lineNumber":83,"author":{"gitId":"alfaloo"},"content":" int i \u003d 0;","lastModifiedDate":"2024-01-27"},{"lineNumber":84,"author":{"gitId":"alfaloo"},"content":" String line \u003d \"\";","lastModifiedDate":"2024-01-27"},{"lineNumber":85,"author":{"gitId":"alfaloo"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":86,"author":{"gitId":"alfaloo"},"content":" line \u003d scanner.nextLine();","lastModifiedDate":"2024-01-27"},{"lineNumber":87,"author":{"gitId":"alfaloo"},"content":" if (i \u003d\u003d index) {","lastModifiedDate":"2024-01-27"},{"lineNumber":88,"author":{"gitId":"alfaloo"},"content":" return line;","lastModifiedDate":"2024-01-27"},{"lineNumber":89,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":90,"author":{"gitId":"alfaloo"},"content":" i++;","lastModifiedDate":"2024-01-27"},{"lineNumber":91,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":92,"author":{"gitId":"alfaloo"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":93,"author":{"gitId":"alfaloo"},"content":" UI.print(e.getMessage());","lastModifiedDate":"2024-01-27"},{"lineNumber":94,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":95,"author":{"gitId":"alfaloo"},"content":" return null;","lastModifiedDate":"2024-01-27"},{"lineNumber":96,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":97,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":98,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":99,"author":{"gitId":"alfaloo"},"content":" * Updates a line in the stored data based on the specified index.","lastModifiedDate":"2024-01-27"},{"lineNumber":100,"author":{"gitId":"alfaloo"},"content":" * @param index The index of the line to be updated.","lastModifiedDate":"2024-01-27"},{"lineNumber":101,"author":{"gitId":"alfaloo"},"content":" * @param data The updated data to replace the existing line.","lastModifiedDate":"2024-01-27"},{"lineNumber":102,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":103,"author":{"gitId":"alfaloo"},"content":" public void updateLine(int index, String data) {","lastModifiedDate":"2024-01-27"},{"lineNumber":104,"author":{"gitId":"alfaloo"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":105,"author":{"gitId":"alfaloo"},"content":" List\u003cString\u003e lines \u003d Files.readAllLines(this.path);","lastModifiedDate":"2024-01-27"},{"lineNumber":106,"author":{"gitId":"alfaloo"},"content":" lines.set(index, data);","lastModifiedDate":"2024-01-27"},{"lineNumber":107,"author":{"gitId":"alfaloo"},"content":" BufferedWriter writer \u003d new BufferedWriter(new FileWriter(this.file, false));","lastModifiedDate":"2024-01-27"},{"lineNumber":108,"author":{"gitId":"alfaloo"},"content":" writer.write(\"\");","lastModifiedDate":"2024-01-27"},{"lineNumber":109,"author":{"gitId":"alfaloo"},"content":" writer \u003d new BufferedWriter(new FileWriter(this.file, true));","lastModifiedDate":"2024-01-27"},{"lineNumber":110,"author":{"gitId":"alfaloo"},"content":" for (String str : lines) {","lastModifiedDate":"2024-01-27"},{"lineNumber":111,"author":{"gitId":"alfaloo"},"content":" writer.write(str);","lastModifiedDate":"2024-01-27"},{"lineNumber":112,"author":{"gitId":"alfaloo"},"content":" writer.newLine();","lastModifiedDate":"2024-01-27"},{"lineNumber":113,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":114,"author":{"gitId":"alfaloo"},"content":" writer.close();","lastModifiedDate":"2024-01-27"},{"lineNumber":115,"author":{"gitId":"alfaloo"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":116,"author":{"gitId":"alfaloo"},"content":" UI.print(e.getMessage());","lastModifiedDate":"2024-01-27"},{"lineNumber":117,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":118,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":119,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":120,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":121,"author":{"gitId":"alfaloo"},"content":" * Deletes a line from the stored data based on the specified index.","lastModifiedDate":"2024-01-27"},{"lineNumber":122,"author":{"gitId":"alfaloo"},"content":" * @param index The index of the line to be deleted.","lastModifiedDate":"2024-01-27"},{"lineNumber":123,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":124,"author":{"gitId":"alfaloo"},"content":" public void deleteLine(int index) {","lastModifiedDate":"2024-01-27"},{"lineNumber":125,"author":{"gitId":"alfaloo"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":126,"author":{"gitId":"alfaloo"},"content":" List\u003cString\u003e lines \u003d Files.readAllLines(this.path);","lastModifiedDate":"2024-01-27"},{"lineNumber":127,"author":{"gitId":"alfaloo"},"content":" lines.remove(index);","lastModifiedDate":"2024-01-27"},{"lineNumber":128,"author":{"gitId":"alfaloo"},"content":" BufferedWriter writer \u003d new BufferedWriter(new FileWriter(this.file, false));","lastModifiedDate":"2024-01-27"},{"lineNumber":129,"author":{"gitId":"alfaloo"},"content":" writer.write(\"\");","lastModifiedDate":"2024-01-27"},{"lineNumber":130,"author":{"gitId":"alfaloo"},"content":" writer \u003d new BufferedWriter(new FileWriter(this.file, true));","lastModifiedDate":"2024-01-27"},{"lineNumber":131,"author":{"gitId":"alfaloo"},"content":" for (String str : lines) {","lastModifiedDate":"2024-01-27"},{"lineNumber":132,"author":{"gitId":"alfaloo"},"content":" writer.write(str);","lastModifiedDate":"2024-01-27"},{"lineNumber":133,"author":{"gitId":"alfaloo"},"content":" writer.newLine();","lastModifiedDate":"2024-01-27"},{"lineNumber":134,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":135,"author":{"gitId":"alfaloo"},"content":" writer.close();","lastModifiedDate":"2024-01-27"},{"lineNumber":136,"author":{"gitId":"alfaloo"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":137,"author":{"gitId":"alfaloo"},"content":" UI.print(e.getMessage());","lastModifiedDate":"2024-01-27"},{"lineNumber":138,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":139,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":140,"author":{"gitId":"alfaloo"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"alfaloo":140}},{"path":"src/main/java/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"alfaloo"},"content":"package task;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"alfaloo"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"alfaloo"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"alfaloo"},"content":"import java.time.format.FormatStyle;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"alfaloo"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"alfaloo"},"content":" * The Deadline class represents a task with a specific end date.","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"alfaloo"},"content":" * It extends the Task class and includes methods to query by date and provide a formatted string representation.","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"alfaloo"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"alfaloo"},"content":" /** The end date of the deadline. */","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"alfaloo"},"content":" private LocalDate endDate;","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"alfaloo"},"content":" * Constructs a Deadline task with the specified name and end date.","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"alfaloo"},"content":" * @param name The name of the deadline.","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"alfaloo"},"content":" * @param endDate The end date of the deadline.","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"alfaloo"},"content":" public Deadline(String name, LocalDate endDate) {","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"alfaloo"},"content":" super(name);","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"alfaloo"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"alfaloo"},"content":" * Queries whether the deadline occurs on the specified date.","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"alfaloo"},"content":" * @param date The date to be queried.","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"alfaloo"},"content":" * @return true if the deadline occurs on the specified date, false otherwise.","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"alfaloo"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"alfaloo"},"content":" public boolean queryByDate(LocalDate date) {","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"alfaloo"},"content":" return date.isEqual(this.endDate);","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"alfaloo"},"content":" * Provides a formatted string representation of the Deadline task.","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"alfaloo"},"content":" * @return A string representing the Deadline task in a readable format.","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"alfaloo"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"alfaloo"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":42,"author":{"gitId":"alfaloo"},"content":" String by \u003d this.endDate.format(DateTimeFormatter.ofLocalizedDate(FormatStyle.LONG));","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"alfaloo"},"content":" return String.format(\"[D]%s %s (by: %s)\", (super.isMarked ? \"[X]\" : \"[ ]\"), super.name, by);","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":45,"author":{"gitId":"alfaloo"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"alfaloo":45}},{"path":"src/main/java/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"alfaloo"},"content":"package task;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"alfaloo"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"alfaloo"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"alfaloo"},"content":"import java.time.format.FormatStyle;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"alfaloo"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"alfaloo"},"content":" * The Event class represents a task with a start date and an end date.","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"alfaloo"},"content":" * It extends the Task class and includes methods to query by date and provide a formatted string representation.","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"alfaloo"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"alfaloo"},"content":" /** The start date of the event. */","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"alfaloo"},"content":" private LocalDate startDate;","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"alfaloo"},"content":" /** The end date of the event. */","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"alfaloo"},"content":" private LocalDate endDate;","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"alfaloo"},"content":" * Constructs an Event task with the specified name, start date, and end date.","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"alfaloo"},"content":" * @param name The name of the event.","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"alfaloo"},"content":" * @param startDate The start date of the event.","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"alfaloo"},"content":" * @param endDate The end date of the event.","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"alfaloo"},"content":" public Event(String name, LocalDate startDate, LocalDate endDate) {","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"alfaloo"},"content":" super(name);","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"alfaloo"},"content":" this.startDate \u003d startDate;","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"alfaloo"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"alfaloo"},"content":" * Queries whether the event occurs on the specified date.","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"alfaloo"},"content":" * @param date The date to be queried.","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"alfaloo"},"content":" * @return true if the event occurs on the specified date, false otherwise.","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"alfaloo"},"content":" public boolean queryByDate(LocalDate date) {","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"alfaloo"},"content":" return (date.isAfter(this.startDate) \u0026\u0026 date.isBefore(this.endDate)) || date.isEqual(this.startDate) || date.isEqual(this.endDate);","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"alfaloo"},"content":" * Provides a formatted string representation of the Event task.","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"alfaloo"},"content":" * @return A string representing the Event task in a readable format.","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"alfaloo"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":45,"author":{"gitId":"alfaloo"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":46,"author":{"gitId":"alfaloo"},"content":" String from \u003d this.startDate.format(DateTimeFormatter.ofLocalizedDate(FormatStyle.LONG));","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"alfaloo"},"content":" String to \u003d this.endDate.format(DateTimeFormatter.ofLocalizedDate(FormatStyle.LONG));","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"alfaloo"},"content":" return String.format(\"[E]%s %s (from: %s to: %s)\", (super.isMarked ? \"[X]\" : \"[ ]\"), super.name, from, to);","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":50,"author":{"gitId":"alfaloo"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"alfaloo":50}},{"path":"src/main/java/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"alfaloo"},"content":"package task;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"alfaloo"},"content":"import exceptions.InvalidStatusUpdateException;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"alfaloo"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"alfaloo"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"alfaloo"},"content":" * The {@code Task} class represents a generic task with a name and a status.","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"alfaloo"},"content":" * It provides methods to update the task\u0027s status, get the task\u0027s name,","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"alfaloo"},"content":" * get the task\u0027s status, query the task by date, and retrieve a string","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"alfaloo"},"content":" * representation of the task.","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"alfaloo"},"content":"public class Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"alfaloo"},"content":" /** The name of the task. */","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"alfaloo"},"content":" protected String name;","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"alfaloo"},"content":" /** The status of the task (marked or unmarked). */","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"alfaloo"},"content":" protected boolean isMarked;","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"alfaloo"},"content":" * Constructs a new task with the specified name and initializes","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"alfaloo"},"content":" * its status as unmarked.","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"alfaloo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"alfaloo"},"content":" * @param name The name of the task.","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"alfaloo"},"content":" public Task(String name) {","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"alfaloo"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"alfaloo"},"content":" this.isMarked \u003d false;","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"alfaloo"},"content":" * Updates the status of the task.","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"alfaloo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"alfaloo"},"content":" * @param status The new status of the task (true if marked, false if unmarked).","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"alfaloo"},"content":" * @throws InvalidStatusUpdateException If the new status is the same as the current status.","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"alfaloo"},"content":" public void updateStatus(boolean status) throws InvalidStatusUpdateException {","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"alfaloo"},"content":" if (this.isMarked \u003d\u003d status) {","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"alfaloo"},"content":" throw new InvalidStatusUpdateException();","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"alfaloo"},"content":" this.isMarked \u003d status;","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":44,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":45,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"alfaloo"},"content":" * Gets the name of the task.","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"alfaloo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"alfaloo"},"content":" * @return The name of the task.","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"alfaloo"},"content":" public String getName() {","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"alfaloo"},"content":" return this.name;","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"alfaloo"},"content":" * Gets the status of the task.","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"alfaloo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"alfaloo"},"content":" * @return The status of the task (true if marked, false if unmarked).","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"alfaloo"},"content":" public boolean getStatus() {","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"alfaloo"},"content":" return this.isMarked;","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":64,"author":{"gitId":"alfaloo"},"content":" * Queries the task by date. This method is overridden by subclasses.","lastModifiedDate":"2024-01-27"},{"lineNumber":65,"author":{"gitId":"alfaloo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":66,"author":{"gitId":"alfaloo"},"content":" * @param date The date to query.","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"alfaloo"},"content":" * @return {@code true} if the task is relevant to the specified date, {@code false} otherwise.","lastModifiedDate":"2024-01-27"},{"lineNumber":68,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":69,"author":{"gitId":"alfaloo"},"content":" public boolean queryByDate(LocalDate date) {","lastModifiedDate":"2024-01-27"},{"lineNumber":70,"author":{"gitId":"alfaloo"},"content":" return false;","lastModifiedDate":"2024-01-27"},{"lineNumber":71,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":72,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":73,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":74,"author":{"gitId":"alfaloo"},"content":" * Returns a string representation of the task.","lastModifiedDate":"2024-01-27"},{"lineNumber":75,"author":{"gitId":"alfaloo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":76,"author":{"gitId":"alfaloo"},"content":" * @return A string representation of the task.","lastModifiedDate":"2024-01-27"},{"lineNumber":77,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":78,"author":{"gitId":"alfaloo"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":79,"author":{"gitId":"alfaloo"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":80,"author":{"gitId":"alfaloo"},"content":" return \"[T]\" + (this.isMarked ? \"[X] \" : \"[ ] \") + this.name;","lastModifiedDate":"2024-01-27"},{"lineNumber":81,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":82,"author":{"gitId":"alfaloo"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"alfaloo":82}},{"path":"src/main/java/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"alfaloo"},"content":"package task;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"alfaloo"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"alfaloo"},"content":" * The Todo class represents a simple task without a specific date.","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"alfaloo"},"content":" * It extends the Task class and provides a formatted string representation.","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"alfaloo"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"alfaloo"},"content":" * Constructs a Todo task with the specified name.","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"alfaloo"},"content":" * @param name The name of the todo task.","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"alfaloo"},"content":" public Todo(String name) {","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"alfaloo"},"content":" super(name);","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"alfaloo"},"content":" * Provides a formatted string representation of the Todo task.","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"alfaloo"},"content":" * @return A string representing the Todo task in a readable format.","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"alfaloo"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"alfaloo"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"alfaloo"},"content":" return \"[T]\" + (super.isMarked ? \"[X] \" : \"[ ] \") + super.name;","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"alfaloo"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"alfaloo":25}},{"path":"src/main/java/tasklist/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"alfaloo"},"content":"package tasklist;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"alfaloo"},"content":"import task.Deadline;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"alfaloo"},"content":"import task.Event;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"alfaloo"},"content":"import task.Task;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"alfaloo"},"content":"import task.Todo;","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"alfaloo"},"content":"import ui.UI;","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"alfaloo"},"content":"import exceptions.InvalidStatusUpdateException;","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"alfaloo"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"alfaloo"},"content":"import java.util.List;","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"alfaloo"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"alfaloo"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"alfaloo"},"content":" * The TaskList class manages a list of tasks and provides methods","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"alfaloo"},"content":" * to add, retrieve, delete, and fetch tasks from the list.","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"alfaloo"},"content":"public class TaskList {","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"alfaloo"},"content":" /** The list of tasks managed by the TaskList. */","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"alfaloo"},"content":" private List\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"alfaloo"},"content":" * Constructs a TaskList based on the data provided.","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"alfaloo"},"content":" * Parses the input data and initializes the list of tasks accordingly.","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"alfaloo"},"content":" * @param data The list of strings representing task data.","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"alfaloo"},"content":" public TaskList(List\u003cString\u003e data) {","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"alfaloo"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"alfaloo"},"content":" for (String line : data) {","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"alfaloo"},"content":" String[] words \u003d line.split(\",\");","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"alfaloo"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"alfaloo"},"content":" if (words[0].equals(\"todo\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"alfaloo"},"content":" Todo todo \u003d new Todo(words[1]);","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"alfaloo"},"content":" if (words[2].equals(\"true\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"alfaloo"},"content":" todo.updateStatus(true);","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"alfaloo"},"content":" this.tasks.add(todo);","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"alfaloo"},"content":" } else if (words[0].equals(\"deadline\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"alfaloo"},"content":" Deadline deadline \u003d new Deadline(words[1], LocalDate.parse(words[2]));","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"alfaloo"},"content":" if (words[3].equals(\"true\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"alfaloo"},"content":" deadline.updateStatus(true);","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"alfaloo"},"content":" this.tasks.add(deadline);","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"alfaloo"},"content":" } else if (words[0].equals(\"event\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"alfaloo"},"content":" Event event \u003d new Event(words[1], LocalDate.parse(words[2]), LocalDate.parse(words[3]));","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"alfaloo"},"content":" if (words[4].equals(\"true\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"alfaloo"},"content":" event.updateStatus(true);","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"alfaloo"},"content":" this.tasks.add(event);","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"alfaloo"},"content":" } catch (InvalidStatusUpdateException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"alfaloo"},"content":" UI.print(e.getMessage());","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"alfaloo"},"content":" * Adds a task to the TaskList.","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"alfaloo"},"content":" * @param task The task to be added.","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"alfaloo"},"content":" * @return true if the task is successfully added.","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":64,"author":{"gitId":"alfaloo"},"content":" public boolean addTask(Task task) {","lastModifiedDate":"2024-01-27"},{"lineNumber":65,"author":{"gitId":"alfaloo"},"content":" return this.tasks.add(task);","lastModifiedDate":"2024-01-27"},{"lineNumber":66,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":68,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":69,"author":{"gitId":"alfaloo"},"content":" * Retrieves a task from the TaskList based on the specified index.","lastModifiedDate":"2024-01-27"},{"lineNumber":70,"author":{"gitId":"alfaloo"},"content":" * @param index The index of the task to be retrieved.","lastModifiedDate":"2024-01-27"},{"lineNumber":71,"author":{"gitId":"alfaloo"},"content":" * @return The task at the specified index.","lastModifiedDate":"2024-01-27"},{"lineNumber":72,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":73,"author":{"gitId":"alfaloo"},"content":" public Task getTask(int index) {","lastModifiedDate":"2024-01-27"},{"lineNumber":74,"author":{"gitId":"alfaloo"},"content":" return this.tasks.get(index);","lastModifiedDate":"2024-01-27"},{"lineNumber":75,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":76,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":77,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":78,"author":{"gitId":"alfaloo"},"content":" * Deletes a task from the TaskList based on the specified index.","lastModifiedDate":"2024-01-27"},{"lineNumber":79,"author":{"gitId":"alfaloo"},"content":" * @param index The index of the task to be deleted.","lastModifiedDate":"2024-01-27"},{"lineNumber":80,"author":{"gitId":"alfaloo"},"content":" * @return The task that was removed from the TaskList.","lastModifiedDate":"2024-01-27"},{"lineNumber":81,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":82,"author":{"gitId":"alfaloo"},"content":" public Task deleteTask(int index) {","lastModifiedDate":"2024-01-27"},{"lineNumber":83,"author":{"gitId":"alfaloo"},"content":" return this.tasks.remove(index);","lastModifiedDate":"2024-01-27"},{"lineNumber":84,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":85,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":86,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":87,"author":{"gitId":"alfaloo"},"content":" * Gets the number of tasks in the TaskList.","lastModifiedDate":"2024-01-27"},{"lineNumber":88,"author":{"gitId":"alfaloo"},"content":" * @return The size of the TaskList.","lastModifiedDate":"2024-01-27"},{"lineNumber":89,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":90,"author":{"gitId":"alfaloo"},"content":" public int getSize() {","lastModifiedDate":"2024-01-27"},{"lineNumber":91,"author":{"gitId":"alfaloo"},"content":" return this.tasks.size();","lastModifiedDate":"2024-01-27"},{"lineNumber":92,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":93,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":94,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":95,"author":{"gitId":"alfaloo"},"content":" * Fetches all tasks from the TaskList.","lastModifiedDate":"2024-01-27"},{"lineNumber":96,"author":{"gitId":"alfaloo"},"content":" * @return A List containing all tasks in the TaskList.","lastModifiedDate":"2024-01-27"},{"lineNumber":97,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":98,"author":{"gitId":"alfaloo"},"content":" public List\u003cTask\u003e fetchAll() {","lastModifiedDate":"2024-01-27"},{"lineNumber":99,"author":{"gitId":"alfaloo"},"content":" return this.tasks;","lastModifiedDate":"2024-01-27"},{"lineNumber":100,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":101,"author":{"gitId":"alfaloo"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"alfaloo":101}},{"path":"src/main/java/ui/UI.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"alfaloo"},"content":"package ui;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"alfaloo"},"content":"import tasklist.TaskList;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"alfaloo"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"alfaloo"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"alfaloo"},"content":" * The UI class responsible for handling user interface interactions.","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"alfaloo"},"content":" * It provides methods for printing messages, reading user input, and displaying tasks.","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"alfaloo"},"content":"public class UI {","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"alfaloo"},"content":" * Prints the specified text to the console with an indentation.","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"alfaloo"},"content":" * @param text The text to be printed.","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"alfaloo"},"content":" public static void print(Object text) {","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"alfaloo"},"content":" System.out.println(\"\\t\" + text.toString());","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"alfaloo"},"content":" * Reads the next line of input from the user.","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"alfaloo"},"content":" * @return A String representing the user\u0027s input with leading and trailing whitespaces removed.","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"alfaloo"},"content":" public static String nextLine() {","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"alfaloo"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"alfaloo"},"content":" return scanner.nextLine().strip();","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"alfaloo"},"content":" * Prints the tasks in the provided TaskList with indices.","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"alfaloo"},"content":" * @param tasks The TaskList containing tasks to be printed.","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"alfaloo"},"content":" public static void printTasks(TaskList tasks) {","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"alfaloo"},"content":" UI.print(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"alfaloo"},"content":" for (int i \u003d 0; i \u003c tasks.getSize(); i++) {","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"alfaloo"},"content":" String output \u003d (i + 1) + \".\" + tasks.getTask(i);","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"alfaloo"},"content":" UI.print(output);","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"alfaloo"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"alfaloo":41}},{"path":"src/test/java/parser/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"alfaloo"},"content":"package parser;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"alfaloo"},"content":"import exceptions.InvalidCommandException;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"alfaloo"},"content":"import exceptions.InvalidDateException;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"alfaloo"},"content":"import exceptions.InvalidSlashParameterException;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"alfaloo"},"content":"import exceptions.LuluException;","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"alfaloo"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"alfaloo"},"content":"import command.Command;","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"alfaloo"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"alfaloo"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"alfaloo"},"content":"public class ParserTest {","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"alfaloo"},"content":" @Test","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"alfaloo"},"content":" public void test1() throws LuluException {","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"alfaloo"},"content":" String input \u003d \"event event1 /from 2022-03-04 /to 2024-05-06\";","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"alfaloo"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"alfaloo"},"content":" Command command \u003d parser.parse(input);","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"alfaloo"},"content":" assertEquals(\"event,event1,2022-03-04,2024-05-06,false\", command.getTestData());","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"alfaloo"},"content":" @Test","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"alfaloo"},"content":" public void test2() throws LuluException {","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"alfaloo"},"content":" String input \u003d \"event event1 /from 2022-03-04 /to 2022-03-04\";","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"alfaloo"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"alfaloo"},"content":" Command command \u003d parser.parse(input);","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"alfaloo"},"content":" assertEquals(\"event,event1,2022-03-04,2022-03-04,false\", command.getTestData());","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"alfaloo"},"content":" @Test","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"alfaloo"},"content":" public void test3() throws LuluException {","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"alfaloo"},"content":" String input \u003d \"find deadline 2023-01-02\";","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"alfaloo"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"alfaloo"},"content":" Command command \u003d parser.parse(input);","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"alfaloo"},"content":" assertEquals(\"deadline\", command.getTestData());","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"alfaloo"},"content":" @Test","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"alfaloo"},"content":" public void test4() {","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"alfaloo"},"content":" String input \u003d \"event event1 /from 2022-03-04 /to 2021-03-04\";","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"alfaloo"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"alfaloo"},"content":" assertThrows(InvalidDateException.class, () -\u003e parser.parse(input));","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"alfaloo"},"content":" @Test","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"alfaloo"},"content":" public void test5() {","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"alfaloo"},"content":" String input \u003d \"event\";","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"alfaloo"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"alfaloo"},"content":" assertThrows(InvalidCommandException.class, () -\u003e parser.parse(input));","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"alfaloo"},"content":" @Test","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"alfaloo"},"content":" public void test6() {","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"alfaloo"},"content":" String input \u003d \"event event1 /from 2022-03-04 / 2023-03-04\";","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"alfaloo"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"alfaloo"},"content":" assertThrows(InvalidSlashParameterException.class, () -\u003e parser.parse(input));","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"alfaloo"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"alfaloo":59}},{"path":"src/test/java/task/TaskTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"alfaloo"},"content":"package task;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"alfaloo"},"content":"import exceptions.*;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"alfaloo"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"alfaloo"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"alfaloo"},"content":"import command.Command;","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"alfaloo"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"alfaloo"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"alfaloo"},"content":"public class TaskTest {","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"alfaloo"},"content":" @Test","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"alfaloo"},"content":" public void test1() throws LuluException {","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"alfaloo"},"content":" Task task \u003d new Todo(\"test1\");","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"alfaloo"},"content":" assertEquals(false, task.getStatus());","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"alfaloo"},"content":" @Test","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"alfaloo"},"content":" public void test2() throws LuluException {","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"alfaloo"},"content":" Task task \u003d new Todo(\"test2\");","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"alfaloo"},"content":" task.updateStatus(true);","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"alfaloo"},"content":" assertEquals(true, task.getStatus());","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"alfaloo"},"content":" @Test","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"alfaloo"},"content":" public void test3() throws LuluException {","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"alfaloo"},"content":" Task task \u003d new Todo(\"test3\");","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"alfaloo"},"content":" assertThrows(InvalidStatusUpdateException.class, () -\u003e task.updateStatus(false));","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"alfaloo"},"content":" @Test","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"alfaloo"},"content":" public void test4() {","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"alfaloo"},"content":" Task task \u003d new Deadline(\"test4\", LocalDate.parse(\"2022-01-01\"));","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"alfaloo"},"content":" boolean query \u003d task.queryByDate(LocalDate.parse(\"2022-01-01\"));","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"alfaloo"},"content":" assertEquals(true, query);","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"alfaloo"},"content":" @Test","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"alfaloo"},"content":" public void test5() {","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"alfaloo"},"content":" Task task \u003d new Deadline(\"test5\", LocalDate.parse(\"2022-01-01\"));","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"alfaloo"},"content":" boolean query \u003d task.queryByDate(LocalDate.parse(\"2021-01-01\"));","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"alfaloo"},"content":" assertEquals(false, query);","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"alfaloo"},"content":" @Test","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"alfaloo"},"content":" public void test6() {","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"alfaloo"},"content":" Task task \u003d new Event(\"test6\", LocalDate.parse(\"2020-01-01\"), LocalDate.parse(\"2022-01-01\"));","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"alfaloo"},"content":" boolean query \u003d task.queryByDate(LocalDate.parse(\"2021-01-01\"));","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"alfaloo"},"content":" assertEquals(true, query);","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"alfaloo"},"content":" @Test","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"alfaloo"},"content":" public void test7() {","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"alfaloo"},"content":" Task task \u003d new Event(\"test7\", LocalDate.parse(\"2021-01-01\"), LocalDate.parse(\"2022-01-01\"));","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"alfaloo"},"content":" boolean query \u003d task.queryByDate(LocalDate.parse(\"2020-01-01\"));","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"alfaloo"},"content":" assertEquals(false, query);","lastModifiedDate":"2024-01-27"},{"lineNumber":64,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":65,"author":{"gitId":"alfaloo"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"alfaloo":65}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"alfaloo"},"content":"todo borrow book","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"alfaloo"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"alfaloo"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"alfaloo"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"alfaloo":4}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"alfaloo"},"content":"java -classpath ../bin Lulu \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"alfaloo":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":"alfaloo"},"content":" mainClass.set(\"Lulu\")","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"alfaloo"},"content":" archiveBaseName \u003d \"lulu\"","lastModifiedDate":"2024-01-27"},{"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":{"alfaloo":2,"-":40}},{"path":"src/main/java/Lulu.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"alfaloo"},"content":"import command.Command;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"alfaloo"},"content":"import parser.Parser;","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"alfaloo"},"content":"import storage.Storage;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"alfaloo"},"content":"import tasklist.TaskList;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"alfaloo"},"content":"import ui.UI;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"alfaloo"},"content":"import exceptions.LuluException;","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"alfaloo"},"content":"import exceptions.InvalidCommandException;","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"alfaloo"},"content":"import exceptions.InvalidDateException;","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"alfaloo"},"content":"import exceptions.InvalidSlashParameterException;","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"alfaloo"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"alfaloo"},"content":" * The main class for Lulu, a simple chatbot application.","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"alfaloo"},"content":" * Lulu interacts with the user through a command-line interface (CLI)","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"alfaloo"},"content":" * to perform tasks such as adding, listing, and deleting tasks.","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"alfaloo"},"content":"public class Lulu {","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"alfaloo"},"content":" /** The storage component for managing data persistence. */","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"alfaloo"},"content":" private Storage storage;","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"alfaloo"},"content":" /** The task list for storing and managing tasks. */","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"alfaloo"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"alfaloo"},"content":" /** The parser for interpreting user input and generating commands. */","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"alfaloo"},"content":" private Parser parser;","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"alfaloo"},"content":" * Constructs a new instance of Lulu with default configurations.","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"alfaloo"},"content":" * Initializes the storage, task list, and parser.","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"alfaloo"},"content":" public Lulu() {","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"alfaloo"},"content":" storage \u003d new Storage(\"src/main/java/data/lulu.txt\");","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"alfaloo"},"content":" tasks \u003d new TaskList(storage.retrieveLines());","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"alfaloo"},"content":" parser \u003d new Parser();","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"alfaloo"},"content":" * Listens for user input and responds accordingly until the user exits.","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"alfaloo"},"content":" * Handles various user commands and exceptions during interaction.","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"alfaloo"},"content":" public void respond() {","lastModifiedDate":"2024-01-22"},{"lineNumber":43,"author":{"gitId":"alfaloo"},"content":" while (true) {","lastModifiedDate":"2024-01-22"},{"lineNumber":44,"author":{"gitId":"alfaloo"},"content":" String input \u003d UI.nextLine();","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"alfaloo"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"alfaloo"},"content":" if (input.toLowerCase().equals(\"bye\")) {","lastModifiedDate":"2024-01-22"},{"lineNumber":48,"author":{"gitId":"alfaloo"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":49,"author":{"gitId":"alfaloo"},"content":" } else if (input.toLowerCase().equals(\"list\")) {","lastModifiedDate":"2024-01-22"},{"lineNumber":50,"author":{"gitId":"alfaloo"},"content":" UI.printTasks(this.tasks);","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"alfaloo"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":52,"author":{"gitId":"alfaloo"},"content":" Command command \u003d parser.parse(input);","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"alfaloo"},"content":" command.execute(this.tasks, this.storage);","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":55,"author":{"gitId":"alfaloo"},"content":" } catch (InvalidCommandException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":56,"author":{"gitId":"alfaloo"},"content":" UI.print(\"Sorry, I don\u0027t think I quite understood what you meant...\");","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"alfaloo"},"content":" } catch (InvalidDateException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"alfaloo"},"content":" UI.print(\"Please ensure that you are inputting valid start and end dates.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"alfaloo"},"content":" } catch (InvalidSlashParameterException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"alfaloo"},"content":" UI.print(\"Please ensure that you are inputting valid date parameters.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"alfaloo"},"content":" } catch (LuluException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"alfaloo"},"content":" UI.print(e.getMessage());","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":64,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":65,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":66,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":68,"author":{"gitId":"alfaloo"},"content":" * The main method to run the Lulu chatbot application.","lastModifiedDate":"2024-01-27"},{"lineNumber":69,"author":{"gitId":"alfaloo"},"content":" * Creates an instance of Lulu, starts the application, and handles exceptions.","lastModifiedDate":"2024-01-27"},{"lineNumber":70,"author":{"gitId":"alfaloo"},"content":" * Exits the application with a goodbye message.","lastModifiedDate":"2024-01-27"},{"lineNumber":71,"author":{"gitId":"alfaloo"},"content":" * @param args The command-line arguments (not used).","lastModifiedDate":"2024-01-27"},{"lineNumber":72,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":73,"author":{"gitId":"alfaloo"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-22"},{"lineNumber":74,"author":{"gitId":"alfaloo"},"content":" Lulu chatbot \u003d new Lulu();","lastModifiedDate":"2024-01-22"},{"lineNumber":75,"author":{"gitId":"alfaloo"},"content":" UI.start();","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"alfaloo"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":77,"author":{"gitId":"alfaloo"},"content":" chatbot.respond();","lastModifiedDate":"2024-01-22"},{"lineNumber":78,"author":{"gitId":"alfaloo"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":79,"author":{"gitId":"alfaloo"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-27"},{"lineNumber":80,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":81,"author":{"gitId":"alfaloo"},"content":" UI.exit();","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":83,"author":{"gitId":"alfaloo"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"alfaloo":83}},{"path":"src/main/java/command/AddCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"alfaloo"},"content":"package command;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"alfaloo"},"content":"import task.Task;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"alfaloo"},"content":"import storage.Storage;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"alfaloo"},"content":"import tasklist.TaskList;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"alfaloo"},"content":"import ui.UI;","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"alfaloo"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"alfaloo"},"content":" * The AddCommand class represents a command to add a new task to the task list.","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"alfaloo"},"content":" * It extends the Command class and implements the execute method to carry out the addition of the task.","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"alfaloo"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"alfaloo"},"content":" * The task to be added.","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"alfaloo"},"content":" private Task task;","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"alfaloo"},"content":" * The string representation of the data to be saved in storage.","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"alfaloo"},"content":" private String saveData;","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"alfaloo"},"content":" * Constructs an AddCommand with the specified task and saveData.","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"alfaloo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"alfaloo"},"content":" * @param task The task to be added.","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"alfaloo"},"content":" * @param saveData The string representation of the data to be saved in storage.","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"alfaloo"},"content":" public AddCommand(Task task, String saveData) {","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"alfaloo"},"content":" this.task \u003d task;","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"alfaloo"},"content":" this.saveData \u003d saveData;","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"alfaloo"},"content":" * Executes the AddCommand, adding the task to the task list, saving data in storage,","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"alfaloo"},"content":" * and printing a confirmation message to the user.","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"alfaloo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"alfaloo"},"content":" * @param tasks The TaskList to which the task is added.","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"alfaloo"},"content":" * @param storage The Storage to save the task data.","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"alfaloo"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"alfaloo"},"content":" public void execute(TaskList tasks, Storage storage) {","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"alfaloo"},"content":" tasks.addTask(this.task);","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"alfaloo"},"content":" storage.writeLine(this.saveData);","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"alfaloo"},"content":" UI.print(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"alfaloo"},"content":" UI.print(\"\\t\" + this.task);","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"alfaloo"},"content":" UI.print(String.format(\"Now you have %d tasks in the list.\", tasks.getSize()));","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"alfaloo"},"content":" * Retrieves the string representation of the data to be saved in storage.","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"alfaloo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"alfaloo"},"content":" * @return The saveData string.","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"alfaloo"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"alfaloo"},"content":" public String getTestData() {","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"alfaloo"},"content":" return saveData;","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"alfaloo"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"alfaloo":60}},{"path":"src/main/java/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"alfaloo"},"content":"package command;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"alfaloo"},"content":"import storage.Storage;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"alfaloo"},"content":"import tasklist.TaskList;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"alfaloo"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"alfaloo"},"content":" * An abstract class representing a command in the task management system.","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"alfaloo"},"content":"public abstract class Command {","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"alfaloo"},"content":" * Enum representing various types of commands.","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"alfaloo"},"content":" public enum Types {","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"alfaloo"},"content":" LIST,","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"alfaloo"},"content":" MARK,","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"alfaloo"},"content":" UNMARK,","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"alfaloo"},"content":" DELETE,","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"alfaloo"},"content":" TODO,","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"alfaloo"},"content":" DEADLINE,","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"alfaloo"},"content":" EVENT,","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"alfaloo"},"content":" QUERY,","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"alfaloo"},"content":" FIND;","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"alfaloo"},"content":" * Executes the command, modifying the task list and storage as needed.","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"alfaloo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"alfaloo"},"content":" * @param tasks The {@code TaskList} to be modified.","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"alfaloo"},"content":" * @param storage The {@code Storage} to be modified.","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"alfaloo"},"content":" public abstract void execute(TaskList tasks, Storage storage);","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"alfaloo"},"content":" * Gets test data associated with the command.","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"alfaloo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"alfaloo"},"content":" * @return A string containing test data for the command.","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"alfaloo"},"content":" public abstract String getTestData();","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"alfaloo"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"alfaloo":40}},{"path":"src/main/java/command/ManageCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"alfaloo"},"content":"package command;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"alfaloo"},"content":"import task.Task;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"alfaloo"},"content":"import storage.Storage;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"alfaloo"},"content":"import tasklist.TaskList;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"alfaloo"},"content":"import ui.UI;","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"alfaloo"},"content":"import exceptions.InvalidStatusUpdateException;","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"alfaloo"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"alfaloo"},"content":" * The ManageCommand class represents a command to manage tasks, such as marking, unmarking, or deleting.","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"alfaloo"},"content":" * It extends the Command class and implements the execute method to perform the specified manage action.","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"alfaloo"},"content":"public class ManageCommand extends Command {","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"alfaloo"},"content":" * The type of manage command (MARK, UNMARK, DELETE).","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"alfaloo"},"content":" private Command.Types type;","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"alfaloo"},"content":" * The index of the task to be managed.","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"alfaloo"},"content":" private int index;","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"alfaloo"},"content":" * Constructs a ManageCommand with the specified command type and index.","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"alfaloo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"alfaloo"},"content":" * @param type The type of manage command (MARK, UNMARK, DELETE).","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"alfaloo"},"content":" * @param index The index of the task to be managed.","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"alfaloo"},"content":" public ManageCommand(Command.Types type, int index) {","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"alfaloo"},"content":" this.type \u003d type;","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"alfaloo"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"alfaloo"},"content":" * Executes the ManageCommand, performing the specified manage action on the given task list and storage.","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"alfaloo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"alfaloo"},"content":" * @param tasks The TaskList on which the manage action is performed.","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"alfaloo"},"content":" * @param storage The Storage where changes are saved.","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"alfaloo"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"alfaloo"},"content":" public void execute(TaskList tasks, Storage storage) {","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"alfaloo"},"content":" switch (this.type) {","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"alfaloo"},"content":" case MARK:","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"alfaloo"},"content":" mark(tasks, storage);","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"alfaloo"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"alfaloo"},"content":" case UNMARK:","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"alfaloo"},"content":" unmark(tasks, storage);","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"alfaloo"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"alfaloo"},"content":" case DELETE:","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"alfaloo"},"content":" delete(tasks, storage);","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"alfaloo"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"alfaloo"},"content":" * Retrieves an empty string as test data associated with ManageCommand.","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"alfaloo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"alfaloo"},"content":" * @return An empty string used for testing.","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"alfaloo"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":64,"author":{"gitId":"alfaloo"},"content":" public String getTestData() {","lastModifiedDate":"2024-01-27"},{"lineNumber":65,"author":{"gitId":"alfaloo"},"content":" return \"\";","lastModifiedDate":"2024-01-27"},{"lineNumber":66,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":68,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":69,"author":{"gitId":"alfaloo"},"content":" * Marks the task at the specified index as done, updating its status in the task list and storage.","lastModifiedDate":"2024-01-27"},{"lineNumber":70,"author":{"gitId":"alfaloo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":71,"author":{"gitId":"alfaloo"},"content":" * @param tasks The TaskList from which the task is marked.","lastModifiedDate":"2024-01-27"},{"lineNumber":72,"author":{"gitId":"alfaloo"},"content":" * @param storage The Storage where changes are saved.","lastModifiedDate":"2024-01-27"},{"lineNumber":73,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":74,"author":{"gitId":"alfaloo"},"content":" public void mark(TaskList tasks, Storage storage) {","lastModifiedDate":"2024-01-27"},{"lineNumber":75,"author":{"gitId":"alfaloo"},"content":" if (index \u003e\u003d tasks.getSize() || index \u003c 0) {","lastModifiedDate":"2024-01-27"},{"lineNumber":76,"author":{"gitId":"alfaloo"},"content":" UI.print(\"Oops! You did not give a valid index.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":77,"author":{"gitId":"alfaloo"},"content":" return;","lastModifiedDate":"2024-01-27"},{"lineNumber":78,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":79,"author":{"gitId":"alfaloo"},"content":" Task task \u003d tasks.getTask(this.index);","lastModifiedDate":"2024-01-27"},{"lineNumber":80,"author":{"gitId":"alfaloo"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":81,"author":{"gitId":"alfaloo"},"content":" task.updateStatus(true);","lastModifiedDate":"2024-01-27"},{"lineNumber":82,"author":{"gitId":"alfaloo"},"content":" UI.print(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-27"},{"lineNumber":83,"author":{"gitId":"alfaloo"},"content":" UI.print(task);","lastModifiedDate":"2024-01-27"},{"lineNumber":84,"author":{"gitId":"alfaloo"},"content":" String line \u003d storage.readLine(index);","lastModifiedDate":"2024-01-27"},{"lineNumber":85,"author":{"gitId":"alfaloo"},"content":" String newLine \u003d line.substring(0, line.length() - 5) + \"true\";","lastModifiedDate":"2024-01-27"},{"lineNumber":86,"author":{"gitId":"alfaloo"},"content":" storage.updateLine(index, newLine);","lastModifiedDate":"2024-01-27"},{"lineNumber":87,"author":{"gitId":"alfaloo"},"content":" storage.updateLine(index, newLine);","lastModifiedDate":"2024-01-27"},{"lineNumber":88,"author":{"gitId":"alfaloo"},"content":" } catch (InvalidStatusUpdateException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":89,"author":{"gitId":"alfaloo"},"content":" UI.print(\"This task was already marked!\");","lastModifiedDate":"2024-01-27"},{"lineNumber":90,"author":{"gitId":"alfaloo"},"content":" UI.print(task);","lastModifiedDate":"2024-01-27"},{"lineNumber":91,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":92,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":93,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":94,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":95,"author":{"gitId":"alfaloo"},"content":" * Unmarks the task at the specified index, updating its status in the task list and storage.","lastModifiedDate":"2024-01-27"},{"lineNumber":96,"author":{"gitId":"alfaloo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":97,"author":{"gitId":"alfaloo"},"content":" * @param tasks The TaskList from which the task is unmarked.","lastModifiedDate":"2024-01-27"},{"lineNumber":98,"author":{"gitId":"alfaloo"},"content":" * @param storage The Storage where changes are saved.","lastModifiedDate":"2024-01-27"},{"lineNumber":99,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":100,"author":{"gitId":"alfaloo"},"content":" public void unmark(TaskList tasks, Storage storage) {","lastModifiedDate":"2024-01-27"},{"lineNumber":101,"author":{"gitId":"alfaloo"},"content":" if (index \u003e\u003d tasks.getSize() || index \u003c 0) {","lastModifiedDate":"2024-01-27"},{"lineNumber":102,"author":{"gitId":"alfaloo"},"content":" UI.print(\"Oops! You did not give a valid index.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":103,"author":{"gitId":"alfaloo"},"content":" return;","lastModifiedDate":"2024-01-27"},{"lineNumber":104,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":105,"author":{"gitId":"alfaloo"},"content":" Task task \u003d tasks.getTask(index);","lastModifiedDate":"2024-01-27"},{"lineNumber":106,"author":{"gitId":"alfaloo"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":107,"author":{"gitId":"alfaloo"},"content":" task.updateStatus(false);","lastModifiedDate":"2024-01-27"},{"lineNumber":108,"author":{"gitId":"alfaloo"},"content":" UI.print(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-27"},{"lineNumber":109,"author":{"gitId":"alfaloo"},"content":" UI.print(task);","lastModifiedDate":"2024-01-27"},{"lineNumber":110,"author":{"gitId":"alfaloo"},"content":" String line \u003d storage.readLine(index);","lastModifiedDate":"2024-01-27"},{"lineNumber":111,"author":{"gitId":"alfaloo"},"content":" String newLine \u003d line.substring(0, line.length() - 4) + \"false\";","lastModifiedDate":"2024-01-27"},{"lineNumber":112,"author":{"gitId":"alfaloo"},"content":" storage.updateLine(index, newLine);","lastModifiedDate":"2024-01-27"},{"lineNumber":113,"author":{"gitId":"alfaloo"},"content":" } catch (InvalidStatusUpdateException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":114,"author":{"gitId":"alfaloo"},"content":" UI.print(\"This task was already unmarked!\");","lastModifiedDate":"2024-01-27"},{"lineNumber":115,"author":{"gitId":"alfaloo"},"content":" UI.print(task);","lastModifiedDate":"2024-01-27"},{"lineNumber":116,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":117,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":118,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":119,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":120,"author":{"gitId":"alfaloo"},"content":" * Deletes the task at the specified index, removing it from the task list and storage.","lastModifiedDate":"2024-01-27"},{"lineNumber":121,"author":{"gitId":"alfaloo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":122,"author":{"gitId":"alfaloo"},"content":" * @param tasks The TaskList from which the task is deleted.","lastModifiedDate":"2024-01-27"},{"lineNumber":123,"author":{"gitId":"alfaloo"},"content":" * @param storage The Storage where changes are saved.","lastModifiedDate":"2024-01-27"},{"lineNumber":124,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":125,"author":{"gitId":"alfaloo"},"content":" public void delete(TaskList tasks, Storage storage) {","lastModifiedDate":"2024-01-27"},{"lineNumber":126,"author":{"gitId":"alfaloo"},"content":" if (index \u003e\u003d tasks.getSize() || index \u003c 0) {","lastModifiedDate":"2024-01-27"},{"lineNumber":127,"author":{"gitId":"alfaloo"},"content":" UI.print(\"Oops! You did not give a valid index.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":128,"author":{"gitId":"alfaloo"},"content":" return;","lastModifiedDate":"2024-01-27"},{"lineNumber":129,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":130,"author":{"gitId":"alfaloo"},"content":" Task removed \u003d tasks.deleteTask(index);","lastModifiedDate":"2024-01-27"},{"lineNumber":131,"author":{"gitId":"alfaloo"},"content":" storage.deleteLine(index);","lastModifiedDate":"2024-01-27"},{"lineNumber":132,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":133,"author":{"gitId":"alfaloo"},"content":" UI.print(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-27"},{"lineNumber":134,"author":{"gitId":"alfaloo"},"content":" UI.print(\"\\t\" + removed);","lastModifiedDate":"2024-01-27"},{"lineNumber":135,"author":{"gitId":"alfaloo"},"content":" UI.print(String.format(\"Now you have %d tasks in the list.\", tasks.getSize()));","lastModifiedDate":"2024-01-27"},{"lineNumber":136,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":137,"author":{"gitId":"alfaloo"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"alfaloo":137}},{"path":"src/main/java/command/QueryCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"alfaloo"},"content":"package command;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"alfaloo"},"content":"import task.Deadline;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"alfaloo"},"content":"import task.Event;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"alfaloo"},"content":"import task.Task;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"alfaloo"},"content":"import storage.Storage;","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"alfaloo"},"content":"import tasklist.TaskList;","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"alfaloo"},"content":"import ui.UI;","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"alfaloo"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"alfaloo"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"alfaloo"},"content":"import java.time.format.FormatStyle;","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"alfaloo"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"alfaloo"},"content":" * The QueryCommand class represents a command to query tasks based on type and date.","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"alfaloo"},"content":" * It extends the Command class and implements the execute method to perform the specified query action.","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"alfaloo"},"content":"public class QueryCommand extends Command {","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"alfaloo"},"content":" * The type of query command.","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"alfaloo"},"content":" private Command.Types commandType;","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"alfaloo"},"content":" * The type of task to be queried (deadline, event).","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"alfaloo"},"content":" private String query;","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"alfaloo"},"content":" * The date used for querying tasks.","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"alfaloo"},"content":" private LocalDate date;","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"alfaloo"},"content":" * Constructs a QueryCommand with the specified command type, query type, and date.","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"alfaloo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"alfaloo"},"content":" * @param commandType The type of query command.","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"alfaloo"},"content":" * @param query The type of task to be queried (deadline, event).","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"alfaloo"},"content":" * @param date The date used for querying tasks.","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"alfaloo"},"content":" public QueryCommand(Command.Types commandType, String query, LocalDate date) {","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"alfaloo"},"content":" this.commandType \u003d commandType;","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"alfaloo"},"content":" this.query \u003d query;","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"alfaloo"},"content":" this.date \u003d date;","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"alfaloo"},"content":" * Executes the QueryCommand, performing the specified query action on the given task list and storage.","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"alfaloo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"alfaloo"},"content":" * @param tasks The TaskList on which the query action is performed.","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"alfaloo"},"content":" * @param storage The Storage where changes are saved.","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"alfaloo"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"alfaloo"},"content":" public void execute(TaskList tasks, Storage storage) {","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"alfaloo"},"content":" switch (this.commandType) {","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"alfaloo"},"content":" case QUERY:","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"alfaloo"},"content":" query(tasks);","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"alfaloo"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"alfaloo"},"content":" case FIND:","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"alfaloo"},"content":" find(tasks);","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"alfaloo"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":64,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":65,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":66,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"alfaloo"},"content":" * Retrieves the query type as test data associated with QueryCommand.","lastModifiedDate":"2024-01-27"},{"lineNumber":68,"author":{"gitId":"alfaloo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":69,"author":{"gitId":"alfaloo"},"content":" * @return The query type used for testing.","lastModifiedDate":"2024-01-27"},{"lineNumber":70,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":71,"author":{"gitId":"alfaloo"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":72,"author":{"gitId":"alfaloo"},"content":" public String getTestData() {","lastModifiedDate":"2024-01-27"},{"lineNumber":73,"author":{"gitId":"alfaloo"},"content":" return this.query;","lastModifiedDate":"2024-01-27"},{"lineNumber":74,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":75,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":76,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":77,"author":{"gitId":"alfaloo"},"content":" * Finds tasks based on the specified query type and date, printing the results to the UI.","lastModifiedDate":"2024-01-27"},{"lineNumber":78,"author":{"gitId":"alfaloo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":79,"author":{"gitId":"alfaloo"},"content":" * @param tasks The TaskList from which tasks are queried.","lastModifiedDate":"2024-01-27"},{"lineNumber":80,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":81,"author":{"gitId":"alfaloo"},"content":" public void query(TaskList tasks) {","lastModifiedDate":"2024-01-27"},{"lineNumber":82,"author":{"gitId":"alfaloo"},"content":" String formattedDate \u003d this.date.format(DateTimeFormatter.ofLocalizedDate(FormatStyle.LONG));","lastModifiedDate":"2024-01-27"},{"lineNumber":83,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":84,"author":{"gitId":"alfaloo"},"content":" if (this.query.equals(\"deadline\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":85,"author":{"gitId":"alfaloo"},"content":" UI.print(\"Below are deadlines that are due on \" + formattedDate);","lastModifiedDate":"2024-01-27"},{"lineNumber":86,"author":{"gitId":"alfaloo"},"content":" for (Task task : tasks.fetchAll()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":87,"author":{"gitId":"alfaloo"},"content":" if (task instanceof Deadline \u0026\u0026 task.queryByDate(this.date)) {","lastModifiedDate":"2024-01-27"},{"lineNumber":88,"author":{"gitId":"alfaloo"},"content":" UI.print(task);","lastModifiedDate":"2024-01-27"},{"lineNumber":89,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":90,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":91,"author":{"gitId":"alfaloo"},"content":" } else if (this.query.equals(\"event\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":92,"author":{"gitId":"alfaloo"},"content":" UI.print(\"Below are events that are operating on \" + formattedDate);","lastModifiedDate":"2024-01-27"},{"lineNumber":93,"author":{"gitId":"alfaloo"},"content":" for (Task task : tasks.fetchAll()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":94,"author":{"gitId":"alfaloo"},"content":" if (task instanceof Event \u0026\u0026 task.queryByDate(date)) {","lastModifiedDate":"2024-01-27"},{"lineNumber":95,"author":{"gitId":"alfaloo"},"content":" UI.print(task);","lastModifiedDate":"2024-01-27"},{"lineNumber":96,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":97,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":98,"author":{"gitId":"alfaloo"},"content":" } else {","lastModifiedDate":"2024-01-27"},{"lineNumber":99,"author":{"gitId":"alfaloo"},"content":" UI.print(\"Could not query given task type\");","lastModifiedDate":"2024-01-27"},{"lineNumber":100,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":101,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":102,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":103,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":104,"author":{"gitId":"alfaloo"},"content":" * Finds and prints tasks in the task list that match the specified query.","lastModifiedDate":"2024-01-27"},{"lineNumber":105,"author":{"gitId":"alfaloo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":106,"author":{"gitId":"alfaloo"},"content":" * @param tasks The TaskList from which tasks are queried.","lastModifiedDate":"2024-01-27"},{"lineNumber":107,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":108,"author":{"gitId":"alfaloo"},"content":" public void find(TaskList tasks) {","lastModifiedDate":"2024-01-27"},{"lineNumber":109,"author":{"gitId":"alfaloo"},"content":" UI.print(\"Here are the matching tasks in your list:\");","lastModifiedDate":"2024-01-27"},{"lineNumber":110,"author":{"gitId":"alfaloo"},"content":" int index \u003d 1;","lastModifiedDate":"2024-01-27"},{"lineNumber":111,"author":{"gitId":"alfaloo"},"content":" for (Task task : tasks.fetchAll()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":112,"author":{"gitId":"alfaloo"},"content":" if (task.getName().contains(this.query)) {","lastModifiedDate":"2024-01-27"},{"lineNumber":113,"author":{"gitId":"alfaloo"},"content":" UI.print(index + \".\" + task);","lastModifiedDate":"2024-01-27"},{"lineNumber":114,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":115,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":116,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":117,"author":{"gitId":"alfaloo"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"alfaloo":117}},{"path":"src/main/java/data/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"alfaloo"},"content":"todo todo1","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"alfaloo"},"content":"deadline deadline1 /by 2023-01-02","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"alfaloo"},"content":"event event1 /from 2022-03-04 /to 2024-05-06","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"alfaloo"},"content":"todo todo2","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"alfaloo":4}},{"path":"src/main/java/data/lulu.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"alfaloo"},"content":"todo,todo1,false","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"alfaloo"},"content":"event,event1,2022-03-04,2024-05-06,false","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"alfaloo"},"content":"todo,bye,true","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"alfaloo"},"content":"todo,great day,false","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"alfaloo"},"content":"todo,great week,false","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"alfaloo"},"content":"todo,thats great,false","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"alfaloo":6}},{"path":"src/main/java/exceptions/InvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"alfaloo"},"content":"package exceptions;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"alfaloo"},"content":"public class InvalidCommandException extends LuluException {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"alfaloo"},"content":" public InvalidCommandException() {","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"alfaloo"},"content":" super(\"Could not decipher input string\");","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"alfaloo"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"alfaloo":7}},{"path":"src/main/java/exceptions/InvalidDateException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"alfaloo"},"content":"package exceptions;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"alfaloo"},"content":"public class InvalidDateException extends LuluException{","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"alfaloo"},"content":" public InvalidDateException() {","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"alfaloo"},"content":" super(\"Invalid date detected\");","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"alfaloo"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"alfaloo":7}},{"path":"src/main/java/exceptions/InvalidSlashParameterException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"alfaloo"},"content":"package exceptions;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"alfaloo"},"content":"public class InvalidSlashParameterException extends LuluException {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"alfaloo"},"content":" public InvalidSlashParameterException() {","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"alfaloo"},"content":" super(\"Could not decipher command after slash\");","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"alfaloo"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"alfaloo":7}},{"path":"src/main/java/exceptions/InvalidStatusUpdateException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"alfaloo"},"content":"package exceptions;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"alfaloo"},"content":"public class InvalidStatusUpdateException extends LuluException {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"alfaloo"},"content":" public InvalidStatusUpdateException() {","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"alfaloo"},"content":" super(\"Status was already updated to desired value\");","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"alfaloo"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"alfaloo":7}},{"path":"src/main/java/exceptions/LuluException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"alfaloo"},"content":"package exceptions;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"alfaloo"},"content":"public class LuluException extends Exception {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"alfaloo"},"content":" public LuluException(String message) {","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"alfaloo"},"content":" super(message);","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"alfaloo"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"alfaloo":7}},{"path":"src/main/java/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"alfaloo"},"content":"package parser;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"alfaloo"},"content":"import task.Deadline;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"alfaloo"},"content":"import task.Event;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"alfaloo"},"content":"import task.Todo;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"alfaloo"},"content":"import command.AddCommand;","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"alfaloo"},"content":"import command.Command;","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"alfaloo"},"content":"import command.ManageCommand;","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"alfaloo"},"content":"import command.QueryCommand;","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"alfaloo"},"content":"import exceptions.LuluException;","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"alfaloo"},"content":"import exceptions.InvalidCommandException;","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"alfaloo"},"content":"import exceptions.InvalidDateException;","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"alfaloo"},"content":"import exceptions.InvalidSlashParameterException;","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"alfaloo"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"alfaloo"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"alfaloo"},"content":" * The Parser class is responsible for parsing user input and creating corresponding Command objects.","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"alfaloo"},"content":" * It includes methods for parsing various commands such as adding, managing, and querying tasks.","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"alfaloo"},"content":"public class Parser {","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"alfaloo"},"content":" * Parses the input string and creates the corresponding Command object.","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"alfaloo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"alfaloo"},"content":" * @param input The user input string.","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"alfaloo"},"content":" * @return The Command object based on the parsed input.","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"alfaloo"},"content":" * @throws LuluException If an error occurs during parsing.","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"alfaloo"},"content":" public Command parse(String input) throws LuluException {","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"alfaloo"},"content":" String firstWord \u003d input.split(\" \")[0];","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"alfaloo"},"content":" if (input.toLowerCase().equals(\"list\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"alfaloo"},"content":" return manageTasks(Command.Types.LIST, input);","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"alfaloo"},"content":" } else if (firstWord.equals(\"mark\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"alfaloo"},"content":" return manageTasks(Command.Types.MARK, input);","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"alfaloo"},"content":" } else if (firstWord.equals(\"unmark\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"alfaloo"},"content":" return manageTasks(Command.Types.UNMARK, input);","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"alfaloo"},"content":" } else if (firstWord.equals(\"delete\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"alfaloo"},"content":" return manageTasks(Command.Types.DELETE, input);","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"alfaloo"},"content":" } else if (firstWord.equals(\"todo\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"alfaloo"},"content":" return addTasks(Command.Types.TODO, input);","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"alfaloo"},"content":" } else if (firstWord.equals(\"deadline\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"alfaloo"},"content":" return addTasks(Command.Types.DEADLINE, input);","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"alfaloo"},"content":" } else if (firstWord.equals(\"event\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"alfaloo"},"content":" return addTasks(Command.Types.EVENT, input);","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"alfaloo"},"content":" } else if (firstWord.equals(\"query\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"alfaloo"},"content":" return manageTasks(Command.Types.QUERY, input);","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"alfaloo"},"content":" } else if (firstWord.equals(\"find\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"alfaloo"},"content":" return manageTasks(Command.Types.FIND, input);","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"alfaloo"},"content":" } else {","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"alfaloo"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"alfaloo"},"content":" * Creates a ManageCommand object based on the specified command type and input.","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"alfaloo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"alfaloo"},"content":" * @param command The type of ManageCommand (MARK, UNMARK, DELETE, FIND).","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"alfaloo"},"content":" * @param input The user input string.","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"alfaloo"},"content":" * @return The ManageCommand object.","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"alfaloo"},"content":" * @throws LuluException If an error occurs during parsing.","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":64,"author":{"gitId":"alfaloo"},"content":" public Command manageTasks(Command.Types command, String input) throws LuluException {","lastModifiedDate":"2024-01-27"},{"lineNumber":65,"author":{"gitId":"alfaloo"},"content":" switch (command) {","lastModifiedDate":"2024-01-27"},{"lineNumber":66,"author":{"gitId":"alfaloo"},"content":" case MARK:","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"alfaloo"},"content":" return mark(input);","lastModifiedDate":"2024-01-27"},{"lineNumber":68,"author":{"gitId":"alfaloo"},"content":" case UNMARK:","lastModifiedDate":"2024-01-27"},{"lineNumber":69,"author":{"gitId":"alfaloo"},"content":" return unmark(input);","lastModifiedDate":"2024-01-27"},{"lineNumber":70,"author":{"gitId":"alfaloo"},"content":" case DELETE:","lastModifiedDate":"2024-01-27"},{"lineNumber":71,"author":{"gitId":"alfaloo"},"content":" return delete(input);","lastModifiedDate":"2024-01-27"},{"lineNumber":72,"author":{"gitId":"alfaloo"},"content":" case QUERY:","lastModifiedDate":"2024-01-27"},{"lineNumber":73,"author":{"gitId":"alfaloo"},"content":" return query(input);","lastModifiedDate":"2024-01-27"},{"lineNumber":74,"author":{"gitId":"alfaloo"},"content":" case FIND:","lastModifiedDate":"2024-01-27"},{"lineNumber":75,"author":{"gitId":"alfaloo"},"content":" return find(input);","lastModifiedDate":"2024-01-27"},{"lineNumber":76,"author":{"gitId":"alfaloo"},"content":" default:","lastModifiedDate":"2024-01-27"},{"lineNumber":77,"author":{"gitId":"alfaloo"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2024-01-27"},{"lineNumber":78,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":79,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":80,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":81,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":82,"author":{"gitId":"alfaloo"},"content":" * Creates an AddCommand object based on the specified command type and input.","lastModifiedDate":"2024-01-27"},{"lineNumber":83,"author":{"gitId":"alfaloo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":84,"author":{"gitId":"alfaloo"},"content":" * @param command The type of AddCommand (TODO, DEADLINE, EVENT).","lastModifiedDate":"2024-01-27"},{"lineNumber":85,"author":{"gitId":"alfaloo"},"content":" * @param input The user input string.","lastModifiedDate":"2024-01-27"},{"lineNumber":86,"author":{"gitId":"alfaloo"},"content":" * @return The AddCommand object.","lastModifiedDate":"2024-01-27"},{"lineNumber":87,"author":{"gitId":"alfaloo"},"content":" * @throws LuluException If an error occurs during parsing.","lastModifiedDate":"2024-01-27"},{"lineNumber":88,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":89,"author":{"gitId":"alfaloo"},"content":" public Command addTasks(Command.Types command, String input) throws LuluException {","lastModifiedDate":"2024-01-27"},{"lineNumber":90,"author":{"gitId":"alfaloo"},"content":" switch (command) {","lastModifiedDate":"2024-01-27"},{"lineNumber":91,"author":{"gitId":"alfaloo"},"content":" case TODO:","lastModifiedDate":"2024-01-27"},{"lineNumber":92,"author":{"gitId":"alfaloo"},"content":" return todo(input);","lastModifiedDate":"2024-01-27"},{"lineNumber":93,"author":{"gitId":"alfaloo"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-27"},{"lineNumber":94,"author":{"gitId":"alfaloo"},"content":" return deadline(input);","lastModifiedDate":"2024-01-27"},{"lineNumber":95,"author":{"gitId":"alfaloo"},"content":" case EVENT:","lastModifiedDate":"2024-01-27"},{"lineNumber":96,"author":{"gitId":"alfaloo"},"content":" return event(input);","lastModifiedDate":"2024-01-27"},{"lineNumber":97,"author":{"gitId":"alfaloo"},"content":" default:","lastModifiedDate":"2024-01-27"},{"lineNumber":98,"author":{"gitId":"alfaloo"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2024-01-27"},{"lineNumber":99,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":100,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":101,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":102,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":103,"author":{"gitId":"alfaloo"},"content":" * Parses the input string for a MARK command and creates the corresponding ManageCommand object.","lastModifiedDate":"2024-01-27"},{"lineNumber":104,"author":{"gitId":"alfaloo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":105,"author":{"gitId":"alfaloo"},"content":" * @param input The user input string.","lastModifiedDate":"2024-01-27"},{"lineNumber":106,"author":{"gitId":"alfaloo"},"content":" * @return The ManageCommand object for marking a task.","lastModifiedDate":"2024-01-27"},{"lineNumber":107,"author":{"gitId":"alfaloo"},"content":" * @throws LuluException If an error occurs during parsing.","lastModifiedDate":"2024-01-27"},{"lineNumber":108,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":109,"author":{"gitId":"alfaloo"},"content":" public Command mark(String input) throws LuluException {","lastModifiedDate":"2024-01-27"},{"lineNumber":110,"author":{"gitId":"alfaloo"},"content":" String[] words \u003d input.split(\" \");","lastModifiedDate":"2024-01-27"},{"lineNumber":111,"author":{"gitId":"alfaloo"},"content":" if (words.length \u003c\u003d 1) {","lastModifiedDate":"2024-01-27"},{"lineNumber":112,"author":{"gitId":"alfaloo"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2024-01-27"},{"lineNumber":113,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":114,"author":{"gitId":"alfaloo"},"content":" int index \u003d Integer.valueOf(words[1]) - 1;","lastModifiedDate":"2024-01-27"},{"lineNumber":115,"author":{"gitId":"alfaloo"},"content":" return new ManageCommand(Command.Types.MARK, index);","lastModifiedDate":"2024-01-27"},{"lineNumber":116,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":117,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":118,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":119,"author":{"gitId":"alfaloo"},"content":" * Parses the input string for an UNMARK command and creates the corresponding ManageCommand object.","lastModifiedDate":"2024-01-27"},{"lineNumber":120,"author":{"gitId":"alfaloo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":121,"author":{"gitId":"alfaloo"},"content":" * @param input The user input string.","lastModifiedDate":"2024-01-27"},{"lineNumber":122,"author":{"gitId":"alfaloo"},"content":" * @return The ManageCommand object for unmarking a task.","lastModifiedDate":"2024-01-27"},{"lineNumber":123,"author":{"gitId":"alfaloo"},"content":" * @throws LuluException If an error occurs during parsing.","lastModifiedDate":"2024-01-27"},{"lineNumber":124,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":125,"author":{"gitId":"alfaloo"},"content":" public Command unmark(String input) throws LuluException {","lastModifiedDate":"2024-01-27"},{"lineNumber":126,"author":{"gitId":"alfaloo"},"content":" String[] words \u003d input.split(\" \");","lastModifiedDate":"2024-01-27"},{"lineNumber":127,"author":{"gitId":"alfaloo"},"content":" if (words.length \u003c\u003d 1) {","lastModifiedDate":"2024-01-27"},{"lineNumber":128,"author":{"gitId":"alfaloo"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2024-01-27"},{"lineNumber":129,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":130,"author":{"gitId":"alfaloo"},"content":" int index \u003d Integer.valueOf(words[1]) - 1;","lastModifiedDate":"2024-01-27"},{"lineNumber":131,"author":{"gitId":"alfaloo"},"content":" return new ManageCommand(Command.Types.UNMARK, index);","lastModifiedDate":"2024-01-27"},{"lineNumber":132,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":133,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":134,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":135,"author":{"gitId":"alfaloo"},"content":" * Parses the input string for a DELETE command and creates the corresponding ManageCommand object.","lastModifiedDate":"2024-01-27"},{"lineNumber":136,"author":{"gitId":"alfaloo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":137,"author":{"gitId":"alfaloo"},"content":" * @param input The user input string.","lastModifiedDate":"2024-01-27"},{"lineNumber":138,"author":{"gitId":"alfaloo"},"content":" * @return The ManageCommand object for deleting a task.","lastModifiedDate":"2024-01-27"},{"lineNumber":139,"author":{"gitId":"alfaloo"},"content":" * @throws LuluException If an error occurs during parsing.","lastModifiedDate":"2024-01-27"},{"lineNumber":140,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":141,"author":{"gitId":"alfaloo"},"content":" public Command delete(String input) throws LuluException {","lastModifiedDate":"2024-01-27"},{"lineNumber":142,"author":{"gitId":"alfaloo"},"content":" String[] words \u003d input.split(\" \");","lastModifiedDate":"2024-01-27"},{"lineNumber":143,"author":{"gitId":"alfaloo"},"content":" if (words.length \u003c\u003d 1) {","lastModifiedDate":"2024-01-27"},{"lineNumber":144,"author":{"gitId":"alfaloo"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2024-01-27"},{"lineNumber":145,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":146,"author":{"gitId":"alfaloo"},"content":" int index \u003d Integer.valueOf(words[1]) - 1;","lastModifiedDate":"2024-01-27"},{"lineNumber":147,"author":{"gitId":"alfaloo"},"content":" return new ManageCommand(Command.Types.DELETE, index);","lastModifiedDate":"2024-01-27"},{"lineNumber":148,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":149,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":150,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":151,"author":{"gitId":"alfaloo"},"content":" * Parses the input string for a FIND command and creates the corresponding QueryCommand object.","lastModifiedDate":"2024-01-27"},{"lineNumber":152,"author":{"gitId":"alfaloo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":153,"author":{"gitId":"alfaloo"},"content":" * @param input The user input string.","lastModifiedDate":"2024-01-27"},{"lineNumber":154,"author":{"gitId":"alfaloo"},"content":" * @return The QueryCommand object for finding tasks.","lastModifiedDate":"2024-01-27"},{"lineNumber":155,"author":{"gitId":"alfaloo"},"content":" * @throws LuluException If an error occurs during parsing.","lastModifiedDate":"2024-01-27"},{"lineNumber":156,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":157,"author":{"gitId":"alfaloo"},"content":" public Command query(String input) throws LuluException {","lastModifiedDate":"2024-01-27"},{"lineNumber":158,"author":{"gitId":"alfaloo"},"content":" String[] words \u003d input.split(\" \");","lastModifiedDate":"2024-01-27"},{"lineNumber":159,"author":{"gitId":"alfaloo"},"content":" if (words.length \u003c\u003d 2) {","lastModifiedDate":"2024-01-27"},{"lineNumber":160,"author":{"gitId":"alfaloo"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2024-01-27"},{"lineNumber":161,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":162,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":163,"author":{"gitId":"alfaloo"},"content":" String taskType \u003d words[1].toLowerCase();","lastModifiedDate":"2024-01-27"},{"lineNumber":164,"author":{"gitId":"alfaloo"},"content":" LocalDate date \u003d LocalDate.parse(words[2]);","lastModifiedDate":"2024-01-27"},{"lineNumber":165,"author":{"gitId":"alfaloo"},"content":" return new QueryCommand(Command.Types.QUERY, taskType, date);","lastModifiedDate":"2024-01-27"},{"lineNumber":166,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":167,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":168,"author":{"gitId":"alfaloo"},"content":" public Command find(String input) throws LuluException {","lastModifiedDate":"2024-01-27"},{"lineNumber":169,"author":{"gitId":"alfaloo"},"content":" String[] words \u003d input.split(\" \");","lastModifiedDate":"2024-01-27"},{"lineNumber":170,"author":{"gitId":"alfaloo"},"content":" if (words.length \u003c\u003d 1) {","lastModifiedDate":"2024-01-27"},{"lineNumber":171,"author":{"gitId":"alfaloo"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2024-01-27"},{"lineNumber":172,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":173,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":174,"author":{"gitId":"alfaloo"},"content":" String queryString \u003d words[1].toLowerCase();","lastModifiedDate":"2024-01-27"},{"lineNumber":175,"author":{"gitId":"alfaloo"},"content":" return new QueryCommand(Command.Types.FIND, queryString, null);","lastModifiedDate":"2024-01-27"},{"lineNumber":176,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":177,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":178,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":179,"author":{"gitId":"alfaloo"},"content":" * Parses the input string for a TODO command and creates the corresponding AddCommand object.","lastModifiedDate":"2024-01-27"},{"lineNumber":180,"author":{"gitId":"alfaloo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":181,"author":{"gitId":"alfaloo"},"content":" * @param input The user input string.","lastModifiedDate":"2024-01-27"},{"lineNumber":182,"author":{"gitId":"alfaloo"},"content":" * @return The AddCommand object for adding a Todo task.","lastModifiedDate":"2024-01-27"},{"lineNumber":183,"author":{"gitId":"alfaloo"},"content":" * @throws LuluException If an error occurs during parsing.","lastModifiedDate":"2024-01-27"},{"lineNumber":184,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":185,"author":{"gitId":"alfaloo"},"content":" public Command todo(String input) throws LuluException {","lastModifiedDate":"2024-01-27"},{"lineNumber":186,"author":{"gitId":"alfaloo"},"content":" if (input.split(\" \").length \u003c\u003d 1) {","lastModifiedDate":"2024-01-27"},{"lineNumber":187,"author":{"gitId":"alfaloo"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2024-01-27"},{"lineNumber":188,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":189,"author":{"gitId":"alfaloo"},"content":" String name \u003d input.substring(5).strip();","lastModifiedDate":"2024-01-27"},{"lineNumber":190,"author":{"gitId":"alfaloo"},"content":" Todo todo \u003d new Todo(name);","lastModifiedDate":"2024-01-27"},{"lineNumber":191,"author":{"gitId":"alfaloo"},"content":" String data \u003d String.format(\"todo,%s,%b\", name, todo.getStatus());","lastModifiedDate":"2024-01-27"},{"lineNumber":192,"author":{"gitId":"alfaloo"},"content":" Command command \u003d new AddCommand(todo, data);","lastModifiedDate":"2024-01-27"},{"lineNumber":193,"author":{"gitId":"alfaloo"},"content":" return command;","lastModifiedDate":"2024-01-27"},{"lineNumber":194,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":195,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":196,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":197,"author":{"gitId":"alfaloo"},"content":" * Parses the input string for a DEADLINE command and creates the corresponding AddCommand object.","lastModifiedDate":"2024-01-27"},{"lineNumber":198,"author":{"gitId":"alfaloo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":199,"author":{"gitId":"alfaloo"},"content":" * @param input The user input string.","lastModifiedDate":"2024-01-27"},{"lineNumber":200,"author":{"gitId":"alfaloo"},"content":" * @return The AddCommand object for adding a Deadline task.","lastModifiedDate":"2024-01-27"},{"lineNumber":201,"author":{"gitId":"alfaloo"},"content":" * @throws LuluException If an error occurs during parsing.","lastModifiedDate":"2024-01-27"},{"lineNumber":202,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":203,"author":{"gitId":"alfaloo"},"content":" public Command deadline(String input) throws LuluException {","lastModifiedDate":"2024-01-27"},{"lineNumber":204,"author":{"gitId":"alfaloo"},"content":" if (input.split(\" \").length \u003c\u003d 1) {","lastModifiedDate":"2024-01-27"},{"lineNumber":205,"author":{"gitId":"alfaloo"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2024-01-27"},{"lineNumber":206,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":207,"author":{"gitId":"alfaloo"},"content":" int indexBy \u003d input.indexOf(\u0027/\u0027);","lastModifiedDate":"2024-01-27"},{"lineNumber":208,"author":{"gitId":"alfaloo"},"content":" if (!input.substring(indexBy + 1).split(\" \")[0].equals(\"by\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":209,"author":{"gitId":"alfaloo"},"content":" throw new InvalidSlashParameterException();","lastModifiedDate":"2024-01-27"},{"lineNumber":210,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":211,"author":{"gitId":"alfaloo"},"content":" String name \u003d input.substring(9, indexBy).strip();","lastModifiedDate":"2024-01-27"},{"lineNumber":212,"author":{"gitId":"alfaloo"},"content":" String by \u003d input.substring(indexBy + 3).strip();","lastModifiedDate":"2024-01-27"},{"lineNumber":213,"author":{"gitId":"alfaloo"},"content":" Deadline deadline \u003d new Deadline(name, LocalDate.parse(by));","lastModifiedDate":"2024-01-27"},{"lineNumber":214,"author":{"gitId":"alfaloo"},"content":" String data \u003d String.format(\"deadline,%s,%s,%b\", name, by, deadline.getStatus());","lastModifiedDate":"2024-01-27"},{"lineNumber":215,"author":{"gitId":"alfaloo"},"content":" Command command \u003d new AddCommand(deadline, data);","lastModifiedDate":"2024-01-27"},{"lineNumber":216,"author":{"gitId":"alfaloo"},"content":" return command;","lastModifiedDate":"2024-01-27"},{"lineNumber":217,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":218,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":219,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":220,"author":{"gitId":"alfaloo"},"content":" * Parses the input string for an EVENT command and creates the corresponding AddCommand object.","lastModifiedDate":"2024-01-27"},{"lineNumber":221,"author":{"gitId":"alfaloo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":222,"author":{"gitId":"alfaloo"},"content":" * @param input The user input string.","lastModifiedDate":"2024-01-27"},{"lineNumber":223,"author":{"gitId":"alfaloo"},"content":" * @return The AddCommand object for adding an Event task.","lastModifiedDate":"2024-01-27"},{"lineNumber":224,"author":{"gitId":"alfaloo"},"content":" * @throws LuluException If an error occurs during parsing.","lastModifiedDate":"2024-01-27"},{"lineNumber":225,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":226,"author":{"gitId":"alfaloo"},"content":" public Command event(String input) throws LuluException {","lastModifiedDate":"2024-01-27"},{"lineNumber":227,"author":{"gitId":"alfaloo"},"content":" if (input.split(\" \").length \u003c\u003d 1) {","lastModifiedDate":"2024-01-27"},{"lineNumber":228,"author":{"gitId":"alfaloo"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2024-01-27"},{"lineNumber":229,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":230,"author":{"gitId":"alfaloo"},"content":" int indexFrom \u003d input.indexOf(\u0027/\u0027);","lastModifiedDate":"2024-01-27"},{"lineNumber":231,"author":{"gitId":"alfaloo"},"content":" int indexTo \u003d input.indexOf(\u0027/\u0027, indexFrom + 1);","lastModifiedDate":"2024-01-27"},{"lineNumber":232,"author":{"gitId":"alfaloo"},"content":" if (!input.substring(indexFrom + 1).split(\" \")[0].equals(\"from\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":233,"author":{"gitId":"alfaloo"},"content":" throw new InvalidSlashParameterException();","lastModifiedDate":"2024-01-27"},{"lineNumber":234,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":235,"author":{"gitId":"alfaloo"},"content":" if (!input.substring(indexTo + 1).split(\" \")[0].equals(\"to\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":236,"author":{"gitId":"alfaloo"},"content":" throw new InvalidSlashParameterException();","lastModifiedDate":"2024-01-27"},{"lineNumber":237,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":238,"author":{"gitId":"alfaloo"},"content":" String name \u003d input.substring(6, indexFrom).strip();","lastModifiedDate":"2024-01-27"},{"lineNumber":239,"author":{"gitId":"alfaloo"},"content":" String from \u003d input.substring(indexFrom + 5, indexTo).strip();","lastModifiedDate":"2024-01-27"},{"lineNumber":240,"author":{"gitId":"alfaloo"},"content":" String to \u003d input.substring(indexTo + 3).strip();","lastModifiedDate":"2024-01-27"},{"lineNumber":241,"author":{"gitId":"alfaloo"},"content":" if (LocalDate.parse(to).isBefore(LocalDate.parse(from))) {","lastModifiedDate":"2024-01-27"},{"lineNumber":242,"author":{"gitId":"alfaloo"},"content":" throw new InvalidDateException();","lastModifiedDate":"2024-01-27"},{"lineNumber":243,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":244,"author":{"gitId":"alfaloo"},"content":" Event event \u003d new Event(name, LocalDate.parse(from), LocalDate.parse(to));","lastModifiedDate":"2024-01-27"},{"lineNumber":245,"author":{"gitId":"alfaloo"},"content":" String data \u003d String.format(\"event,%s,%s,%s,%b\", name, from, to, event.getStatus());","lastModifiedDate":"2024-01-27"},{"lineNumber":246,"author":{"gitId":"alfaloo"},"content":" Command command \u003d new AddCommand(event, data);","lastModifiedDate":"2024-01-27"},{"lineNumber":247,"author":{"gitId":"alfaloo"},"content":" return command;","lastModifiedDate":"2024-01-27"},{"lineNumber":248,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":249,"author":{"gitId":"alfaloo"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"alfaloo":249}},{"path":"src/main/java/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"alfaloo"},"content":"package storage;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"alfaloo"},"content":"import ui.UI;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"alfaloo"},"content":"import java.io.File;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"alfaloo"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"alfaloo"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"alfaloo"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"alfaloo"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"alfaloo"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"alfaloo"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"alfaloo"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"alfaloo"},"content":"import java.util.List;","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"alfaloo"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"alfaloo"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"alfaloo"},"content":" * The Storage class handles reading from and writing to a file for data persistence.","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"alfaloo"},"content":" * It provides methods for retrieving lines, writing a line, reading a line by index,","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"alfaloo"},"content":" * updating a line, and deleting a line from the stored data.","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"alfaloo"},"content":"public class Storage {","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"alfaloo"},"content":" /** The file path for data storage. */","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"alfaloo"},"content":" private String filePath;","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"alfaloo"},"content":" /** The File object representing the file for data storage. */","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"alfaloo"},"content":" private File file;","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"alfaloo"},"content":" /** The Path object representing the file path. */","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"alfaloo"},"content":" private Path path;","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"alfaloo"},"content":" * Constructs a Storage object with the specified file path.","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"alfaloo"},"content":" * Initializes the File and Path objects for data storage.","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"alfaloo"},"content":" * @param filePath The path to the file for data storage.","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"alfaloo"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"alfaloo"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"alfaloo"},"content":" this.file \u003d new File(filePath);","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"alfaloo"},"content":" this.path \u003d Path.of(this.filePath);","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"alfaloo"},"content":" * Retrieves all lines from the stored data in the file.","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"alfaloo"},"content":" * @return A List of strings representing the lines from the file.","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"alfaloo"},"content":" public List\u003cString\u003e retrieveLines() {","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"alfaloo"},"content":" List\u003cString\u003e result \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"alfaloo"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"alfaloo"},"content":" Scanner scanner \u003d new Scanner(this.file);","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"alfaloo"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"alfaloo"},"content":" result.add(scanner.nextLine());","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"alfaloo"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"alfaloo"},"content":" UI.print(\"Invalid file path provided, session will not be saved.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"alfaloo"},"content":" return result;","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"alfaloo"},"content":" * Writes a line of data to the file for data storage.","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"alfaloo"},"content":" * @param data The data to be written to the file.","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":64,"author":{"gitId":"alfaloo"},"content":" public void writeLine(String data) {","lastModifiedDate":"2024-01-27"},{"lineNumber":65,"author":{"gitId":"alfaloo"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":66,"author":{"gitId":"alfaloo"},"content":" BufferedWriter writer \u003d new BufferedWriter(new FileWriter(this.file, true));","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"alfaloo"},"content":" writer.write(data);","lastModifiedDate":"2024-01-27"},{"lineNumber":68,"author":{"gitId":"alfaloo"},"content":" writer.newLine();","lastModifiedDate":"2024-01-27"},{"lineNumber":69,"author":{"gitId":"alfaloo"},"content":" writer.close();","lastModifiedDate":"2024-01-27"},{"lineNumber":70,"author":{"gitId":"alfaloo"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":71,"author":{"gitId":"alfaloo"},"content":" UI.print(e.getMessage());","lastModifiedDate":"2024-01-27"},{"lineNumber":72,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":73,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":74,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":75,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":76,"author":{"gitId":"alfaloo"},"content":" * Reads a line from the stored data based on the specified index.","lastModifiedDate":"2024-01-27"},{"lineNumber":77,"author":{"gitId":"alfaloo"},"content":" * @param index The index of the line to be read.","lastModifiedDate":"2024-01-27"},{"lineNumber":78,"author":{"gitId":"alfaloo"},"content":" * @return The string representing the line at the specified index.","lastModifiedDate":"2024-01-27"},{"lineNumber":79,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":80,"author":{"gitId":"alfaloo"},"content":" public String readLine(int index) {","lastModifiedDate":"2024-01-27"},{"lineNumber":81,"author":{"gitId":"alfaloo"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":82,"author":{"gitId":"alfaloo"},"content":" Scanner scanner \u003d new Scanner(this.file);","lastModifiedDate":"2024-01-27"},{"lineNumber":83,"author":{"gitId":"alfaloo"},"content":" int i \u003d 0;","lastModifiedDate":"2024-01-27"},{"lineNumber":84,"author":{"gitId":"alfaloo"},"content":" String line \u003d \"\";","lastModifiedDate":"2024-01-27"},{"lineNumber":85,"author":{"gitId":"alfaloo"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":86,"author":{"gitId":"alfaloo"},"content":" line \u003d scanner.nextLine();","lastModifiedDate":"2024-01-27"},{"lineNumber":87,"author":{"gitId":"alfaloo"},"content":" if (i \u003d\u003d index) {","lastModifiedDate":"2024-01-27"},{"lineNumber":88,"author":{"gitId":"alfaloo"},"content":" return line;","lastModifiedDate":"2024-01-27"},{"lineNumber":89,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":90,"author":{"gitId":"alfaloo"},"content":" i++;","lastModifiedDate":"2024-01-27"},{"lineNumber":91,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":92,"author":{"gitId":"alfaloo"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":93,"author":{"gitId":"alfaloo"},"content":" UI.print(e.getMessage());","lastModifiedDate":"2024-01-27"},{"lineNumber":94,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":95,"author":{"gitId":"alfaloo"},"content":" return null;","lastModifiedDate":"2024-01-27"},{"lineNumber":96,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":97,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":98,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":99,"author":{"gitId":"alfaloo"},"content":" * Updates a line in the stored data based on the specified index.","lastModifiedDate":"2024-01-27"},{"lineNumber":100,"author":{"gitId":"alfaloo"},"content":" * @param index The index of the line to be updated.","lastModifiedDate":"2024-01-27"},{"lineNumber":101,"author":{"gitId":"alfaloo"},"content":" * @param data The updated data to replace the existing line.","lastModifiedDate":"2024-01-27"},{"lineNumber":102,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":103,"author":{"gitId":"alfaloo"},"content":" public void updateLine(int index, String data) {","lastModifiedDate":"2024-01-27"},{"lineNumber":104,"author":{"gitId":"alfaloo"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":105,"author":{"gitId":"alfaloo"},"content":" List\u003cString\u003e lines \u003d Files.readAllLines(this.path);","lastModifiedDate":"2024-01-27"},{"lineNumber":106,"author":{"gitId":"alfaloo"},"content":" lines.set(index, data);","lastModifiedDate":"2024-01-27"},{"lineNumber":107,"author":{"gitId":"alfaloo"},"content":" BufferedWriter writer \u003d new BufferedWriter(new FileWriter(this.file, false));","lastModifiedDate":"2024-01-27"},{"lineNumber":108,"author":{"gitId":"alfaloo"},"content":" writer.write(\"\");","lastModifiedDate":"2024-01-27"},{"lineNumber":109,"author":{"gitId":"alfaloo"},"content":" writer \u003d new BufferedWriter(new FileWriter(this.file, true));","lastModifiedDate":"2024-01-27"},{"lineNumber":110,"author":{"gitId":"alfaloo"},"content":" for (String str : lines) {","lastModifiedDate":"2024-01-27"},{"lineNumber":111,"author":{"gitId":"alfaloo"},"content":" writer.write(str);","lastModifiedDate":"2024-01-27"},{"lineNumber":112,"author":{"gitId":"alfaloo"},"content":" writer.newLine();","lastModifiedDate":"2024-01-27"},{"lineNumber":113,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":114,"author":{"gitId":"alfaloo"},"content":" writer.close();","lastModifiedDate":"2024-01-27"},{"lineNumber":115,"author":{"gitId":"alfaloo"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":116,"author":{"gitId":"alfaloo"},"content":" UI.print(e.getMessage());","lastModifiedDate":"2024-01-27"},{"lineNumber":117,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":118,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":119,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":120,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":121,"author":{"gitId":"alfaloo"},"content":" * Deletes a line from the stored data based on the specified index.","lastModifiedDate":"2024-01-27"},{"lineNumber":122,"author":{"gitId":"alfaloo"},"content":" * @param index The index of the line to be deleted.","lastModifiedDate":"2024-01-27"},{"lineNumber":123,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":124,"author":{"gitId":"alfaloo"},"content":" public void deleteLine(int index) {","lastModifiedDate":"2024-01-27"},{"lineNumber":125,"author":{"gitId":"alfaloo"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":126,"author":{"gitId":"alfaloo"},"content":" List\u003cString\u003e lines \u003d Files.readAllLines(this.path);","lastModifiedDate":"2024-01-27"},{"lineNumber":127,"author":{"gitId":"alfaloo"},"content":" lines.remove(index);","lastModifiedDate":"2024-01-27"},{"lineNumber":128,"author":{"gitId":"alfaloo"},"content":" BufferedWriter writer \u003d new BufferedWriter(new FileWriter(this.file, false));","lastModifiedDate":"2024-01-27"},{"lineNumber":129,"author":{"gitId":"alfaloo"},"content":" writer.write(\"\");","lastModifiedDate":"2024-01-27"},{"lineNumber":130,"author":{"gitId":"alfaloo"},"content":" writer \u003d new BufferedWriter(new FileWriter(this.file, true));","lastModifiedDate":"2024-01-27"},{"lineNumber":131,"author":{"gitId":"alfaloo"},"content":" for (String str : lines) {","lastModifiedDate":"2024-01-27"},{"lineNumber":132,"author":{"gitId":"alfaloo"},"content":" writer.write(str);","lastModifiedDate":"2024-01-27"},{"lineNumber":133,"author":{"gitId":"alfaloo"},"content":" writer.newLine();","lastModifiedDate":"2024-01-27"},{"lineNumber":134,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":135,"author":{"gitId":"alfaloo"},"content":" writer.close();","lastModifiedDate":"2024-01-27"},{"lineNumber":136,"author":{"gitId":"alfaloo"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":137,"author":{"gitId":"alfaloo"},"content":" UI.print(e.getMessage());","lastModifiedDate":"2024-01-27"},{"lineNumber":138,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":139,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":140,"author":{"gitId":"alfaloo"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"alfaloo":140}},{"path":"src/main/java/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"alfaloo"},"content":"package task;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"alfaloo"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"alfaloo"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"alfaloo"},"content":"import java.time.format.FormatStyle;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"alfaloo"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"alfaloo"},"content":" * The Deadline class represents a task with a specific end date.","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"alfaloo"},"content":" * It extends the Task class and includes methods to query by date and provide a formatted string representation.","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"alfaloo"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"alfaloo"},"content":" /** The end date of the deadline. */","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"alfaloo"},"content":" private LocalDate endDate;","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"alfaloo"},"content":" * Constructs a Deadline task with the specified name and end date.","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"alfaloo"},"content":" * @param name The name of the deadline.","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"alfaloo"},"content":" * @param endDate The end date of the deadline.","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"alfaloo"},"content":" public Deadline(String name, LocalDate endDate) {","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"alfaloo"},"content":" super(name);","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"alfaloo"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"alfaloo"},"content":" * Queries whether the deadline occurs on the specified date.","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"alfaloo"},"content":" * @param date The date to be queried.","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"alfaloo"},"content":" * @return true if the deadline occurs on the specified date, false otherwise.","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"alfaloo"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"alfaloo"},"content":" public boolean queryByDate(LocalDate date) {","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"alfaloo"},"content":" return date.isEqual(this.endDate);","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"alfaloo"},"content":" * Provides a formatted string representation of the Deadline task.","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"alfaloo"},"content":" * @return A string representing the Deadline task in a readable format.","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"alfaloo"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"alfaloo"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":42,"author":{"gitId":"alfaloo"},"content":" String by \u003d this.endDate.format(DateTimeFormatter.ofLocalizedDate(FormatStyle.LONG));","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"alfaloo"},"content":" return String.format(\"[D]%s %s (by: %s)\", (super.isMarked ? \"[X]\" : \"[ ]\"), super.name, by);","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":45,"author":{"gitId":"alfaloo"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"alfaloo":45}},{"path":"src/main/java/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"alfaloo"},"content":"package task;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"alfaloo"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"alfaloo"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"alfaloo"},"content":"import java.time.format.FormatStyle;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"alfaloo"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"alfaloo"},"content":" * The Event class represents a task with a start date and an end date.","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"alfaloo"},"content":" * It extends the Task class and includes methods to query by date and provide a formatted string representation.","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"alfaloo"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"alfaloo"},"content":" /** The start date of the event. */","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"alfaloo"},"content":" private LocalDate startDate;","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"alfaloo"},"content":" /** The end date of the event. */","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"alfaloo"},"content":" private LocalDate endDate;","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"alfaloo"},"content":" * Constructs an Event task with the specified name, start date, and end date.","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"alfaloo"},"content":" * @param name The name of the event.","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"alfaloo"},"content":" * @param startDate The start date of the event.","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"alfaloo"},"content":" * @param endDate The end date of the event.","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"alfaloo"},"content":" public Event(String name, LocalDate startDate, LocalDate endDate) {","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"alfaloo"},"content":" super(name);","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"alfaloo"},"content":" this.startDate \u003d startDate;","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"alfaloo"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"alfaloo"},"content":" * Queries whether the event occurs on the specified date.","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"alfaloo"},"content":" * @param date The date to be queried.","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"alfaloo"},"content":" * @return true if the event occurs on the specified date, false otherwise.","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"alfaloo"},"content":" public boolean queryByDate(LocalDate date) {","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"alfaloo"},"content":" return (date.isAfter(this.startDate) \u0026\u0026 date.isBefore(this.endDate)) || date.isEqual(this.startDate) || date.isEqual(this.endDate);","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"alfaloo"},"content":" * Provides a formatted string representation of the Event task.","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"alfaloo"},"content":" * @return A string representing the Event task in a readable format.","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"alfaloo"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":45,"author":{"gitId":"alfaloo"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":46,"author":{"gitId":"alfaloo"},"content":" String from \u003d this.startDate.format(DateTimeFormatter.ofLocalizedDate(FormatStyle.LONG));","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"alfaloo"},"content":" String to \u003d this.endDate.format(DateTimeFormatter.ofLocalizedDate(FormatStyle.LONG));","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"alfaloo"},"content":" return String.format(\"[E]%s %s (from: %s to: %s)\", (super.isMarked ? \"[X]\" : \"[ ]\"), super.name, from, to);","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":50,"author":{"gitId":"alfaloo"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"alfaloo":50}},{"path":"src/main/java/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"alfaloo"},"content":"package task;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"alfaloo"},"content":"import exceptions.InvalidStatusUpdateException;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"alfaloo"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"alfaloo"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"alfaloo"},"content":" * The {@code Task} class represents a generic task with a name and a status.","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"alfaloo"},"content":" * It provides methods to update the task\u0027s status, get the task\u0027s name,","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"alfaloo"},"content":" * get the task\u0027s status, query the task by date, and retrieve a string","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"alfaloo"},"content":" * representation of the task.","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"alfaloo"},"content":"public class Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"alfaloo"},"content":" /** The name of the task. */","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"alfaloo"},"content":" protected String name;","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"alfaloo"},"content":" /** The status of the task (marked or unmarked). */","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"alfaloo"},"content":" protected boolean isMarked;","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"alfaloo"},"content":" * Constructs a new task with the specified name and initializes","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"alfaloo"},"content":" * its status as unmarked.","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"alfaloo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"alfaloo"},"content":" * @param name The name of the task.","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"alfaloo"},"content":" public Task(String name) {","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"alfaloo"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"alfaloo"},"content":" this.isMarked \u003d false;","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"alfaloo"},"content":" * Updates the status of the task.","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"alfaloo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"alfaloo"},"content":" * @param status The new status of the task (true if marked, false if unmarked).","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"alfaloo"},"content":" * @throws InvalidStatusUpdateException If the new status is the same as the current status.","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"alfaloo"},"content":" public void updateStatus(boolean status) throws InvalidStatusUpdateException {","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"alfaloo"},"content":" if (this.isMarked \u003d\u003d status) {","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"alfaloo"},"content":" throw new InvalidStatusUpdateException();","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"alfaloo"},"content":" this.isMarked \u003d status;","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":44,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":45,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"alfaloo"},"content":" * Gets the name of the task.","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"alfaloo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"alfaloo"},"content":" * @return The name of the task.","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"alfaloo"},"content":" public String getName() {","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"alfaloo"},"content":" return this.name;","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"alfaloo"},"content":" * Gets the status of the task.","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"alfaloo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"alfaloo"},"content":" * @return The status of the task (true if marked, false if unmarked).","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"alfaloo"},"content":" public boolean getStatus() {","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"alfaloo"},"content":" return this.isMarked;","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":64,"author":{"gitId":"alfaloo"},"content":" * Queries the task by date. This method is overridden by subclasses.","lastModifiedDate":"2024-01-27"},{"lineNumber":65,"author":{"gitId":"alfaloo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":66,"author":{"gitId":"alfaloo"},"content":" * @param date The date to query.","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"alfaloo"},"content":" * @return {@code true} if the task is relevant to the specified date, {@code false} otherwise.","lastModifiedDate":"2024-01-27"},{"lineNumber":68,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":69,"author":{"gitId":"alfaloo"},"content":" public boolean queryByDate(LocalDate date) {","lastModifiedDate":"2024-01-27"},{"lineNumber":70,"author":{"gitId":"alfaloo"},"content":" return false;","lastModifiedDate":"2024-01-27"},{"lineNumber":71,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":72,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":73,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":74,"author":{"gitId":"alfaloo"},"content":" * Returns a string representation of the task.","lastModifiedDate":"2024-01-27"},{"lineNumber":75,"author":{"gitId":"alfaloo"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":76,"author":{"gitId":"alfaloo"},"content":" * @return A string representation of the task.","lastModifiedDate":"2024-01-27"},{"lineNumber":77,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":78,"author":{"gitId":"alfaloo"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":79,"author":{"gitId":"alfaloo"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":80,"author":{"gitId":"alfaloo"},"content":" return \"[T]\" + (this.isMarked ? \"[X] \" : \"[ ] \") + this.name;","lastModifiedDate":"2024-01-27"},{"lineNumber":81,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":82,"author":{"gitId":"alfaloo"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"alfaloo":82}},{"path":"src/main/java/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"alfaloo"},"content":"package task;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"alfaloo"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"alfaloo"},"content":" * The Todo class represents a simple task without a specific date.","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"alfaloo"},"content":" * It extends the Task class and provides a formatted string representation.","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"alfaloo"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"alfaloo"},"content":" * Constructs a Todo task with the specified name.","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"alfaloo"},"content":" * @param name The name of the todo task.","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"alfaloo"},"content":" public Todo(String name) {","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"alfaloo"},"content":" super(name);","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"alfaloo"},"content":" * Provides a formatted string representation of the Todo task.","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"alfaloo"},"content":" * @return A string representing the Todo task in a readable format.","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"alfaloo"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"alfaloo"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"alfaloo"},"content":" return \"[T]\" + (super.isMarked ? \"[X] \" : \"[ ] \") + super.name;","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"alfaloo"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"alfaloo":25}},{"path":"src/main/java/tasklist/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"alfaloo"},"content":"package tasklist;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"alfaloo"},"content":"import task.Deadline;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"alfaloo"},"content":"import task.Event;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"alfaloo"},"content":"import task.Task;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"alfaloo"},"content":"import task.Todo;","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"alfaloo"},"content":"import ui.UI;","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"alfaloo"},"content":"import exceptions.InvalidStatusUpdateException;","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"alfaloo"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"alfaloo"},"content":"import java.util.List;","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"alfaloo"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"alfaloo"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"alfaloo"},"content":" * The TaskList class manages a list of tasks and provides methods","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"alfaloo"},"content":" * to add, retrieve, delete, and fetch tasks from the list.","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"alfaloo"},"content":"public class TaskList {","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"alfaloo"},"content":" /** The list of tasks managed by the TaskList. */","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"alfaloo"},"content":" private List\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"alfaloo"},"content":" * Constructs a TaskList based on the data provided.","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"alfaloo"},"content":" * Parses the input data and initializes the list of tasks accordingly.","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"alfaloo"},"content":" * @param data The list of strings representing task data.","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"alfaloo"},"content":" public TaskList(List\u003cString\u003e data) {","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"alfaloo"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"alfaloo"},"content":" for (String line : data) {","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"alfaloo"},"content":" String[] words \u003d line.split(\",\");","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"alfaloo"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"alfaloo"},"content":" if (words[0].equals(\"todo\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"alfaloo"},"content":" Todo todo \u003d new Todo(words[1]);","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"alfaloo"},"content":" if (words[2].equals(\"true\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"alfaloo"},"content":" todo.updateStatus(true);","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"alfaloo"},"content":" this.tasks.add(todo);","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"alfaloo"},"content":" } else if (words[0].equals(\"deadline\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"alfaloo"},"content":" Deadline deadline \u003d new Deadline(words[1], LocalDate.parse(words[2]));","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"alfaloo"},"content":" if (words[3].equals(\"true\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"alfaloo"},"content":" deadline.updateStatus(true);","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"alfaloo"},"content":" this.tasks.add(deadline);","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"alfaloo"},"content":" } else if (words[0].equals(\"event\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"alfaloo"},"content":" Event event \u003d new Event(words[1], LocalDate.parse(words[2]), LocalDate.parse(words[3]));","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"alfaloo"},"content":" if (words[4].equals(\"true\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"alfaloo"},"content":" event.updateStatus(true);","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"alfaloo"},"content":" this.tasks.add(event);","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"alfaloo"},"content":" } catch (InvalidStatusUpdateException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"alfaloo"},"content":" UI.print(e.getMessage());","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"alfaloo"},"content":" * Adds a task to the TaskList.","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"alfaloo"},"content":" * @param task The task to be added.","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"alfaloo"},"content":" * @return true if the task is successfully added.","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":64,"author":{"gitId":"alfaloo"},"content":" public boolean addTask(Task task) {","lastModifiedDate":"2024-01-27"},{"lineNumber":65,"author":{"gitId":"alfaloo"},"content":" return this.tasks.add(task);","lastModifiedDate":"2024-01-27"},{"lineNumber":66,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":68,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":69,"author":{"gitId":"alfaloo"},"content":" * Retrieves a task from the TaskList based on the specified index.","lastModifiedDate":"2024-01-27"},{"lineNumber":70,"author":{"gitId":"alfaloo"},"content":" * @param index The index of the task to be retrieved.","lastModifiedDate":"2024-01-27"},{"lineNumber":71,"author":{"gitId":"alfaloo"},"content":" * @return The task at the specified index.","lastModifiedDate":"2024-01-27"},{"lineNumber":72,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":73,"author":{"gitId":"alfaloo"},"content":" public Task getTask(int index) {","lastModifiedDate":"2024-01-27"},{"lineNumber":74,"author":{"gitId":"alfaloo"},"content":" return this.tasks.get(index);","lastModifiedDate":"2024-01-27"},{"lineNumber":75,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":76,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":77,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":78,"author":{"gitId":"alfaloo"},"content":" * Deletes a task from the TaskList based on the specified index.","lastModifiedDate":"2024-01-27"},{"lineNumber":79,"author":{"gitId":"alfaloo"},"content":" * @param index The index of the task to be deleted.","lastModifiedDate":"2024-01-27"},{"lineNumber":80,"author":{"gitId":"alfaloo"},"content":" * @return The task that was removed from the TaskList.","lastModifiedDate":"2024-01-27"},{"lineNumber":81,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":82,"author":{"gitId":"alfaloo"},"content":" public Task deleteTask(int index) {","lastModifiedDate":"2024-01-27"},{"lineNumber":83,"author":{"gitId":"alfaloo"},"content":" return this.tasks.remove(index);","lastModifiedDate":"2024-01-27"},{"lineNumber":84,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":85,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":86,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":87,"author":{"gitId":"alfaloo"},"content":" * Gets the number of tasks in the TaskList.","lastModifiedDate":"2024-01-27"},{"lineNumber":88,"author":{"gitId":"alfaloo"},"content":" * @return The size of the TaskList.","lastModifiedDate":"2024-01-27"},{"lineNumber":89,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":90,"author":{"gitId":"alfaloo"},"content":" public int getSize() {","lastModifiedDate":"2024-01-27"},{"lineNumber":91,"author":{"gitId":"alfaloo"},"content":" return this.tasks.size();","lastModifiedDate":"2024-01-27"},{"lineNumber":92,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":93,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":94,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":95,"author":{"gitId":"alfaloo"},"content":" * Fetches all tasks from the TaskList.","lastModifiedDate":"2024-01-27"},{"lineNumber":96,"author":{"gitId":"alfaloo"},"content":" * @return A List containing all tasks in the TaskList.","lastModifiedDate":"2024-01-27"},{"lineNumber":97,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":98,"author":{"gitId":"alfaloo"},"content":" public List\u003cTask\u003e fetchAll() {","lastModifiedDate":"2024-01-27"},{"lineNumber":99,"author":{"gitId":"alfaloo"},"content":" return this.tasks;","lastModifiedDate":"2024-01-27"},{"lineNumber":100,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":101,"author":{"gitId":"alfaloo"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"alfaloo":101}},{"path":"src/main/java/ui/UI.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"alfaloo"},"content":"package ui;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"alfaloo"},"content":"import tasklist.TaskList;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"alfaloo"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"alfaloo"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"alfaloo"},"content":" * The UI class responsible for handling user interface interactions.","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"alfaloo"},"content":" * It provides methods for printing messages, reading user input, and displaying tasks.","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"alfaloo"},"content":"public class UI {","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"alfaloo"},"content":" * Prints the specified text to the console with an indentation.","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"alfaloo"},"content":" * @param text The text to be printed.","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"alfaloo"},"content":" public static void print(Object text) {","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"alfaloo"},"content":" System.out.println(\"\\t\" + text.toString());","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"alfaloo"},"content":" * Initiates the Lulu application.","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"alfaloo"},"content":" * Prints a welcome message to the user.","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"alfaloo"},"content":" public static void start() {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"alfaloo"},"content":" UI.print(\"Hello! I\u0027m Lulu \\n\\tWhat can I do for you?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"alfaloo"},"content":" * Exits the Lulu application.","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"alfaloo"},"content":" * Prints a goodbye message to the user.","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"alfaloo"},"content":" public static void exit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"alfaloo"},"content":" UI.print(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"alfaloo"},"content":" * Reads the next line of input from the user.","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"alfaloo"},"content":" * @return A String representing the user\u0027s input with leading and trailing whitespaces removed.","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"alfaloo"},"content":" public static String nextLine() {","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"alfaloo"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"alfaloo"},"content":" return scanner.nextLine().strip();","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"alfaloo"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"alfaloo"},"content":" * Prints the tasks in the provided TaskList with indices.","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"alfaloo"},"content":" * @param tasks The TaskList containing tasks to be printed.","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"alfaloo"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"alfaloo"},"content":" public static void printTasks(TaskList tasks) {","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"alfaloo"},"content":" UI.print(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"alfaloo"},"content":" for (int i \u003d 0; i \u003c tasks.getSize(); i++) {","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"alfaloo"},"content":" String output \u003d (i + 1) + \".\" + tasks.getTask(i);","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"alfaloo"},"content":" UI.print(output);","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"alfaloo"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"alfaloo":57}},{"path":"src/test/java/parser/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"alfaloo"},"content":"package parser;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"alfaloo"},"content":"import exceptions.InvalidCommandException;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"alfaloo"},"content":"import exceptions.InvalidDateException;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"alfaloo"},"content":"import exceptions.InvalidSlashParameterException;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"alfaloo"},"content":"import exceptions.LuluException;","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"alfaloo"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"alfaloo"},"content":"import command.Command;","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"alfaloo"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"alfaloo"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"alfaloo"},"content":"public class ParserTest {","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"alfaloo"},"content":" @Test","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"alfaloo"},"content":" public void test1() throws LuluException {","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"alfaloo"},"content":" String input \u003d \"event event1 /from 2022-03-04 /to 2024-05-06\";","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"alfaloo"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"alfaloo"},"content":" Command command \u003d parser.parse(input);","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"alfaloo"},"content":" assertEquals(\"event,event1,2022-03-04,2024-05-06,false\", command.getTestData());","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"alfaloo"},"content":" @Test","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"alfaloo"},"content":" public void test2() throws LuluException {","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"alfaloo"},"content":" String input \u003d \"event event1 /from 2022-03-04 /to 2022-03-04\";","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"alfaloo"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"alfaloo"},"content":" Command command \u003d parser.parse(input);","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"alfaloo"},"content":" assertEquals(\"event,event1,2022-03-04,2022-03-04,false\", command.getTestData());","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"alfaloo"},"content":" @Test","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"alfaloo"},"content":" public void test3() throws LuluException {","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"alfaloo"},"content":" String input \u003d \"find deadline 2023-01-02\";","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"alfaloo"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"alfaloo"},"content":" Command command \u003d parser.parse(input);","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"alfaloo"},"content":" assertEquals(\"deadline\", command.getTestData());","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"alfaloo"},"content":" @Test","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"alfaloo"},"content":" public void test4() {","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"alfaloo"},"content":" String input \u003d \"event event1 /from 2022-03-04 /to 2021-03-04\";","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"alfaloo"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"alfaloo"},"content":" assertThrows(InvalidDateException.class, () -\u003e parser.parse(input));","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"alfaloo"},"content":" @Test","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"alfaloo"},"content":" public void test5() {","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"alfaloo"},"content":" String input \u003d \"event\";","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"alfaloo"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"alfaloo"},"content":" assertThrows(InvalidCommandException.class, () -\u003e parser.parse(input));","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"alfaloo"},"content":" @Test","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"alfaloo"},"content":" public void test6() {","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"alfaloo"},"content":" String input \u003d \"event event1 /from 2022-03-04 / 2023-03-04\";","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"alfaloo"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"alfaloo"},"content":" assertThrows(InvalidSlashParameterException.class, () -\u003e parser.parse(input));","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"alfaloo"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"alfaloo":59}},{"path":"src/test/java/task/TaskTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"alfaloo"},"content":"package task;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"alfaloo"},"content":"import exceptions.*;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"alfaloo"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"alfaloo"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"alfaloo"},"content":"import command.Command;","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"alfaloo"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"alfaloo"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"alfaloo"},"content":"public class TaskTest {","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"alfaloo"},"content":" @Test","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"alfaloo"},"content":" public void test1() throws LuluException {","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"alfaloo"},"content":" Task task \u003d new Todo(\"test1\");","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"alfaloo"},"content":" assertEquals(false, task.getStatus());","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"alfaloo"},"content":" @Test","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"alfaloo"},"content":" public void test2() throws LuluException {","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"alfaloo"},"content":" Task task \u003d new Todo(\"test2\");","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"alfaloo"},"content":" task.updateStatus(true);","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"alfaloo"},"content":" assertEquals(true, task.getStatus());","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"alfaloo"},"content":" @Test","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"alfaloo"},"content":" public void test3() throws LuluException {","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"alfaloo"},"content":" Task task \u003d new Todo(\"test3\");","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"alfaloo"},"content":" assertThrows(InvalidStatusUpdateException.class, () -\u003e task.updateStatus(false));","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"alfaloo"},"content":" @Test","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"alfaloo"},"content":" public void test4() {","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"alfaloo"},"content":" Task task \u003d new Deadline(\"test4\", LocalDate.parse(\"2022-01-01\"));","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"alfaloo"},"content":" boolean query \u003d task.queryByDate(LocalDate.parse(\"2022-01-01\"));","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"alfaloo"},"content":" assertEquals(true, query);","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"alfaloo"},"content":" @Test","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"alfaloo"},"content":" public void test5() {","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"alfaloo"},"content":" Task task \u003d new Deadline(\"test5\", LocalDate.parse(\"2022-01-01\"));","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"alfaloo"},"content":" boolean query \u003d task.queryByDate(LocalDate.parse(\"2021-01-01\"));","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"alfaloo"},"content":" assertEquals(false, query);","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"alfaloo"},"content":" @Test","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"alfaloo"},"content":" public void test6() {","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"alfaloo"},"content":" Task task \u003d new Event(\"test6\", LocalDate.parse(\"2020-01-01\"), LocalDate.parse(\"2022-01-01\"));","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"alfaloo"},"content":" boolean query \u003d task.queryByDate(LocalDate.parse(\"2021-01-01\"));","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"alfaloo"},"content":" assertEquals(true, query);","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"alfaloo"},"content":" @Test","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"alfaloo"},"content":" public void test7() {","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"alfaloo"},"content":" Task task \u003d new Event(\"test7\", LocalDate.parse(\"2021-01-01\"), LocalDate.parse(\"2022-01-01\"));","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"alfaloo"},"content":" boolean query \u003d task.queryByDate(LocalDate.parse(\"2020-01-01\"));","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"alfaloo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"alfaloo"},"content":" assertEquals(false, query);","lastModifiedDate":"2024-01-27"},{"lineNumber":64,"author":{"gitId":"alfaloo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":65,"author":{"gitId":"alfaloo"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"alfaloo":65}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"alfaloo"},"content":"todo borrow book","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"alfaloo"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"alfaloo"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"alfaloo"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"alfaloo":4}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"alfaloo"},"content":"java -classpath ../bin Lulu \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"alfaloo":1,"-":37}}] diff --git a/alfaloo_ip_master/commits.json b/alfaloo_ip_master/commits.json index a1da492e..8e69ec60 100644 --- a/alfaloo_ip_master/commits.json +++ b/alfaloo_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"alfaloo":[{"date":"2024-01-22","commitResults":[{"hash":"eb59145e3996f1f38f9d1042e66b010e8b146f2f","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":0}}},{"hash":"35e97ba6af98f214bdc1af59aba82cdd7d7bfdb1","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"aced5fdac38144e7a3086fc7fd51a5b723f1a07c","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"352867d8e82df2fc92aba1648fb2fcf4b8466084","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"447af0bbfe23a39b5b8de85c2224433139c5b992","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"6f583dab214e70e60a12f2588d70322c3f147ddd","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"dc97a1a1ae54ed16a4955f41b1bd50df14cc421a","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":6}}},{"hash":"511efb1141be95db7304539921953d604de777f9","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":0}}},{"hash":"ae642eb5d9e0c4f50da643ce0edd1fc27f42fb40","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":4}}},{"hash":"53f4c4fcf4e454c7fc28b96245cf56af7e2a3127","isMergeCommit":false,"messageTitle":"Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":110,"deletions":22}}},{"hash":"24886419f521b717f3ae24e52530ef8ebc4b2dfd","isMergeCommit":false,"messageTitle":"message","messageBody":"","tags":["Level-4","A-Inheritance","A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":106,"deletions":13}}}]},{"date":"2024-01-23","commitResults":[{"hash":"cd5f1e9a11c67d2c10ed8081b94728233de03ea1","isMergeCommit":false,"messageTitle":"testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"sh":{"insertions":1,"deletions":1}}},{"hash":"a894a9937d9143116278b89dbe26e3de74ff8633","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":0}}},{"hash":"6ca5ce2da16c02b8964bd25f6ebda6696dbe5cd4","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":179,"deletions":107}}},{"hash":"896985b6389b044e4ceb9e319cd8cabf7ea3e6a9","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"7447ba30326c81537bd96fa1f2b13910ef12720f","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"073e6f6322d01a493cdee470458cc9937309e696","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"d42631012ff8094a94146ac0022ccea7766cb2fa","isMergeCommit":false,"messageTitle":"A-Exceptions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":7}}},{"hash":"4943b1dc78fc9c10c99081a9e5bec9d2920adfa2","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":4}}},{"hash":"4f70ce18038c40b7da78ce6b93f0e0ef52204d73","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"fea78b9c32c32c3c24cd8cc61343e05babc769a2","isMergeCommit":false,"messageTitle":"A-Exceptions","messageBody":"","tags":["A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"9377b56090b9975bae2942015edf504594c75f62","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":25}}},{"hash":"ba1fb56fd3128fab7605bba2b505a4998b7cf0c2","isMergeCommit":false,"messageTitle":"A-Collections","messageBody":"","tags":["A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":34}}},{"hash":"de60be8d13e41fe723a87cdbf1ce547ca95035eb","isMergeCommit":false,"messageTitle":"A-Enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":60,"deletions":12}}}]},{"date":"2024-01-27","commitResults":[{"hash":"a59d7fcacea52916a5922635315313830fd98194","isMergeCommit":false,"messageTitle":"implement save to file when adding new task","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":95,"deletions":2}}},{"hash":"315716a74ed4d90f80752698499a9573d8d6742b","isMergeCommit":false,"messageTitle":"implement save for mark, unmark, and delete","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":12,"deletions":4},"java":{"insertions":62,"deletions":20}}},{"hash":"adee5353b63f1fd9421efbd248e53c1adb2cbaf8","isMergeCommit":false,"messageTitle":"minor changes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"adcedb0d97a1415b9cb4f2471cf3442d20418c0d","isMergeCommit":true,"messageTitle":"merge branch-Level-7 with master","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"c6cc85dcf6e9dd764b2de656f428f00961981071","isMergeCommit":false,"messageTitle":"add LocalDate","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":12},"java":{"insertions":23,"deletions":11}}},{"hash":"0d64fd08084914f8a3d3d0ab4ba7402112e248d5","isMergeCommit":true,"messageTitle":"merge branch-Level-8 with master","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"4485266bb8b74ce37fe152c7612557acedfeceba","isMergeCommit":false,"messageTitle":"add queryByTime feature","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":82,"deletions":23}}},{"hash":"f17fd204b8bb64a812b34def8dcc7fde53c18467","isMergeCommit":false,"messageTitle":"made structure more oop","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":3},"java":{"insertions":574,"deletions":394}}},{"hash":"0e5cb8f0f20b17aa52c33dce45bc83bcc0aa92d5","isMergeCommit":false,"messageTitle":"separate code into packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":12}}},{"hash":"fdbefc0f881e204f6f776ab2c477c6b990665fce","isMergeCommit":true,"messageTitle":"merge gradle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"4e1527498e40ebf891905a7c49a341dbbffd6c66","isMergeCommit":false,"messageTitle":"implement jUnit","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":142,"deletions":1}}},{"hash":"c6f803904f22199a00f0a530d1a1cb606ebf3a77","isMergeCommit":false,"messageTitle":"create jar","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2},"txt":{"insertions":1,"deletions":0}}},{"hash":"7e11927c1e892c82f47e39c49ed3a5ac0e6e0c2f","isMergeCommit":false,"messageTitle":"add javadocs","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":2},"java":{"insertions":390,"deletions":27}}},{"hash":"e5a993a99616b0c27bf0a156d3a4ccfc7fd04bc5","isMergeCommit":false,"messageTitle":"fix coding standard","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":9}}},{"hash":"4149c76112548eb5a167fa158a6f514c5844131a","isMergeCommit":false,"messageTitle":"minor changes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"7658d18ba781954796865e90ec7b3f7d887450ec","isMergeCommit":false,"messageTitle":"implement find feature","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":1},"java":{"insertions":113,"deletions":18}}},{"hash":"f444957dab367c63705747612d8d216905925285","isMergeCommit":true,"messageTitle":"merge with branch-A-JavaDoc","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{}},{"hash":"ce4ae59cc65d264881b29163939f315440a11dfd","isMergeCommit":true,"messageTitle":"merge with branch-A-CodingStandard","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"b2a9685208bcaad804a9e0ea649463c003addfe8","isMergeCommit":true,"messageTitle":"merge with branch-Level-9","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{}},{"hash":"dcac5f0fc991332b77337f30d315739d45aecf2e","isMergeCommit":false,"messageTitle":"minor change","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"alfaloo":{"java":1345,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":2,"txt":14}},"authorContributionVariance":{"alfaloo":419603.75},"authorDisplayNameMap":{"alfaloo":"CS2103T-T15-1 LU Z..YANG"}} +{"authorDailyContributionsMap":{"alfaloo":[{"date":"2024-01-22","commitResults":[{"hash":"eb59145e3996f1f38f9d1042e66b010e8b146f2f","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":0}}},{"hash":"35e97ba6af98f214bdc1af59aba82cdd7d7bfdb1","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"aced5fdac38144e7a3086fc7fd51a5b723f1a07c","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"352867d8e82df2fc92aba1648fb2fcf4b8466084","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"447af0bbfe23a39b5b8de85c2224433139c5b992","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"6f583dab214e70e60a12f2588d70322c3f147ddd","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"dc97a1a1ae54ed16a4955f41b1bd50df14cc421a","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":6}}},{"hash":"511efb1141be95db7304539921953d604de777f9","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":0}}},{"hash":"ae642eb5d9e0c4f50da643ce0edd1fc27f42fb40","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":4}}},{"hash":"53f4c4fcf4e454c7fc28b96245cf56af7e2a3127","isMergeCommit":false,"messageTitle":"Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":110,"deletions":22}}},{"hash":"24886419f521b717f3ae24e52530ef8ebc4b2dfd","isMergeCommit":false,"messageTitle":"message","messageBody":"","tags":["Level-4","A-Inheritance","A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":106,"deletions":13}}}]},{"date":"2024-01-23","commitResults":[{"hash":"cd5f1e9a11c67d2c10ed8081b94728233de03ea1","isMergeCommit":false,"messageTitle":"testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"sh":{"insertions":1,"deletions":1}}},{"hash":"a894a9937d9143116278b89dbe26e3de74ff8633","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":0}}},{"hash":"6ca5ce2da16c02b8964bd25f6ebda6696dbe5cd4","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":179,"deletions":107}}},{"hash":"896985b6389b044e4ceb9e319cd8cabf7ea3e6a9","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"7447ba30326c81537bd96fa1f2b13910ef12720f","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"073e6f6322d01a493cdee470458cc9937309e696","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"d42631012ff8094a94146ac0022ccea7766cb2fa","isMergeCommit":false,"messageTitle":"A-Exceptions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":7}}},{"hash":"4943b1dc78fc9c10c99081a9e5bec9d2920adfa2","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":4}}},{"hash":"4f70ce18038c40b7da78ce6b93f0e0ef52204d73","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"fea78b9c32c32c3c24cd8cc61343e05babc769a2","isMergeCommit":false,"messageTitle":"A-Exceptions","messageBody":"","tags":["A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"9377b56090b9975bae2942015edf504594c75f62","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":25}}},{"hash":"ba1fb56fd3128fab7605bba2b505a4998b7cf0c2","isMergeCommit":false,"messageTitle":"A-Collections","messageBody":"","tags":["A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":34}}},{"hash":"de60be8d13e41fe723a87cdbf1ce547ca95035eb","isMergeCommit":false,"messageTitle":"A-Enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":60,"deletions":12}}}]},{"date":"2024-01-27","commitResults":[{"hash":"a59d7fcacea52916a5922635315313830fd98194","isMergeCommit":false,"messageTitle":"implement save to file when adding new task","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":95,"deletions":2}}},{"hash":"315716a74ed4d90f80752698499a9573d8d6742b","isMergeCommit":false,"messageTitle":"implement save for mark, unmark, and delete","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":12,"deletions":4},"java":{"insertions":62,"deletions":20}}},{"hash":"adee5353b63f1fd9421efbd248e53c1adb2cbaf8","isMergeCommit":false,"messageTitle":"minor changes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"adcedb0d97a1415b9cb4f2471cf3442d20418c0d","isMergeCommit":true,"messageTitle":"merge branch-Level-7 with master","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"c6cc85dcf6e9dd764b2de656f428f00961981071","isMergeCommit":false,"messageTitle":"add LocalDate","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":12},"java":{"insertions":23,"deletions":11}}},{"hash":"0d64fd08084914f8a3d3d0ab4ba7402112e248d5","isMergeCommit":true,"messageTitle":"merge branch-Level-8 with master","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"4485266bb8b74ce37fe152c7612557acedfeceba","isMergeCommit":false,"messageTitle":"add queryByTime feature","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":82,"deletions":23}}},{"hash":"f17fd204b8bb64a812b34def8dcc7fde53c18467","isMergeCommit":false,"messageTitle":"made structure more oop","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":3},"java":{"insertions":574,"deletions":394}}},{"hash":"0e5cb8f0f20b17aa52c33dce45bc83bcc0aa92d5","isMergeCommit":false,"messageTitle":"separate code into packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":12}}},{"hash":"fdbefc0f881e204f6f776ab2c477c6b990665fce","isMergeCommit":true,"messageTitle":"merge gradle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"4e1527498e40ebf891905a7c49a341dbbffd6c66","isMergeCommit":false,"messageTitle":"implement jUnit","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":142,"deletions":1}}},{"hash":"c6f803904f22199a00f0a530d1a1cb606ebf3a77","isMergeCommit":false,"messageTitle":"create jar","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2},"txt":{"insertions":1,"deletions":0}}},{"hash":"7e11927c1e892c82f47e39c49ed3a5ac0e6e0c2f","isMergeCommit":false,"messageTitle":"add javadocs","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":2},"java":{"insertions":390,"deletions":27}}},{"hash":"e5a993a99616b0c27bf0a156d3a4ccfc7fd04bc5","isMergeCommit":false,"messageTitle":"fix coding standard","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":9}}},{"hash":"4149c76112548eb5a167fa158a6f514c5844131a","isMergeCommit":false,"messageTitle":"minor changes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"7658d18ba781954796865e90ec7b3f7d887450ec","isMergeCommit":false,"messageTitle":"implement find feature","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":1},"java":{"insertions":113,"deletions":18}}},{"hash":"f444957dab367c63705747612d8d216905925285","isMergeCommit":true,"messageTitle":"merge with branch-A-JavaDoc","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{}},{"hash":"ce4ae59cc65d264881b29163939f315440a11dfd","isMergeCommit":true,"messageTitle":"merge with branch-A-CodingStandard","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"b2a9685208bcaad804a9e0ea649463c003addfe8","isMergeCommit":true,"messageTitle":"merge with branch-Level-9","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{}},{"hash":"dcac5f0fc991332b77337f30d315739d45aecf2e","isMergeCommit":false,"messageTitle":"minor change","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}}]},{"date":"2024-01-30","commitResults":[{"hash":"640086dd3ef9dc486048d589e1071e367dc79023","isMergeCommit":false,"messageTitle":"move greeting and farewell to UI class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":18}}}]}]},"authorFileTypeContributionMap":{"alfaloo":{"java":1345,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":2,"txt":14}},"authorContributionVariance":{"alfaloo":333065.84},"authorDisplayNameMap":{"alfaloo":"CS2103T-T15-1 LU Z..YANG"}} diff --git a/appleraincoat_ip_master/authorship.json b/appleraincoat_ip_master/authorship.json index 4aa5b78a..0d1e80ad 100644 --- a/appleraincoat_ip_master/authorship.json +++ b/appleraincoat_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"data/Ypxmm.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"T | 0 | eat","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"D | 0 | level 9 hmwk | 03-02-2024 2359","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"E | 0 | bros dinner | 29-01-2024 1900 to 29-01-2024 2000","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"appleraincoat":3}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":" protected LocalDateTime byWhen;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":" public Deadline(String name, String byWhen) {","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":" super(name);","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":" this.byWhen \u003d parseTime(byWhen);","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":" private LocalDateTime parseTime(String timeString) {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\");","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":" return LocalDateTime.parse(timeString, formatter);","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":" return \"[D]\" + super.toString() + \" (by: \" + byWhen.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy HHmm\")) + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"appleraincoat"},"content":" public String toWrite() {","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"appleraincoat"},"content":" return \"D | \" + super.toWrite() + \" | \" + byWhen.format(DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"appleraincoat":25}},{"path":"src/main/java/EnumCommands.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"public enum EnumCommands {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":" LIST,","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":" MARK,","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":" UNMARK,","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":" TODO,","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":" DEADLINE,","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":" EVENT,","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":" GETCOMMANDS,","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":" DELETE,","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":" BYE;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"appleraincoat":11}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":" protected LocalDateTime fromWhen;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":" protected LocalDateTime toWhen;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":" public Event(String name, String fromWhen, String toWhen) {","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":" super(name);","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":" this.fromWhen \u003d parseTime(fromWhen);","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":" this.toWhen \u003d parseTime(toWhen);","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":" private LocalDateTime parseTime(String timeString) {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\");","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":" return LocalDateTime.parse(timeString, formatter);","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"appleraincoat"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"appleraincoat"},"content":" return \"[E]\" + super.toString() + \" (from: \" + fromWhen.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy HHmm\"))","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"appleraincoat"},"content":" + \" to: \" + toWhen.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy HHmm\")) + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"appleraincoat"},"content":" public String toWrite() {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"appleraincoat"},"content":" return \"E | \" + super.toWrite() + \" | \" + fromWhen.format(DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\")) +","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"appleraincoat"},"content":" \" to \" + toWhen.format(DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"appleraincoat":30}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"public class Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":" protected String name;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":" protected boolean completed;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":" //constructor","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":" public Task(String name) {","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":" this.completed \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":" public void markTask() {","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":" this.completed \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"Upz la, mark for you already!\");","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":" System.out.println(this.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":" public void setCompleted() {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":" this.completed \u003d true;","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"appleraincoat"},"content":" public void unmarkTask() {","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"appleraincoat"},"content":" this.completed \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"Eh wake up your idea, faster finish can or not?? Unmark for you already la!\");","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"appleraincoat"},"content":" System.out.println(this.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"appleraincoat"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"appleraincoat"},"content":" return (completed ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"appleraincoat"},"content":" public String toWrite() {","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"appleraincoat"},"content":" return (completed ? \"1\" : \"0\") + \" | \" + name;","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"appleraincoat"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"appleraincoat"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + name;","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"appleraincoat":40}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":" public ToDo(String name) {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":" super(name);","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":" public String toWrite() {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":" return \"T | \" + super.toWrite();","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"appleraincoat":16}},{"path":"src/main/java/Ypxmm.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":"import java.io.File;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":"public class Ypxmm {","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":" public static ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003cTask\u003e(); //tasks","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":" public static File f;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":" private static void printFileContents() throws FileNotFoundException {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":" Scanner s \u003d new Scanner(f); // create a Scanner using the File as the source","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":" while (s.hasNext()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":" System.out.println(s.nextLine());","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"appleraincoat"},"content":" private static void writeToFile(String textToAdd) throws IOException, FileNotFoundException {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"appleraincoat"},"content":" FileWriter fw \u003d new FileWriter(f);","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"appleraincoat"},"content":" fw.write(textToAdd + \"\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"appleraincoat"},"content":" fw.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"appleraincoat"},"content":" private static void appendToFile(String textToAppend) throws IOException, FileNotFoundException {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"appleraincoat"},"content":" FileWriter fw \u003d new FileWriter(f, true); // create a FileWriter in append mode","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"appleraincoat"},"content":" fw.write(textToAppend + \"\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"appleraincoat"},"content":" fw.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"appleraincoat"},"content":" private static void reWrite() throws IOException, FileNotFoundException {","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"appleraincoat"},"content":" FileWriter fw \u003d new FileWriter(f);","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"appleraincoat"},"content":" for (Task t : tasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"appleraincoat"},"content":" fw.write(t.toWrite() + \"\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"appleraincoat"},"content":" fw.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"appleraincoat"},"content":" private static void initToArray() throws FileNotFoundException {","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"appleraincoat"},"content":" Scanner s \u003d new Scanner(f);","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"appleraincoat"},"content":" while (s.hasNext()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"appleraincoat"},"content":" String[] line \u003d s.nextLine().split(\" \\\\| \");","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"appleraincoat"},"content":" if (line[0].equals(\"T\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"appleraincoat"},"content":" Task task \u003d new ToDo(line[2]);","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"appleraincoat"},"content":" if (line[1].equals(\"1\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"appleraincoat"},"content":" task.setCompleted();","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"appleraincoat"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"appleraincoat"},"content":" } else if (line[0].equals(\"D\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"appleraincoat"},"content":" Task task \u003d new Deadline(line[2], line[3]);","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"appleraincoat"},"content":" if (line[1].equals(\"1\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"appleraincoat"},"content":" task.setCompleted();","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"appleraincoat"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"appleraincoat"},"content":" } else if (line[0].equals(\"E\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"appleraincoat"},"content":" String[] timing \u003d line[3].split(\" to \");","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"appleraincoat"},"content":" Task task \u003d new Event(line[2], timing[0], timing[1]);","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"appleraincoat"},"content":" if (line[1].equals(\"1\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"appleraincoat"},"content":" task.setCompleted();","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"appleraincoat"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"appleraincoat"},"content":" public static void main(String[] args) throws YpxmmException {","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"appleraincoat"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"appleraincoat"},"content":" sayHello();","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"appleraincoat"},"content":" boolean condition \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"appleraincoat"},"content":" f \u003d new File(\"data/Ypxmm.txt\");","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"appleraincoat"},"content":" initToArray();","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"appleraincoat"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"File not created yet la bro. In the ip folder, create a new folder \\\"data\\\" and a new txt file \\\"Ypxmm\\\" to proceed\");","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"appleraincoat"},"content":" } catch (YpxmmException y) {","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"appleraincoat"},"content":" System.out.println(y.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":82,"author":{"gitId":"appleraincoat"},"content":" while (condition) {","lastModifiedDate":"2024-01-25"},{"lineNumber":83,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":84,"author":{"gitId":"appleraincoat"},"content":" String input \u003d sc.nextLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":85,"author":{"gitId":"appleraincoat"},"content":" String[] splitInput \u003d input.split(\" \");","lastModifiedDate":"2024-01-25"},{"lineNumber":86,"author":{"gitId":"appleraincoat"},"content":" EnumCommands enumc \u003d EnumCommands.valueOf(splitInput[0].toUpperCase());","lastModifiedDate":"2024-01-25"},{"lineNumber":87,"author":{"gitId":"appleraincoat"},"content":" switch (enumc) {","lastModifiedDate":"2024-01-25"},{"lineNumber":88,"author":{"gitId":"appleraincoat"},"content":" case BYE:","lastModifiedDate":"2024-01-25"},{"lineNumber":89,"author":{"gitId":"appleraincoat"},"content":" sayGoodbye();","lastModifiedDate":"2024-01-24"},{"lineNumber":90,"author":{"gitId":"appleraincoat"},"content":" condition \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":91,"author":{"gitId":"appleraincoat"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":92,"author":{"gitId":"appleraincoat"},"content":" case LIST:","lastModifiedDate":"2024-01-25"},{"lineNumber":93,"author":{"gitId":"appleraincoat"},"content":" list();","lastModifiedDate":"2024-01-24"},{"lineNumber":94,"author":{"gitId":"appleraincoat"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":95,"author":{"gitId":"appleraincoat"},"content":" case MARK:","lastModifiedDate":"2024-01-25"},{"lineNumber":96,"author":{"gitId":"appleraincoat"},"content":" String[] valsMark \u003d input.split(\" \");","lastModifiedDate":"2024-01-25"},{"lineNumber":97,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":98,"author":{"gitId":"appleraincoat"},"content":" int index \u003d Integer.parseInt(valsMark[1]);","lastModifiedDate":"2024-01-25"},{"lineNumber":99,"author":{"gitId":"appleraincoat"},"content":" mark(index);","lastModifiedDate":"2024-01-24"},{"lineNumber":100,"author":{"gitId":"appleraincoat"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":101,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Brother, key in mark \u003cspace\u003e then a valid number\");","lastModifiedDate":"2024-01-25"},{"lineNumber":102,"author":{"gitId":"appleraincoat"},"content":" } catch (NumberFormatException n) {","lastModifiedDate":"2024-01-25"},{"lineNumber":103,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"You tell me now what task am I supposed to mark if you don\u0027t provide me with a number?\");","lastModifiedDate":"2024-01-25"},{"lineNumber":104,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":105,"author":{"gitId":"appleraincoat"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":106,"author":{"gitId":"appleraincoat"},"content":" case UNMARK:","lastModifiedDate":"2024-01-25"},{"lineNumber":107,"author":{"gitId":"appleraincoat"},"content":" String[] valsUnmark \u003d input.split(\" \");","lastModifiedDate":"2024-01-25"},{"lineNumber":108,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":109,"author":{"gitId":"appleraincoat"},"content":" int index \u003d Integer.parseInt(valsUnmark[1]);","lastModifiedDate":"2024-01-25"},{"lineNumber":110,"author":{"gitId":"appleraincoat"},"content":" unmark(index);","lastModifiedDate":"2024-01-24"},{"lineNumber":111,"author":{"gitId":"appleraincoat"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":112,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Brother, key in unmark \u003cspace\u003e then a valid number\");","lastModifiedDate":"2024-01-25"},{"lineNumber":113,"author":{"gitId":"appleraincoat"},"content":" } catch (NumberFormatException n) {","lastModifiedDate":"2024-01-25"},{"lineNumber":114,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"You tell me now what task am I supposed to unmark if you don\u0027t provide me with a number?\");","lastModifiedDate":"2024-01-25"},{"lineNumber":115,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":116,"author":{"gitId":"appleraincoat"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":117,"author":{"gitId":"appleraincoat"},"content":" case TODO:","lastModifiedDate":"2024-01-25"},{"lineNumber":118,"author":{"gitId":"appleraincoat"},"content":" addTask(input, \"todo\");","lastModifiedDate":"2024-01-24"},{"lineNumber":119,"author":{"gitId":"appleraincoat"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":120,"author":{"gitId":"appleraincoat"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-25"},{"lineNumber":121,"author":{"gitId":"appleraincoat"},"content":" addTask(input, \"deadline\");","lastModifiedDate":"2024-01-24"},{"lineNumber":122,"author":{"gitId":"appleraincoat"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":123,"author":{"gitId":"appleraincoat"},"content":" case EVENT:","lastModifiedDate":"2024-01-25"},{"lineNumber":124,"author":{"gitId":"appleraincoat"},"content":" addTask(input, \"event\");","lastModifiedDate":"2024-01-24"},{"lineNumber":125,"author":{"gitId":"appleraincoat"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":126,"author":{"gitId":"appleraincoat"},"content":" case GETCOMMANDS:","lastModifiedDate":"2024-01-25"},{"lineNumber":127,"author":{"gitId":"appleraincoat"},"content":" getCommands();","lastModifiedDate":"2024-01-25"},{"lineNumber":128,"author":{"gitId":"appleraincoat"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":129,"author":{"gitId":"appleraincoat"},"content":" case DELETE:","lastModifiedDate":"2024-01-25"},{"lineNumber":130,"author":{"gitId":"appleraincoat"},"content":" String[] vals \u003d input.split(\" \");","lastModifiedDate":"2024-01-25"},{"lineNumber":131,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":132,"author":{"gitId":"appleraincoat"},"content":" int index \u003d Integer.parseInt(vals[1]);","lastModifiedDate":"2024-01-25"},{"lineNumber":133,"author":{"gitId":"appleraincoat"},"content":" delete(index);","lastModifiedDate":"2024-01-25"},{"lineNumber":134,"author":{"gitId":"appleraincoat"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":135,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Brother, key in delete \u003cspace\u003e then a valid number\");","lastModifiedDate":"2024-01-25"},{"lineNumber":136,"author":{"gitId":"appleraincoat"},"content":" } catch (NumberFormatException n) {","lastModifiedDate":"2024-01-25"},{"lineNumber":137,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"You tell me now what task am I supposed to delete if you don\u0027t provide me with a number?\");","lastModifiedDate":"2024-01-25"},{"lineNumber":138,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":139,"author":{"gitId":"appleraincoat"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":140,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":141,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":142,"author":{"gitId":"appleraincoat"},"content":" } catch (YpxmmException y) {","lastModifiedDate":"2024-01-25"},{"lineNumber":143,"author":{"gitId":"appleraincoat"},"content":" System.out.println(y.getMessage());","lastModifiedDate":"2024-01-25"},{"lineNumber":144,"author":{"gitId":"appleraincoat"},"content":" } catch (IllegalArgumentException i) {","lastModifiedDate":"2024-01-25"},{"lineNumber":145,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"Sorry bro, idk what that means. You try type in \\\"getcommands\\\" then see if got what u want.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":146,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":147,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":148,"author":{"gitId":"appleraincoat"},"content":" sc.close();","lastModifiedDate":"2024-01-24"},{"lineNumber":149,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":150,"author":{"gitId":"appleraincoat"},"content":" public static void getCommands() {","lastModifiedDate":"2024-01-24"},{"lineNumber":151,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"Take note ah, enter all time based commands are in \u003cdd-mm-yyyy HHmm\u003e format\\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":152,"author":{"gitId":"appleraincoat"},"content":" \" todo \u003ctask\u003e - adds todo\\n deadline \u003ctask\u003e/\u003cby when\u003e - adds deadline\\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":153,"author":{"gitId":"appleraincoat"},"content":" \" event \u003ctask\u003e/\u003cfrom when\u003e/\u003cto when\u003e - adds event\\n list - lists out all tasks\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":154,"author":{"gitId":"appleraincoat"},"content":" \" mark \u003cx\u003e - marks task x as done\\n unmark \u003cx\u003e - unmarks task x as undone\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":155,"author":{"gitId":"appleraincoat"},"content":" \" bye - exit\");","lastModifiedDate":"2024-01-24"},{"lineNumber":156,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":157,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":158,"author":{"gitId":"appleraincoat"},"content":" public static void sayHello() {","lastModifiedDate":"2024-01-24"},{"lineNumber":159,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"Hello, I\u0027m Ypxmm.\\nNeed me do what for you?\");","lastModifiedDate":"2024-01-24"},{"lineNumber":160,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":161,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":162,"author":{"gitId":"appleraincoat"},"content":" public static void sayGoodbye() {","lastModifiedDate":"2024-01-24"},{"lineNumber":163,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"Oh you need zao alr? Okok see you next time!\");","lastModifiedDate":"2024-01-24"},{"lineNumber":164,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":165,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":166,"author":{"gitId":"appleraincoat"},"content":" public static void list() {","lastModifiedDate":"2024-01-24"},{"lineNumber":167,"author":{"gitId":"appleraincoat"},"content":" if (tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-24"},{"lineNumber":168,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"No tasks yet la bro\");","lastModifiedDate":"2024-01-24"},{"lineNumber":169,"author":{"gitId":"appleraincoat"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":170,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"Ok wait ah, here are your tasks:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":171,"author":{"gitId":"appleraincoat"},"content":" int count \u003d 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":172,"author":{"gitId":"appleraincoat"},"content":" for (Task t : tasks) {","lastModifiedDate":"2024-01-24"},{"lineNumber":173,"author":{"gitId":"appleraincoat"},"content":" System.out.println(count + \". \" + t.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":174,"author":{"gitId":"appleraincoat"},"content":" count++;","lastModifiedDate":"2024-01-24"},{"lineNumber":175,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":176,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":177,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":178,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":179,"author":{"gitId":"appleraincoat"},"content":" public static void mark(int index) {","lastModifiedDate":"2024-01-24"},{"lineNumber":180,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":181,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":182,"author":{"gitId":"appleraincoat"},"content":" tasks.get(index - 1).markTask();","lastModifiedDate":"2024-01-24"},{"lineNumber":183,"author":{"gitId":"appleraincoat"},"content":" reWrite();","lastModifiedDate":"2024-01-29"},{"lineNumber":184,"author":{"gitId":"appleraincoat"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":185,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Eh u seh isit? Now your list got \" +","lastModifiedDate":"2024-01-25"},{"lineNumber":186,"author":{"gitId":"appleraincoat"},"content":" (tasks.size() \u003d\u003d 0 ? \"no tasks to mark.\" : tasks.size() +","lastModifiedDate":"2024-01-25"},{"lineNumber":187,"author":{"gitId":"appleraincoat"},"content":" \" tasks, enter any number from 1 to \" + tasks.size()));","lastModifiedDate":"2024-01-24"},{"lineNumber":188,"author":{"gitId":"appleraincoat"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":189,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"File not created yet la bro. In the ip folder, create a new folder \\\"data\\\" and a new txt file \\\"Ypxmm\\\" to proceed\");","lastModifiedDate":"2024-01-29"},{"lineNumber":190,"author":{"gitId":"appleraincoat"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":191,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"IOException\");","lastModifiedDate":"2024-01-29"},{"lineNumber":192,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":193,"author":{"gitId":"appleraincoat"},"content":" } catch (YpxmmException y) {","lastModifiedDate":"2024-01-25"},{"lineNumber":194,"author":{"gitId":"appleraincoat"},"content":" System.out.println(y.getMessage());","lastModifiedDate":"2024-01-25"},{"lineNumber":195,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":196,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":197,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":198,"author":{"gitId":"appleraincoat"},"content":" public static void unmark(int index) {","lastModifiedDate":"2024-01-24"},{"lineNumber":199,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":200,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":201,"author":{"gitId":"appleraincoat"},"content":" tasks.get(index - 1).unmarkTask();","lastModifiedDate":"2024-01-24"},{"lineNumber":202,"author":{"gitId":"appleraincoat"},"content":" reWrite();","lastModifiedDate":"2024-01-29"},{"lineNumber":203,"author":{"gitId":"appleraincoat"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":204,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Eh u seh isit? Now your list got \" +","lastModifiedDate":"2024-01-25"},{"lineNumber":205,"author":{"gitId":"appleraincoat"},"content":" (tasks.size() \u003d\u003d 0 ? \"no tasks to unmark.\" : tasks.size() +","lastModifiedDate":"2024-01-25"},{"lineNumber":206,"author":{"gitId":"appleraincoat"},"content":" \" tasks, enter any number from 1 to \" + tasks.size()));","lastModifiedDate":"2024-01-24"},{"lineNumber":207,"author":{"gitId":"appleraincoat"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":208,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"File not created yet la bro. In the ip folder, create a new folder \\\"data\\\" and a new txt file \\\"Ypxmm\\\" to proceed\");","lastModifiedDate":"2024-01-29"},{"lineNumber":209,"author":{"gitId":"appleraincoat"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":210,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"IOException\");","lastModifiedDate":"2024-01-29"},{"lineNumber":211,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":212,"author":{"gitId":"appleraincoat"},"content":" } catch (YpxmmException y) {","lastModifiedDate":"2024-01-25"},{"lineNumber":213,"author":{"gitId":"appleraincoat"},"content":" System.out.println(y.getMessage());","lastModifiedDate":"2024-01-25"},{"lineNumber":214,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":215,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":216,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":217,"author":{"gitId":"appleraincoat"},"content":" public static void delete(int index) {","lastModifiedDate":"2024-01-25"},{"lineNumber":218,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":219,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":220,"author":{"gitId":"appleraincoat"},"content":" String t \u003d tasks.get(index - 1).toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":221,"author":{"gitId":"appleraincoat"},"content":" tasks.remove(index - 1);","lastModifiedDate":"2024-01-25"},{"lineNumber":222,"author":{"gitId":"appleraincoat"},"content":" reWrite();","lastModifiedDate":"2024-01-29"},{"lineNumber":223,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"Ok deleted liao:\\n\" + t + \"\\nNow your list got \" +","lastModifiedDate":"2024-01-25"},{"lineNumber":224,"author":{"gitId":"appleraincoat"},"content":" (tasks.size() \u003d\u003d 0 ? \"no tasks.\" : tasks.size() + \" tasks left.\"));","lastModifiedDate":"2024-01-25"},{"lineNumber":225,"author":{"gitId":"appleraincoat"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":226,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Eh u seh isit? Now your list got \" +","lastModifiedDate":"2024-01-25"},{"lineNumber":227,"author":{"gitId":"appleraincoat"},"content":" (tasks.size() \u003d\u003d 0 ? \"no tasks to delete.\" : tasks.size() +","lastModifiedDate":"2024-01-25"},{"lineNumber":228,"author":{"gitId":"appleraincoat"},"content":" \" tasks, enter any number from 1 to \" + tasks.size()));","lastModifiedDate":"2024-01-25"},{"lineNumber":229,"author":{"gitId":"appleraincoat"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":230,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"File not created yet la bro. In the ip folder, create a new folder \\\"data\\\" and a new txt file \\\"Ypxmm\\\" to proceed\");","lastModifiedDate":"2024-01-29"},{"lineNumber":231,"author":{"gitId":"appleraincoat"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":232,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"IOException\");","lastModifiedDate":"2024-01-29"},{"lineNumber":233,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":234,"author":{"gitId":"appleraincoat"},"content":" } catch (YpxmmException y) {","lastModifiedDate":"2024-01-25"},{"lineNumber":235,"author":{"gitId":"appleraincoat"},"content":" System.out.println(y.getMessage());","lastModifiedDate":"2024-01-25"},{"lineNumber":236,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":237,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":238,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":239,"author":{"gitId":"appleraincoat"},"content":" public static void addTask(String input, String type) {","lastModifiedDate":"2024-01-24"},{"lineNumber":240,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":241,"author":{"gitId":"appleraincoat"},"content":" if (type.equals(\"todo\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":242,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":243,"author":{"gitId":"appleraincoat"},"content":" String[] info \u003d input.split(\"todo \");","lastModifiedDate":"2024-01-25"},{"lineNumber":244,"author":{"gitId":"appleraincoat"},"content":" if (info[1].isBlank()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":245,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Help la, can just tell me what is the name of your task anot?\");","lastModifiedDate":"2024-01-25"},{"lineNumber":246,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":247,"author":{"gitId":"appleraincoat"},"content":" Task t \u003d new ToDo(info[1].trim());","lastModifiedDate":"2024-01-29"},{"lineNumber":248,"author":{"gitId":"appleraincoat"},"content":" tasks.add(t);","lastModifiedDate":"2024-01-24"},{"lineNumber":249,"author":{"gitId":"appleraincoat"},"content":" appendToFile(t.toWrite());","lastModifiedDate":"2024-01-29"},{"lineNumber":250,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"Ok I help you add this one liao:\\n\" + t.toString() +","lastModifiedDate":"2024-01-24"},{"lineNumber":251,"author":{"gitId":"appleraincoat"},"content":" \"\\nNow your list got \" + tasks.size() + ((tasks.size() \u003d\u003d 1) ? \" task.\" : \" tasks.\"));","lastModifiedDate":"2024-01-24"},{"lineNumber":252,"author":{"gitId":"appleraincoat"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":253,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"You trying to test my patience ah? Type \\\"get commands\\\" if u blur and dunno how to use me properly.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":254,"author":{"gitId":"appleraincoat"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":255,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"File not created yet la bro. In the ip folder, create a new folder \\\"data\\\" and a new txt file \\\"Ypxmm\\\" to proceed\");","lastModifiedDate":"2024-01-29"},{"lineNumber":256,"author":{"gitId":"appleraincoat"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":257,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"IOException\");","lastModifiedDate":"2024-01-29"},{"lineNumber":258,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":259,"author":{"gitId":"appleraincoat"},"content":" } else if (type.equals(\"deadline\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":260,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":261,"author":{"gitId":"appleraincoat"},"content":" String[] info \u003d input.split(\"/\");","lastModifiedDate":"2024-01-25"},{"lineNumber":262,"author":{"gitId":"appleraincoat"},"content":" if (info[0].split(\"deadline \")[1].isBlank() || info[1].isBlank()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":263,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Help la, can just tell me what is the name of your task anot?\");","lastModifiedDate":"2024-01-25"},{"lineNumber":264,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":265,"author":{"gitId":"appleraincoat"},"content":" Task t \u003d new Deadline(info[0].substring(9).trim(), info[1].trim());","lastModifiedDate":"2024-01-29"},{"lineNumber":266,"author":{"gitId":"appleraincoat"},"content":" tasks.add(t);","lastModifiedDate":"2024-01-24"},{"lineNumber":267,"author":{"gitId":"appleraincoat"},"content":" appendToFile(t.toWrite());","lastModifiedDate":"2024-01-29"},{"lineNumber":268,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"Ok I help you add this one liao:\\n\" + t.toString() +","lastModifiedDate":"2024-01-24"},{"lineNumber":269,"author":{"gitId":"appleraincoat"},"content":" \"\\nNow your list got \" + tasks.size() + ((tasks.size() \u003d\u003d 1) ? \" task.\" : \" tasks.\"));","lastModifiedDate":"2024-01-24"},{"lineNumber":270,"author":{"gitId":"appleraincoat"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":271,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"You trying to test my patience ah? Check that u got key in the deadline lehhh\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":272,"author":{"gitId":"appleraincoat"},"content":" \"Type \\\"get commands\\\" if u blur and dunno how to use me properly.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":273,"author":{"gitId":"appleraincoat"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":274,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"File not created yet la bro. In the ip folder, create a new folder \\\"data\\\" and a new txt file \\\"Ypxmm\\\" to proceed\");","lastModifiedDate":"2024-01-29"},{"lineNumber":275,"author":{"gitId":"appleraincoat"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":276,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"IOException\");","lastModifiedDate":"2024-01-29"},{"lineNumber":277,"author":{"gitId":"appleraincoat"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":278,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Brother, follow format can or not? Enter dates in dd-mm-yyyy HHmm (24-08-2024 1800)\");","lastModifiedDate":"2024-01-29"},{"lineNumber":279,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":280,"author":{"gitId":"appleraincoat"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":281,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":282,"author":{"gitId":"appleraincoat"},"content":" String[] info \u003d input.split(\"/\");","lastModifiedDate":"2024-01-25"},{"lineNumber":283,"author":{"gitId":"appleraincoat"},"content":" if (info[0].split(\"event \")[1].isBlank() || info[1].isBlank() || info[2].isBlank()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":284,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Help la, can just tell me what is the name of your task anot?\");","lastModifiedDate":"2024-01-25"},{"lineNumber":285,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":286,"author":{"gitId":"appleraincoat"},"content":" Task t \u003d new Event(info[0].substring(6).trim(), info[1].trim(), info[2].trim());","lastModifiedDate":"2024-01-29"},{"lineNumber":287,"author":{"gitId":"appleraincoat"},"content":" tasks.add(t);","lastModifiedDate":"2024-01-24"},{"lineNumber":288,"author":{"gitId":"appleraincoat"},"content":" appendToFile(t.toWrite());","lastModifiedDate":"2024-01-29"},{"lineNumber":289,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"Ok I help you add this one liao:\\n\" + t.toString() +","lastModifiedDate":"2024-01-24"},{"lineNumber":290,"author":{"gitId":"appleraincoat"},"content":" \"\\nNow your list got \" + tasks.size() + ((tasks.size() \u003d\u003d 1) ? \" task.\" : \" tasks.\"));","lastModifiedDate":"2024-01-24"},{"lineNumber":291,"author":{"gitId":"appleraincoat"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":292,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Eh brother last warning ah. Check that u got key in the start and end time\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":293,"author":{"gitId":"appleraincoat"},"content":" \"Type \\\"get commands\\\" if u blur and dunno how to use me properly.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":294,"author":{"gitId":"appleraincoat"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":295,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"File not created yet la bro. In the ip folder, create a new folder \\\"data\\\" and a new txt file \\\"Ypxmm\\\" to proceed\");","lastModifiedDate":"2024-01-29"},{"lineNumber":296,"author":{"gitId":"appleraincoat"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":297,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"IOException\");","lastModifiedDate":"2024-01-29"},{"lineNumber":298,"author":{"gitId":"appleraincoat"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":299,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Brother, follow format can or not? Enter dates in dd-mm-yyyy HHmm (24-08-2024 1800)\");","lastModifiedDate":"2024-01-29"},{"lineNumber":300,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":301,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":302,"author":{"gitId":"appleraincoat"},"content":" } catch (YpxmmException y) {","lastModifiedDate":"2024-01-25"},{"lineNumber":303,"author":{"gitId":"appleraincoat"},"content":" System.out.println(y.getMessage());","lastModifiedDate":"2024-01-25"},{"lineNumber":304,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":305,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":306,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"appleraincoat":306}},{"path":"src/main/java/YpxmmException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"public class YpxmmException extends Exception {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":" public YpxmmException(String message) {","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":" super(message);","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"appleraincoat":5}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"mark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"mark t","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":"unmark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":"unmark y","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":"todo","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":"todo eat","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":"deadline homework /","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":"deadline homework /5pm","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":"event dinner /5pm /","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":"event dinner /5pm /6pm","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":"mark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":"delete 4","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":"delete y","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":"delete 2","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":"zzz","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"appleraincoat"},"content":"getcommands","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"appleraincoat"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"appleraincoat":20}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":"java -classpath ..\\bin Ypxmm \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":20,"appleraincoat":1}}] +[{"path":"data/Ypxmm.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"T | 0 | eat","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"D | 0 | level 9 hmwk | 03-02-2024 2359","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"E | 0 | bros dinner | 29-01-2024 1900 to 29-01-2024 2000","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"appleraincoat":3}},{"path":"src/main/java/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":"public enum Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":" LIST {","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage, ArrayList\u003cString\u003e parsed) {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":" ui.printList(tasklist.tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":" },","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":" MARK {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage, ArrayList\u003cString\u003e parsed) throws YpxmmException {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":" int index \u003d Integer.parseInt(parsed.get(1));","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":" Task task \u003d tasklist.tasks.get(index - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":" task.markTask();","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":" storage.reWrite(tasklist);","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"appleraincoat"},"content":" ui.markMessage(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"appleraincoat"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Eh u seh isit? Now your list got \" +","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"appleraincoat"},"content":" (tasklist.tasks.isEmpty() ? \"no tasks to mark.\" : tasklist.tasks.size() +","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"appleraincoat"},"content":" \" tasks, enter any number from 1 to \" + tasklist.tasks.size()));","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"appleraincoat"},"content":" } catch (YpxmmException y) {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"appleraincoat"},"content":" System.out.println(y.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"appleraincoat"},"content":" },","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"appleraincoat"},"content":" UNMARK {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"appleraincoat"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage, ArrayList\u003cString\u003e parsed) throws YpxmmException {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"appleraincoat"},"content":" int index \u003d Integer.parseInt(parsed.get(1));","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"appleraincoat"},"content":" Task task \u003d tasklist.tasks.get(index - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"appleraincoat"},"content":" task.unmarkTask();","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"appleraincoat"},"content":" storage.reWrite(tasklist);","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"appleraincoat"},"content":" ui.unmarkMessage(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"appleraincoat"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Eh u seh isit? Now your list got \" +","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"appleraincoat"},"content":" (tasklist.tasks.isEmpty() ? \"no tasks to unmark.\" : tasklist.tasks.size() +","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"appleraincoat"},"content":" \" tasks, enter any number from 1 to \" + tasklist.tasks.size()));","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"appleraincoat"},"content":" } catch (YpxmmException y) {","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"appleraincoat"},"content":" System.out.println(y.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"appleraincoat"},"content":" },","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"appleraincoat"},"content":" TODO {","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"appleraincoat"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage, ArrayList\u003cString\u003e parsed) {","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"appleraincoat"},"content":" Task task \u003d new ToDo(parsed.get(1));","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"appleraincoat"},"content":" tasklist.addTask(parsed, task);","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"appleraincoat"},"content":" storage.appendToFile(task.toWrite());","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"appleraincoat"},"content":" ui.addTaskMessage(task, tasklist);","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"appleraincoat"},"content":" } catch (YpxmmException y) {","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"appleraincoat"},"content":" System.out.println(y.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"appleraincoat"},"content":" },","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"appleraincoat"},"content":" DEADLINE {","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"appleraincoat"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage, ArrayList\u003cString\u003e parsed) {","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"appleraincoat"},"content":" Task task \u003d new Deadline(parsed.get(1).trim(), parsed.get(2).trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"appleraincoat"},"content":" tasklist.addTask(parsed, task);","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"appleraincoat"},"content":" storage.appendToFile(task.toWrite());","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"appleraincoat"},"content":" ui.addTaskMessage(task, tasklist);","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"appleraincoat"},"content":" } catch (YpxmmException y) {","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"appleraincoat"},"content":" System.out.println(y.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"appleraincoat"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"Brother, follow format can or not? Enter dates in dd-mm-yyyy HHmm (24-08-2024 1800)\");","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"appleraincoat"},"content":" },","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"appleraincoat"},"content":" EVENT {","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"appleraincoat"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage, ArrayList\u003cString\u003e parsed) {","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"appleraincoat"},"content":" Task task \u003d new Event(parsed.get(1).trim(), parsed.get(2).trim(), parsed.get(3).trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"appleraincoat"},"content":" tasklist.addTask(parsed, task);","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"appleraincoat"},"content":" storage.appendToFile(task.toWrite());","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"appleraincoat"},"content":" ui.addTaskMessage(task, tasklist);","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"appleraincoat"},"content":" } catch (YpxmmException y) {","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"appleraincoat"},"content":" System.out.println(y.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"appleraincoat"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"Brother, follow format can or not? Enter dates in dd-mm-yyyy HHmm (24-08-2024 1800)\");","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"appleraincoat"},"content":" },","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"appleraincoat"},"content":" GETCOMMANDS {","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"appleraincoat"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage, ArrayList\u003cString\u003e parsed) {","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"appleraincoat"},"content":" ui.getCommands();","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"appleraincoat"},"content":" },","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"appleraincoat"},"content":" DELETE {","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"appleraincoat"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage, ArrayList\u003cString\u003e parsed) throws YpxmmException {","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"appleraincoat"},"content":" int index \u003d Integer.parseInt(parsed.get(1));","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"appleraincoat"},"content":" Task task \u003d tasklist.tasks.get(index - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"appleraincoat"},"content":" tasklist.deleteTask(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"appleraincoat"},"content":" storage.reWrite(tasklist);","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"appleraincoat"},"content":" ui.deleteTaskMessage(task, tasklist);","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"appleraincoat"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Eh u seh isit? Now your list got \" +","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"appleraincoat"},"content":" (tasklist.tasks.isEmpty() ? \"no tasks to delete.\" : tasklist.tasks.size() +","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"appleraincoat"},"content":" \" tasks, enter any number from 1 to \" + tasklist.tasks.size()));","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"appleraincoat"},"content":" } catch (YpxmmException y) {","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"appleraincoat"},"content":" System.out.println(y.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"appleraincoat"},"content":" },","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"appleraincoat"},"content":" BYE {","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"appleraincoat"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage, ArrayList\u003cString\u003e parsed) {","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"appleraincoat"},"content":" ui.sayGoodbye();","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"appleraincoat"},"content":" };","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"appleraincoat"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage, ArrayList\u003cString\u003e parsed) throws YpxmmException {","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"appleraincoat"},"content":" //should never reach here as all invalid inputs will be handled","lastModifiedDate":"2024-01-30"},{"lineNumber":123,"author":{"gitId":"appleraincoat"},"content":" //in parse method in Parser class","lastModifiedDate":"2024-01-30"},{"lineNumber":124,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"appleraincoat":125}},{"path":"src/main/java/DateTimeParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":"public class DateTimeParser {","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":" protected DateTimeFormatter formatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":" public DateTimeParser() {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":" this.formatter \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":" public LocalDateTime parseDateTime(String timeString) {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":" return LocalDateTime.parse(timeString, this.formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"appleraincoat":13}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":" protected LocalDateTime byWhen;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":" protected DateTimeParser dateTimeParser;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":" public Deadline(String name, String byWhenString) {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":" super(name);","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":" this.dateTimeParser \u003d new DateTimeParser();","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":" this.byWhen \u003d this.dateTimeParser.parseDateTime(byWhenString);","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":" return \"[D]\" + super.toString() + \" (by: \" + byWhen.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy HHmm\")) + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"appleraincoat"},"content":" public String toWrite() {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"appleraincoat"},"content":" return \"D | \" + super.toWrite() + \" | \" + byWhen.format(DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"appleraincoat":23}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":" protected LocalDateTime fromWhen;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":" protected LocalDateTime toWhen;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":" protected DateTimeParser dateTimeParser;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":" public Event(String name, String fromWhenString, String toWhenString) {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":" super(name);","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":" this.dateTimeParser \u003d new DateTimeParser();","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":" this.fromWhen \u003d this.dateTimeParser.parseDateTime(fromWhenString);","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":" this.toWhen \u003d this.dateTimeParser.parseDateTime(toWhenString);","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":" return \"[E]\" + super.toString() + \" (from: \" + fromWhen.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy HHmm\"))","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"appleraincoat"},"content":" + \" to: \" + toWhen.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy HHmm\")) + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"appleraincoat"},"content":" public String toWrite() {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"appleraincoat"},"content":" return \"E | \" + super.toWrite() + \" | \" + fromWhen.format(DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\")) +","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"appleraincoat"},"content":" \" to \" + toWhen.format(DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"appleraincoat":27}},{"path":"src/main/java/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":"public class Parser {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":" public static ArrayList\u003cString\u003e parse(String input) throws YpxmmException {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":" ArrayList\u003cString\u003e parsedResult \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":" String[] splitInput \u003d input.split(\" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":" String command \u003d splitInput[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":" switch (command) {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":" case \"bye\", \"list\", \"getcommands\":","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(command);","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":" return parsedResult;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":" case \"mark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":" int index \u003d Integer.parseInt(splitInput[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(command);","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(splitInput[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"appleraincoat"},"content":" return parsedResult;","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"appleraincoat"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Brother, key in mark \u003cspace\u003e then a valid number\");","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"appleraincoat"},"content":" } catch (NumberFormatException n) {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"You tell me now what task am I supposed to mark if you don\u0027t provide me with a number?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"appleraincoat"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"appleraincoat"},"content":" int index \u003d Integer.parseInt(splitInput[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(command);","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(splitInput[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"appleraincoat"},"content":" return parsedResult;","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"appleraincoat"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Brother, key in unmark \u003cspace\u003e then a valid number\");","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"appleraincoat"},"content":" } catch (NumberFormatException n) {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"You tell me now what task am I supposed to unmark if you don\u0027t provide me with a number?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"appleraincoat"},"content":" case \"todo\":","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(command);","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"appleraincoat"},"content":" String[] info \u003d input.split(\"todo \");","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"appleraincoat"},"content":" if (info[1].isBlank()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Help la, can just tell me what is the name of your task anot?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(info[1].trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"appleraincoat"},"content":" return parsedResult;","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"appleraincoat"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"You trying to test my patience ah? Type \\\"get commands\\\" if u blur and dunno how to use me properly.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"appleraincoat"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(command);","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"appleraincoat"},"content":" String[] info \u003d input.split(\"/\");","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"appleraincoat"},"content":" if (info[0].split(\"deadline \")[1].isBlank() || info[1].isBlank()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Help la, can just tell me what is the name of your task anot?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(info[0].substring(9).trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(info[1].trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"appleraincoat"},"content":" return parsedResult;","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"appleraincoat"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"You trying to test my patience ah? Check that u got key in the deadline lehhh\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"appleraincoat"},"content":" \"Type \\\"get commands\\\" if u blur and dunno how to use me properly.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"appleraincoat"},"content":" case \"event\":","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(command);","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"appleraincoat"},"content":" String[] info \u003d input.split(\"/\");","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"appleraincoat"},"content":" if (info[0].split(\"event \")[1].isBlank() || info[1].isBlank() || info[2].isBlank()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Help la, can just tell me what is the name of your task anot?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(info[0].substring(6).trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(info[1].trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(info[2].trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"appleraincoat"},"content":" return parsedResult;","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"appleraincoat"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Eh brother last warning ah. Check that u got key in the start and end time\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"appleraincoat"},"content":" \"Type \\\"get commands\\\" if u blur and dunno how to use me properly.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"appleraincoat"},"content":" case \"delete\":","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"appleraincoat"},"content":" int index \u003d Integer.parseInt(splitInput[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(command);","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(splitInput[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"appleraincoat"},"content":" return parsedResult;","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"appleraincoat"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Brother, key in delete \u003cspace\u003e then a valid number\");","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"appleraincoat"},"content":" } catch (NumberFormatException n) {","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"You tell me now what task am I supposed to delete if you don\u0027t provide me with a number?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"appleraincoat"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Sorry bro, idk what that means. You try type in \\\"getcommands\\\" then see if got what u want.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"appleraincoat":93}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":"public class Storage {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":" public String filePath;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":" public void appendToFile(String textToAppend) throws YpxmmException {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":" FileWriter fw \u003d new FileWriter(file, true); // create a FileWriter in append mode","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"appleraincoat"},"content":" fw.write(textToAppend + \"\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"appleraincoat"},"content":" fw.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"appleraincoat"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"IOException\");","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"appleraincoat"},"content":" public void reWrite(TaskList tasklist) throws YpxmmException {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"appleraincoat"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"appleraincoat"},"content":" FileWriter fw \u003d new FileWriter(file);","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"appleraincoat"},"content":" for (Task t : tasklist.tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"appleraincoat"},"content":" fw.write(t.toWrite() + \"\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"appleraincoat"},"content":" fw.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"appleraincoat"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"IOException\");","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"appleraincoat"},"content":" public ArrayList\u003cTask\u003e load() throws YpxmmException {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"appleraincoat"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"appleraincoat"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"appleraincoat"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"appleraincoat"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"appleraincoat"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"appleraincoat"},"content":" Scanner s \u003d new Scanner(file);","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"appleraincoat"},"content":" while (s.hasNext()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"appleraincoat"},"content":" String[] line \u003d s.nextLine().split(\" \\\\| \");","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"appleraincoat"},"content":" if (line[0].equals(\"T\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"appleraincoat"},"content":" Task task \u003d new ToDo(line[2]);","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"appleraincoat"},"content":" if (line[1].equals(\"1\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"appleraincoat"},"content":" task.setCompleted();","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"appleraincoat"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"appleraincoat"},"content":" } else if (line[0].equals(\"D\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"appleraincoat"},"content":" Task task \u003d new Deadline(line[2], line[3]);","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"appleraincoat"},"content":" if (line[1].equals(\"1\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"appleraincoat"},"content":" task.setCompleted();","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"appleraincoat"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"appleraincoat"},"content":" } else if (line[0].equals(\"E\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"appleraincoat"},"content":" String[] timing \u003d line[3].split(\" to \");","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"appleraincoat"},"content":" Task task \u003d new Event(line[2], timing[0], timing[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"appleraincoat"},"content":" if (line[1].equals(\"1\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"appleraincoat"},"content":" task.setCompleted();","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"appleraincoat"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"appleraincoat"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"IOException\");","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"appleraincoat"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"appleraincoat"},"content":" file.delete();","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Wah bro your file is corrupted leh...I help you delete first\");","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"appleraincoat"},"content":" return tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"appleraincoat":79}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"public class Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":" protected String name;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":" protected boolean completed;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":" //constructor","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":" public Task(String name) {","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":" this.completed \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":" public void markTask() {","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":" this.completed \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":" public void setCompleted() {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":" this.completed \u003d true;","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"appleraincoat"},"content":" public void unmarkTask() {","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"appleraincoat"},"content":" this.completed \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"appleraincoat"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"appleraincoat"},"content":" return (completed ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"appleraincoat"},"content":" public String toWrite() {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"appleraincoat"},"content":" return (completed ? \"1\" : \"0\") + \" | \" + name;","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"appleraincoat"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"appleraincoat"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + name;","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"appleraincoat":36}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":"public class TaskList {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":" public ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":" public void addTask(ArrayList\u003cString\u003e input, Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"appleraincoat"},"content":" if (input.get(0).equals(\"todo\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"appleraincoat"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"appleraincoat"},"content":" } else if (input.get(0).equals(\"deadline\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"appleraincoat"},"content":" try{","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"appleraincoat"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"appleraincoat"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Brother, follow format can or not? Enter dates in dd-mm-yyyy HHmm (24-08-2024 1800)\");","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"appleraincoat"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"appleraincoat"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"appleraincoat"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Brother, follow format can or not? Enter dates in dd-mm-yyyy HHmm (24-08-2024 1800)\");","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"appleraincoat"},"content":" } catch (YpxmmException y) {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"appleraincoat"},"content":" System.out.println(y.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"appleraincoat"},"content":" public void deleteTask(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"appleraincoat"},"content":" String t \u003d tasks.get(index - 1).toString();","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"appleraincoat"},"content":" tasks.remove(index - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"appleraincoat"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Eh u seh isit? Now your list got \" +","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"appleraincoat"},"content":" (tasks.isEmpty() ? \"no tasks to delete.\" : tasks.size() +","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"appleraincoat"},"content":" \" tasks, enter any number from 1 to \" + tasks.size()));","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"appleraincoat"},"content":" } catch (YpxmmException y) {","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"appleraincoat"},"content":" System.out.println(y.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"appleraincoat":54}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":" public ToDo(String name) {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":" super(name);","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":" public String toWrite() {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":" return \"T | \" + super.toWrite();","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"appleraincoat":16}},{"path":"src/main/java/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":"public class Ui {","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":" private Scanner sc;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":" public Ui() {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":" this.sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":" public void sayHello() {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"Hello, I\u0027m Ypxmm.\\nNeed me do what for you?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":" public String readCommand() {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":" return sc.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"appleraincoat"},"content":" public void showLine() {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"-----------------------------------\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"appleraincoat"},"content":" \"---------------------------\");","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"appleraincoat"},"content":" public void getCommands() {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"Take note ah, enter all time based commands are in \u003cdd-mm-yyyy HHmm\u003e format\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"appleraincoat"},"content":" \" todo \u003ctask\u003e - adds todo\\n deadline \u003ctask\u003e/\u003cby when\u003e - adds deadline\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"appleraincoat"},"content":" \" event \u003ctask\u003e/\u003cfrom when\u003e/\u003cto when\u003e - adds event\\n list - lists out all tasks\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"appleraincoat"},"content":" \" mark \u003cx\u003e - marks task x as done\\n unmark \u003cx\u003e - unmarks task x as undone\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"appleraincoat"},"content":" \" bye - exit\");","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"appleraincoat"},"content":" public void printList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"appleraincoat"},"content":" if (tasks.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"No tasks yet la bro\");","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"appleraincoat"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"Ok wait ah, here are your tasks:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"appleraincoat"},"content":" int count \u003d 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"appleraincoat"},"content":" for (Task t : tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"appleraincoat"},"content":" System.out.println(count + \". \" + t.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"appleraincoat"},"content":" count++;","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"appleraincoat"},"content":" public void addTaskMessage(Task task, TaskList tasklist) {","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"Ok I help you add this one liao:\\n\" + task.toString() +","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"appleraincoat"},"content":" \"\\nNow your list got \" + tasklist.tasks.size() + ((tasklist.tasks.size() \u003d\u003d 1) ? \" task.\" : \" tasks.\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"appleraincoat"},"content":" public void deleteTaskMessage(Task task, TaskList tasklist) {","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"Ok deleted liao:\\n\" + task.toString() + \"\\nNow your list got \" +","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"appleraincoat"},"content":" (tasklist.tasks.isEmpty() ? \"no tasks.\" : tasklist.tasks.size() + \" tasks left.\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"appleraincoat"},"content":" public void markMessage(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"Upz la, mark for you already!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"appleraincoat"},"content":" System.out.println(task.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"appleraincoat"},"content":" public void unmarkMessage(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"Eh wake up your idea, faster finish can or not?? Unmark for you already la!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"appleraincoat"},"content":" System.out.println(task.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"appleraincoat"},"content":" public void sayGoodbye() {","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"Oh you need zao alr? Okok see you next time!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"appleraincoat":69}},{"path":"src/main/java/Ypxmm.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":"import java.io.File;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":"public class Ypxmm {","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":" private Storage storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":" private Ui ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":" public Ypxmm(String filePath) {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"appleraincoat"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"appleraincoat"},"content":" } catch (YpxmmException y) {","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"appleraincoat"},"content":" System.out.println(y.getMessage());","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"appleraincoat"},"content":" public void run() {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"appleraincoat"},"content":" ui.sayHello();","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"appleraincoat"},"content":" ui.showLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"appleraincoat"},"content":" boolean isRunning \u003d true;","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"appleraincoat"},"content":" while (isRunning) {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"appleraincoat"},"content":" String input \u003d ui.readCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"appleraincoat"},"content":" ui.showLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"appleraincoat"},"content":" ArrayList\u003cString\u003e parsed \u003d Parser.parse(input);","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"appleraincoat"},"content":" Command command \u003d Command.valueOf(parsed.get(0).toUpperCase());","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"appleraincoat"},"content":" command.execute(tasks, ui, storage, parsed);","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"appleraincoat"},"content":" ui.showLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"appleraincoat"},"content":" if (command.equals(Command.BYE)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"appleraincoat"},"content":" isRunning \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"appleraincoat"},"content":" } catch (YpxmmException y) {","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"appleraincoat"},"content":" System.out.println(y.getMessage());","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"appleraincoat"},"content":" ui.showLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"appleraincoat"},"content":" ui.sayGoodbye();","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"appleraincoat"},"content":" public static void main(String[] args) throws YpxmmException {","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"appleraincoat"},"content":" new Ypxmm(\"/data/Ypxmm.txt\").run();","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"appleraincoat":53}},{"path":"src/main/java/YpxmmException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"public class YpxmmException extends Exception {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":" public YpxmmException(String message) {","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":" super(message);","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"appleraincoat":5}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"mark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"mark t","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":"unmark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":"unmark y","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":"todo","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":"todo eat","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":"deadline homework /","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":"deadline homework /5pm","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":"event dinner /5pm /","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":"event dinner /5pm /6pm","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":"mark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":"delete 4","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":"delete y","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":"delete 2","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":"zzz","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"appleraincoat"},"content":"getcommands","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"appleraincoat"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"appleraincoat":20}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":"java -classpath ..\\bin Ypxmm \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":20,"appleraincoat":1}}] diff --git a/appleraincoat_ip_master/commits.json b/appleraincoat_ip_master/commits.json index c1aba36b..619b6e03 100644 --- a/appleraincoat_ip_master/commits.json +++ b/appleraincoat_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"appleraincoat":[{"date":"2024-01-24","commitResults":[{"hash":"7b7c9116e31eba52d9b99a5d02a58d814721c0c8","isMergeCommit":false,"messageTitle":"Added chatbot Ypxmm, with only simple greetings before exiting","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":10}}},{"hash":"301514198e0c45709c3a0c0605cc68736cfe9a52","isMergeCommit":false,"messageTitle":"Added the ability to echo messages, exiting on input \"bye\".","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":2}}},{"hash":"853403d4e6436a88595bd004a0b59df5368745f3","isMergeCommit":false,"messageTitle":"Removed ability to echo, keeps a lsit of inputs now and prints it upon request.","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":1}}},{"hash":"5dd07de207755da3675ca3431bdd21e5f3991562","isMergeCommit":false,"messageTitle":"Abstracted a Task class.","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":8}}},{"hash":"c4997f86cf293bbd2785a509ac8307df94419def","isMergeCommit":false,"messageTitle":"Add and extend 3 types of Tasks, Deadline, Event and Todo. Add static methods into main class to abstract out further.","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":111,"deletions":14}}},{"hash":"436fb0c4dffc3ce39b71dee8293dfdaf30bb874a","isMergeCommit":false,"messageTitle":"Add some simple test cases for semi-automated testing.","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":1,"deletions":2},"bat":{"insertions":1,"deletions":1}}},{"hash":"6ad583d035115ea7ad5613caab675016719ad026","isMergeCommit":false,"messageTitle":"Add handling of invalid input for mark and unmark methods.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":2}}}]},{"date":"2024-01-25","commitResults":[{"hash":"7d8af053ce1e8b334bbc9bd36e92f117a7edc7e2","isMergeCommit":false,"messageTitle":"Add YpxmmException class. Able to handle invalid inputs.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":97,"deletions":51}}},{"hash":"239f76baef9cc0af555d8e14e659ec00ab6b0cc3","isMergeCommit":false,"messageTitle":"Add more exception handling features.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":5}}},{"hash":"1fd8acb5402a648f6f1849d1af0da08bdd54eaea","isMergeCommit":false,"messageTitle":"Add test cases for error handling.","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":5}}},{"hash":"70fc418c2ef05d445951aed3fa80864ceec8f362","isMergeCommit":false,"messageTitle":"Add delete function.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":2}}},{"hash":"157f0c497ff797f3677dcdcedcecc7ca486f634f","isMergeCommit":false,"messageTitle":"Add new test cases.","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0}}},{"hash":"6ce2e148e446a0e26ad3b1d270901785e93a8771","isMergeCommit":false,"messageTitle":"Add Enum class for commands","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":0}}},{"hash":"cba57607a4f94db49337525247091a41b9928bd0","isMergeCommit":false,"messageTitle":"Add enums, and change implementation to use them in a switch statement. Add 1 more catch for illegal argument exception. Add more test cases.","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"txt":{"insertions":12,"deletions":6},"java":{"insertions":69,"deletions":66}}}]},{"date":"2024-01-28","commitResults":[{"hash":"596f5dbf5cc2ff9cfebd6f92bdafe43c8f4e8498","isMergeCommit":false,"messageTitle":"Change import statements in Ypxmm.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":1}}}]},{"date":"2024-01-29","commitResults":[{"hash":"a78bfed5020264c8c93afeeb140b0feaacbe091b","isMergeCommit":false,"messageTitle":"Add ability to save tasks to a file in hard disk, and load from it when initialise.","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":123,"deletions":0}}},{"hash":"21b1149b18864ffaa994040823b99e181075d9cf","isMergeCommit":false,"messageTitle":"Add trimming when initialising tasks.","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":3,"deletions":3}}},{"hash":"825f1e9fdff8aa9339dcda229ec93abd8dd05941","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"cbc1fbc38e2bdd263da2e125d9edd292669ef698","isMergeCommit":false,"messageTitle":"Change byWhen variable in Deadline class to store in LocalDateTime format.","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":4},"java":{"insertions":10,"deletions":3}}},{"hash":"1e0213e96c828563208d7c718aaaf1aea725a9b7","isMergeCommit":false,"messageTitle":"Change Deadline and Event class to store timing with LocalDateTime type, adjust formatting to be consistent.","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":4},"java":{"insertions":23,"deletions":14}}},{"hash":"4c28cb3b0c0016d7ded86aa94edd82eee20db2b3","isMergeCommit":false,"messageTitle":"Modify getcommands command to suit the change in format","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1},"java":{"insertions":5,"deletions":4}}},{"hash":"696d08e5824f83ae3967559379f4f0b2b65dd9fa","isMergeCommit":false,"messageTitle":"Add a catch for DateTimeParseException if the user inputs in the wrong format","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":0}}},{"hash":"49255cd0b1928bd41d91a3a17b5d9b8268ddf06d","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"appleraincoat":{"java":433,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":23}},"authorContributionVariance":{"appleraincoat":17804.977},"authorDisplayNameMap":{"appleraincoat":"CS2103T-W10-1 LAU ..AMES"}} +{"authorDailyContributionsMap":{"appleraincoat":[{"date":"2024-01-24","commitResults":[{"hash":"7b7c9116e31eba52d9b99a5d02a58d814721c0c8","isMergeCommit":false,"messageTitle":"Added chatbot Ypxmm, with only simple greetings before exiting","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":10}}},{"hash":"301514198e0c45709c3a0c0605cc68736cfe9a52","isMergeCommit":false,"messageTitle":"Added the ability to echo messages, exiting on input \"bye\".","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":2}}},{"hash":"853403d4e6436a88595bd004a0b59df5368745f3","isMergeCommit":false,"messageTitle":"Removed ability to echo, keeps a lsit of inputs now and prints it upon request.","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":1}}},{"hash":"5dd07de207755da3675ca3431bdd21e5f3991562","isMergeCommit":false,"messageTitle":"Abstracted a Task class.","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":8}}},{"hash":"c4997f86cf293bbd2785a509ac8307df94419def","isMergeCommit":false,"messageTitle":"Add and extend 3 types of Tasks, Deadline, Event and Todo. Add static methods into main class to abstract out further.","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":111,"deletions":14}}},{"hash":"436fb0c4dffc3ce39b71dee8293dfdaf30bb874a","isMergeCommit":false,"messageTitle":"Add some simple test cases for semi-automated testing.","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":1,"deletions":2},"bat":{"insertions":1,"deletions":1}}},{"hash":"6ad583d035115ea7ad5613caab675016719ad026","isMergeCommit":false,"messageTitle":"Add handling of invalid input for mark and unmark methods.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":2}}}]},{"date":"2024-01-25","commitResults":[{"hash":"7d8af053ce1e8b334bbc9bd36e92f117a7edc7e2","isMergeCommit":false,"messageTitle":"Add YpxmmException class. Able to handle invalid inputs.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":97,"deletions":51}}},{"hash":"239f76baef9cc0af555d8e14e659ec00ab6b0cc3","isMergeCommit":false,"messageTitle":"Add more exception handling features.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":5}}},{"hash":"1fd8acb5402a648f6f1849d1af0da08bdd54eaea","isMergeCommit":false,"messageTitle":"Add test cases for error handling.","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":5}}},{"hash":"70fc418c2ef05d445951aed3fa80864ceec8f362","isMergeCommit":false,"messageTitle":"Add delete function.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":2}}},{"hash":"157f0c497ff797f3677dcdcedcecc7ca486f634f","isMergeCommit":false,"messageTitle":"Add new test cases.","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0}}},{"hash":"6ce2e148e446a0e26ad3b1d270901785e93a8771","isMergeCommit":false,"messageTitle":"Add Enum class for commands","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":0}}},{"hash":"cba57607a4f94db49337525247091a41b9928bd0","isMergeCommit":false,"messageTitle":"Add enums, and change implementation to use them in a switch statement. Add 1 more catch for illegal argument exception. Add more test cases.","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"txt":{"insertions":12,"deletions":6},"java":{"insertions":69,"deletions":66}}}]},{"date":"2024-01-28","commitResults":[{"hash":"596f5dbf5cc2ff9cfebd6f92bdafe43c8f4e8498","isMergeCommit":false,"messageTitle":"Change import statements in Ypxmm.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":1}}}]},{"date":"2024-01-29","commitResults":[{"hash":"a78bfed5020264c8c93afeeb140b0feaacbe091b","isMergeCommit":false,"messageTitle":"Add ability to save tasks to a file in hard disk, and load from it when initialise.","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":123,"deletions":0}}},{"hash":"21b1149b18864ffaa994040823b99e181075d9cf","isMergeCommit":false,"messageTitle":"Add trimming when initialising tasks.","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":3,"deletions":3}}},{"hash":"825f1e9fdff8aa9339dcda229ec93abd8dd05941","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"cbc1fbc38e2bdd263da2e125d9edd292669ef698","isMergeCommit":false,"messageTitle":"Change byWhen variable in Deadline class to store in LocalDateTime format.","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":4},"java":{"insertions":10,"deletions":3}}},{"hash":"1e0213e96c828563208d7c718aaaf1aea725a9b7","isMergeCommit":false,"messageTitle":"Change Deadline and Event class to store timing with LocalDateTime type, adjust formatting to be consistent.","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":4},"java":{"insertions":23,"deletions":14}}},{"hash":"4c28cb3b0c0016d7ded86aa94edd82eee20db2b3","isMergeCommit":false,"messageTitle":"Modify getcommands command to suit the change in format","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1},"java":{"insertions":5,"deletions":4}}},{"hash":"696d08e5824f83ae3967559379f4f0b2b65dd9fa","isMergeCommit":false,"messageTitle":"Add a catch for DateTimeParseException if the user inputs in the wrong format","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":0}}},{"hash":"49255cd0b1928bd41d91a3a17b5d9b8268ddf06d","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-30","commitResults":[{"hash":"7ea8744afe39a8887d405e7c2e3d17fe286c6781","isMergeCommit":false,"messageTitle":"Refactor code. Rename EnumCommands to Command, add Parser, Storage, Ui, TaskList classes.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":441,"deletions":289}}},{"hash":"4ee5530812003ce55649fa4d20019a6d651e7f7b","isMergeCommit":false,"messageTitle":"Small bug fixes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":6}}},{"hash":"854391b613101ec18d8e3f404a58deda59eb8c34","isMergeCommit":false,"messageTitle":"Add DateTImeParser class that parses format of time in Deadline and Event classes. Add other small modifications to UI output.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":15}}},{"hash":"4237fc396670b957ee9a2b206d9af9f1c6011ed4","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"appleraincoat":{"java":593,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":23}},"authorContributionVariance":{"appleraincoat":53907.5},"authorDisplayNameMap":{"appleraincoat":"CS2103T-W10-1 LAU ..AMES"}} diff --git a/archive.zip b/archive.zip index 5b8aface..681cb3cf 100644 Binary files a/archive.zip and b/archive.zip differ diff --git a/bertrandong_ip_master/authorship.json b/bertrandong_ip_master/authorship.json index c8408f61..97c1c27a 100644 --- a/bertrandong_ip_master/authorship.json +++ b/bertrandong_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"bertrandong"},"content":"T|1|level 7","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"bertrandong"},"content":"T|0|1","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"bertrandong"},"content":"D|0|test|null","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"bertrandong"},"content":"E|0|test2|null|null","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"bertrandong"},"content":"E|0|test3|2/2/2023 2359|2/2/2024 2359","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"bertrandong"},"content":"E|0|test2|2/2/2023 2359|2/2/2024 2400","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"bertrandong":6}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bertrandong"},"content":"import Task.Task;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"bertrandong"},"content":"import Task.Todo;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"bertrandong"},"content":"import Task.Deadline;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"bertrandong"},"content":"import Task.Event;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"bertrandong"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"bertrandong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"bertrandong"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":11,"author":{"gitId":"bertrandong"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"bertrandong"},"content":" String userInput;","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"bertrandong"},"content":" ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"bertrandong"},"content":" SaveFile saveFile \u003d new SaveFile(\"duke.txt\", \"./src/main/data\");","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"bertrandong"},"content":" taskList \u003d saveFile.readFile();","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"bertrandong"},"content":" saveFile.createDirectory();","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"bertrandong"},"content":" saveFile.createFile();","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"bertrandong"},"content":" System.out.println(\"Hello! I\u0027m TodoPal!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"bertrandong"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"bertrandong"},"content":" do {","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"bertrandong"},"content":" userInput \u003d scanner.nextLine();","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"bertrandong"},"content":" if (userInput.equals(\"bye\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"bertrandong"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"bertrandong"},"content":" } else if (userInput.equals(\"list\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"bertrandong"},"content":" if (taskList.isEmpty()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"bertrandong"},"content":" System.out.println(\"Your task list is empty.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"bertrandong"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"bertrandong"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"bertrandong"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"bertrandong"},"content":" System.out.println((i + 1) + \".\" + taskList.get(i).toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"bertrandong"},"content":" } else if (userInput.startsWith(\"mark\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"bertrandong"},"content":" markTask(userInput, taskList, true);","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"bertrandong"},"content":" saveFile.saveToFile(taskList);","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"bertrandong"},"content":" } else if (userInput.startsWith(\"unmark\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"bertrandong"},"content":" markTask(userInput, taskList, false);","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"bertrandong"},"content":" saveFile.saveToFile(taskList);","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"bertrandong"},"content":" } else if (userInput.startsWith(\"delete\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"bertrandong"},"content":" deleteTask(userInput, taskList);","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"bertrandong"},"content":" saveFile.saveToFile(taskList);","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"bertrandong"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"bertrandong"},"content":" // Sort out type of task","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"bertrandong"},"content":" if (userInput.startsWith(\"todo\")) { // Todo","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"bertrandong"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"bertrandong"},"content":" String description \u003d userInput.split(\" \", 2)[1];","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"bertrandong"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"bertrandong"},"content":" System.out.println(\"OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"bertrandong"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"bertrandong"},"content":" Todo newTodo \u003d new Todo(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":54,"author":{"gitId":"bertrandong"},"content":" taskList.add(newTodo);","lastModifiedDate":"2024-01-23"},{"lineNumber":55,"author":{"gitId":"bertrandong"},"content":" saveFile.saveToFile(taskList);","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"bertrandong"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":57,"author":{"gitId":"bertrandong"},"content":" System.out.println(newTodo.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":58,"author":{"gitId":"bertrandong"},"content":" System.out.println(\"Now you have \" + taskList.size() + \" task(s) in the list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":59,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"bertrandong"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"bertrandong"},"content":" System.out.println(\"OOPS!!! Please follow the given todo format \u0027todo \u003ctask description\u003e\u0027.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"bertrandong"},"content":" } else if (userInput.startsWith(\"deadline\")) { // Deadline","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"bertrandong"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"bertrandong"},"content":" String description \u003d userInput.split(\" /by \")[0].split(\" \", 2)[1];","lastModifiedDate":"2024-01-23"},{"lineNumber":66,"author":{"gitId":"bertrandong"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"bertrandong"},"content":" System.out.println(\"OOPS!!! The description of a deadline cannot be empty.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"bertrandong"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"bertrandong"},"content":" String by \u003d userInput.split(\" /by \")[1];","lastModifiedDate":"2024-01-23"},{"lineNumber":70,"author":{"gitId":"bertrandong"},"content":" Deadline newDeadline \u003d new Deadline(description, by);","lastModifiedDate":"2024-01-23"},{"lineNumber":71,"author":{"gitId":"bertrandong"},"content":" taskList.add(newDeadline);","lastModifiedDate":"2024-01-23"},{"lineNumber":72,"author":{"gitId":"bertrandong"},"content":" saveFile.saveToFile(taskList);","lastModifiedDate":"2024-01-27"},{"lineNumber":73,"author":{"gitId":"bertrandong"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":74,"author":{"gitId":"bertrandong"},"content":" System.out.println(\"added: \" + newDeadline.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":75,"author":{"gitId":"bertrandong"},"content":" System.out.println(\"Now you have \" + taskList.size() + \" task(s) in the list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":76,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":77,"author":{"gitId":"bertrandong"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":78,"author":{"gitId":"bertrandong"},"content":" System.out.println(\"OOPS!!! Please follow the given deadline format \u0027deadline \u003ctask description\u003e /by \u003cdeadline\u003e\u0027.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":79,"author":{"gitId":"bertrandong"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":80,"author":{"gitId":"bertrandong"},"content":" System.out.println(\"Invalid date time provided!\");","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":82,"author":{"gitId":"bertrandong"},"content":" } else if (userInput.startsWith(\"event\")) { // Event","lastModifiedDate":"2024-01-24"},{"lineNumber":83,"author":{"gitId":"bertrandong"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":84,"author":{"gitId":"bertrandong"},"content":" String description \u003d userInput.split(\" /from \")[0].split(\" \", 2)[1];","lastModifiedDate":"2024-01-23"},{"lineNumber":85,"author":{"gitId":"bertrandong"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":86,"author":{"gitId":"bertrandong"},"content":" System.out.println(\"OOPS!!! The description of an event cannot be empty.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":87,"author":{"gitId":"bertrandong"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":88,"author":{"gitId":"bertrandong"},"content":" String from \u003d userInput.split(\" /from \")[1].split(\" /to \")[0];","lastModifiedDate":"2024-01-23"},{"lineNumber":89,"author":{"gitId":"bertrandong"},"content":" String to \u003d userInput.split(\" /to \")[1];","lastModifiedDate":"2024-01-23"},{"lineNumber":90,"author":{"gitId":"bertrandong"},"content":" Event newEvent \u003d new Event(description, from, to);","lastModifiedDate":"2024-01-23"},{"lineNumber":91,"author":{"gitId":"bertrandong"},"content":" taskList.add(newEvent);","lastModifiedDate":"2024-01-23"},{"lineNumber":92,"author":{"gitId":"bertrandong"},"content":" saveFile.saveToFile(taskList);","lastModifiedDate":"2024-01-27"},{"lineNumber":93,"author":{"gitId":"bertrandong"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":94,"author":{"gitId":"bertrandong"},"content":" System.out.println(\"added: \" + newEvent.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":95,"author":{"gitId":"bertrandong"},"content":" System.out.println(\"Now you have \" + taskList.size() + \" task(s) in the list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":96,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":97,"author":{"gitId":"bertrandong"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":98,"author":{"gitId":"bertrandong"},"content":" System.out.println(\"OOPS!!! Please follow the given event format \u0027event *task description* /from \u003cstart\u003e /to \u003cend\u003e\u0027.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":99,"author":{"gitId":"bertrandong"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":100,"author":{"gitId":"bertrandong"},"content":" System.out.println(\"Invalid date time provided!\");","lastModifiedDate":"2024-01-28"},{"lineNumber":101,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":102,"author":{"gitId":"bertrandong"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":103,"author":{"gitId":"bertrandong"},"content":" System.out.println(\"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-( Please start with todo, deadline or event.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":104,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":105,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":106,"author":{"gitId":"bertrandong"},"content":" } while (true);","lastModifiedDate":"2024-01-23"},{"lineNumber":107,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":108,"author":{"gitId":"bertrandong"},"content":" System.out.println(\"Bye! Hope to see you again!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":109,"author":{"gitId":"bertrandong"},"content":" scanner.close();","lastModifiedDate":"2024-01-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":111,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":112,"author":{"gitId":"bertrandong"},"content":" private static void markTask(String userInput, ArrayList\u003cTask\u003e taskList, boolean isMarked) {","lastModifiedDate":"2024-01-23"},{"lineNumber":113,"author":{"gitId":"bertrandong"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":114,"author":{"gitId":"bertrandong"},"content":" int taskIndex \u003d Integer.parseInt(userInput.split(\" \")[1]) - 1;","lastModifiedDate":"2024-01-23"},{"lineNumber":115,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":116,"author":{"gitId":"bertrandong"},"content":" if (taskIndex \u003e\u003d 0 \u0026\u0026 taskIndex \u003c taskList.size()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":117,"author":{"gitId":"bertrandong"},"content":" taskList.get(taskIndex).setDone(isMarked);","lastModifiedDate":"2024-01-23"},{"lineNumber":118,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":119,"author":{"gitId":"bertrandong"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as \" + (isMarked ? \"done:\" : \"not done yet:\"));","lastModifiedDate":"2024-01-23"},{"lineNumber":120,"author":{"gitId":"bertrandong"},"content":" System.out.println(taskList.get(taskIndex).toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":121,"author":{"gitId":"bertrandong"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":122,"author":{"gitId":"bertrandong"},"content":" System.out.println(\"OOPS!!! Task not found. Please provide a valid task index or check that the task exists.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":123,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":124,"author":{"gitId":"bertrandong"},"content":" } catch (NumberFormatException | ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":125,"author":{"gitId":"bertrandong"},"content":" System.out.println(\"Invalid input. Please provide a valid task index.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":126,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":127,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":128,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":129,"author":{"gitId":"bertrandong"},"content":" private static void deleteTask(String userInput, ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2024-01-24"},{"lineNumber":130,"author":{"gitId":"bertrandong"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":131,"author":{"gitId":"bertrandong"},"content":" int taskIndex \u003d Integer.parseInt(userInput.split(\" \")[1]) - 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":132,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":133,"author":{"gitId":"bertrandong"},"content":" if (taskIndex \u003e\u003d 0 \u0026\u0026 taskIndex \u003c taskList.size()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":134,"author":{"gitId":"bertrandong"},"content":" Task removedTask \u003d taskList.remove(taskIndex);","lastModifiedDate":"2024-01-24"},{"lineNumber":135,"author":{"gitId":"bertrandong"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":136,"author":{"gitId":"bertrandong"},"content":" System.out.println(removedTask.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":137,"author":{"gitId":"bertrandong"},"content":" System.out.println(\"Now you have \" + taskList.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":138,"author":{"gitId":"bertrandong"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":139,"author":{"gitId":"bertrandong"},"content":" System.out.println(\"OOPS!!! Task not found. Please provide a valid task index or check that the task exists.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":140,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":141,"author":{"gitId":"bertrandong"},"content":" } catch (NumberFormatException | ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":142,"author":{"gitId":"bertrandong"},"content":" System.out.println(\"Invalid input. Please provide a valid task index.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":143,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"-":5,"bertrandong":140}},{"path":"src/main/java/SaveFile.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bertrandong"},"content":"import java.io.File;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"bertrandong"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"bertrandong"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"bertrandong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"bertrandong"},"content":"import Task.*;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"bertrandong"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"bertrandong"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"bertrandong"},"content":"public class SaveFile {","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"bertrandong"},"content":" private String fileName;","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"bertrandong"},"content":" private String directoryName;","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"bertrandong"},"content":" public SaveFile(String fileName, String directoryName) {","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"bertrandong"},"content":" this.fileName \u003d fileName;","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"bertrandong"},"content":" this.directoryName \u003d directoryName;","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"bertrandong"},"content":" public void createDirectory() {","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"bertrandong"},"content":" File directory \u003d new File(directoryName);","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"bertrandong"},"content":" if (!directory.exists()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"bertrandong"},"content":" if (directory.mkdir()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"bertrandong"},"content":" } else {","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"bertrandong"},"content":" System.err.println(\"Error creating directory\");","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"bertrandong"},"content":" public void createFile() {","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"bertrandong"},"content":" File file \u003d new File(directoryName, fileName);","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"bertrandong"},"content":" if(!file.exists()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"bertrandong"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"bertrandong"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"bertrandong"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"bertrandong"},"content":" System.out.println(\"Error generating task list\");","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"bertrandong"},"content":" public void saveToFile(ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"bertrandong"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"bertrandong"},"content":" FileWriter fw \u003d new FileWriter(this.directoryName + \"/\" + this.fileName);","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"bertrandong"},"content":" for (Task t : taskList) {","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"bertrandong"},"content":" fw.write(t.toFileString());","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"bertrandong"},"content":" fw.write((System.lineSeparator()));","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"bertrandong"},"content":" fw.close();","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"bertrandong"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"bertrandong"},"content":" System.err.println(\"Error writing task list to file: \" + e.getMessage());","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"bertrandong"},"content":" public ArrayList\u003cTask\u003e readFile() {","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"bertrandong"},"content":" ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"bertrandong"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"bertrandong"},"content":" File f \u003d new File(this.directoryName + \"/\" + this.fileName);","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"bertrandong"},"content":" Scanner s \u003d new Scanner(f);","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"bertrandong"},"content":" while (s.hasNextLine()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"bertrandong"},"content":" String data \u003d s.nextLine();","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"bertrandong"},"content":" boolean isDone;","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"bertrandong"},"content":" if (data.split(\"[|]\")[1].equals(\"0\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"bertrandong"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"bertrandong"},"content":" } else {","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"bertrandong"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-27"},{"lineNumber":64,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":65,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":66,"author":{"gitId":"bertrandong"},"content":" if (data.startsWith(\"T\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"bertrandong"},"content":" String description \u003d data.split(\"[|]\")[2];","lastModifiedDate":"2024-01-27"},{"lineNumber":68,"author":{"gitId":"bertrandong"},"content":" Todo newTodo \u003d new Todo(description, isDone);","lastModifiedDate":"2024-01-27"},{"lineNumber":69,"author":{"gitId":"bertrandong"},"content":" taskList.add(newTodo);","lastModifiedDate":"2024-01-27"},{"lineNumber":70,"author":{"gitId":"bertrandong"},"content":" } else if (data.startsWith(\"D\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":71,"author":{"gitId":"bertrandong"},"content":" String description \u003d data.split(\"[|]\")[2];","lastModifiedDate":"2024-01-27"},{"lineNumber":72,"author":{"gitId":"bertrandong"},"content":" String by \u003d data.split(\"[|]\")[3];","lastModifiedDate":"2024-01-27"},{"lineNumber":73,"author":{"gitId":"bertrandong"},"content":" Deadline newDeadline \u003d new Deadline(description, isDone, by);","lastModifiedDate":"2024-01-27"},{"lineNumber":74,"author":{"gitId":"bertrandong"},"content":" taskList.add(newDeadline);","lastModifiedDate":"2024-01-27"},{"lineNumber":75,"author":{"gitId":"bertrandong"},"content":" } else if (data.startsWith(\"E\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":76,"author":{"gitId":"bertrandong"},"content":" String description \u003d data.split(\"[|]\")[2];","lastModifiedDate":"2024-01-27"},{"lineNumber":77,"author":{"gitId":"bertrandong"},"content":" String from \u003d data.split(\"[|]\")[3];","lastModifiedDate":"2024-01-27"},{"lineNumber":78,"author":{"gitId":"bertrandong"},"content":" String to \u003d data.split(\"[|]\")[4];","lastModifiedDate":"2024-01-27"},{"lineNumber":79,"author":{"gitId":"bertrandong"},"content":" Event newEvent \u003d new Event(description, isDone, from, to);","lastModifiedDate":"2024-01-27"},{"lineNumber":80,"author":{"gitId":"bertrandong"},"content":" taskList.add(newEvent);","lastModifiedDate":"2024-01-27"},{"lineNumber":81,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":82,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":83,"author":{"gitId":"bertrandong"},"content":" s.close();","lastModifiedDate":"2024-01-27"},{"lineNumber":84,"author":{"gitId":"bertrandong"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":85,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":86,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":87,"author":{"gitId":"bertrandong"},"content":" return taskList;","lastModifiedDate":"2024-01-27"},{"lineNumber":88,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":89,"author":{"gitId":"bertrandong"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"bertrandong":89}},{"path":"src/main/java/Task/DateTime.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bertrandong"},"content":"package Task;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"bertrandong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"bertrandong"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"bertrandong"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"bertrandong"},"content":"public class DateTime {","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"bertrandong"},"content":" private String dateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"bertrandong"},"content":" private LocalDateTime dateTimeData;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"bertrandong"},"content":" public DateTime(String dateTime) {","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"bertrandong"},"content":" DateTimeFormatter inputFormat \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"bertrandong"},"content":" this.dateTime \u003d dateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"bertrandong"},"content":" this.dateTimeData \u003d LocalDateTime.parse(dateTime, inputFormat);","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"bertrandong"},"content":" public boolean isValid() {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"bertrandong"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"bertrandong"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"bertrandong"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"bertrandong"},"content":" return true;","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"bertrandong"},"content":" public String formatDate() {","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"bertrandong"},"content":" DateTimeFormatter outputFormat \u003d DateTimeFormatter.ofPattern(\"dd MMM yyyy, HHmm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"bertrandong"},"content":" return this.dateTimeData.format(outputFormat);","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"bertrandong"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"bertrandong":28}},{"path":"src/main/java/Task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bertrandong"},"content":"package Task;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"bertrandong"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"bertrandong"},"content":" private String by;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"bertrandong"},"content":" private DateTime deadline;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"bertrandong"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"bertrandong"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"bertrandong"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"bertrandong"},"content":" this.deadline \u003d new DateTime(by);","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"bertrandong"},"content":" public Deadline(String description, boolean isDone, String by) {","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"bertrandong"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"bertrandong"},"content":" this.deadline \u003d new DateTime(by);","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"bertrandong"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"bertrandong"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"bertrandong"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.deadline.formatDate() + \"hrs)\";","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"bertrandong"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"bertrandong"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"bertrandong"},"content":" return \"D\" + super.toFileString() + \"|\" + this.by;","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"bertrandong"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"bertrandong":27}},{"path":"src/main/java/Task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bertrandong"},"content":"package Task;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"bertrandong"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"bertrandong"},"content":" private String from;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"bertrandong"},"content":" private String to;","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"bertrandong"},"content":" private DateTime start;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"bertrandong"},"content":" private DateTime end;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"bertrandong"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"bertrandong"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"bertrandong"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"bertrandong"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"bertrandong"},"content":" this.start \u003d new DateTime(from);","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"bertrandong"},"content":" this.end \u003d new DateTime(to);","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"bertrandong"},"content":" public Event(String description, boolean isDone, String from, String to) {","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"bertrandong"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"bertrandong"},"content":" this.start \u003d new DateTime(from);","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"bertrandong"},"content":" this.end \u003d new DateTime(to);","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"bertrandong"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"bertrandong"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"bertrandong"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.start.formatDate() + \"hrs to: \" + this.end.formatDate() + \"hrs)\";","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"bertrandong"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"bertrandong"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"bertrandong"},"content":" return \"E\" + super.toFileString() + \"|\" + this.from + \"|\" + this.to;","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"bertrandong"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"bertrandong":32}},{"path":"src/main/java/Task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bertrandong"},"content":"package Task;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"bertrandong"},"content":"public class Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"bertrandong"},"content":" private String description;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"bertrandong"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"bertrandong"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"bertrandong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"bertrandong"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"bertrandong"},"content":" public Task(String description, boolean isDone) {","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"bertrandong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"bertrandong"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"bertrandong"},"content":" public void setDone(boolean done) {","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"bertrandong"},"content":" this.isDone \u003d done;","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"bertrandong"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"bertrandong"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"bertrandong"},"content":" return \"[\" + (this.isDone ? \"X\" : \" \") + \"] \" + this.description;","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"bertrandong"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"bertrandong"},"content":" return \"|\" + (this.isDone ? \"1\" : \"0\") + \"|\" + this.description;","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"bertrandong"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"bertrandong":28}},{"path":"src/main/java/Task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bertrandong"},"content":"package Task;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"bertrandong"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"bertrandong"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"bertrandong"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"bertrandong"},"content":" public Todo(String description, boolean isDone) {","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"bertrandong"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"bertrandong"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"bertrandong"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"bertrandong"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"bertrandong"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"bertrandong"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"bertrandong"},"content":" return \"T\" + super.toFileString();","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"bertrandong"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"bertrandong":21}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"bertrandong"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"bertrandong"},"content":"todo","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"bertrandong"},"content":"todo borrow book","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"bertrandong"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"bertrandong"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"bertrandong"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"bertrandong"},"content":"mark","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"bertrandong"},"content":"mark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"bertrandong"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"bertrandong"},"content":"unmark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"bertrandong"},"content":"delete","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"bertrandong"},"content":"delete 1","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"bertrandong"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"bertrandong"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"bertrandong":14}}] +[{"path":"src/main/data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"bertrandong"},"content":"T|0|level 7","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"bertrandong"},"content":"T|0|1","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"bertrandong"},"content":"T|0|test","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"bertrandong"},"content":"D|0|24/2/2024 1300|24/2/2024 1300","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"bertrandong":4}},{"path":"src/main/java/Command/AddCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bertrandong"},"content":"package Command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"bertrandong"},"content":"import Utilities.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"bertrandong"},"content":"import Utilities.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"bertrandong"},"content":"import Task.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"bertrandong"},"content":"import Task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"bertrandong"},"content":"public class AddCommand extends Command{","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"bertrandong"},"content":" private Task taskToAdd;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"bertrandong"},"content":" public AddCommand(Task newTask) {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"bertrandong"},"content":" super(false);","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"bertrandong"},"content":" this.taskToAdd \u003d newTask;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"bertrandong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"bertrandong"},"content":" public void execute(TaskList taskList, Storage storage, Ui ui) {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"bertrandong"},"content":" taskList.addTask(this.taskToAdd);","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"bertrandong"},"content":" storage.save(taskList);","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"bertrandong"},"content":" ui.showTaskListLength(taskList);","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"bertrandong"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"bertrandong":19}},{"path":"src/main/java/Command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bertrandong"},"content":"package Command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"bertrandong"},"content":"import Utilities.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"bertrandong"},"content":"import Task.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"bertrandong"},"content":"import Utilities.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"bertrandong"},"content":"import Exceptions.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"bertrandong"},"content":"public abstract class Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"bertrandong"},"content":" private boolean isExit;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"bertrandong"},"content":" public Command(boolean isExit) {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"bertrandong"},"content":" this.isExit \u003d isExit;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"bertrandong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"bertrandong"},"content":" return this.isExit;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"bertrandong"},"content":" public abstract void execute(TaskList taskList, Storage storage, Ui ui) throws DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"bertrandong"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"bertrandong":20}},{"path":"src/main/java/Command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bertrandong"},"content":"package Command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"bertrandong"},"content":"import Utilities.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"bertrandong"},"content":"import Utilities.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"bertrandong"},"content":"import Task.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"bertrandong"},"content":"import Exceptions.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"bertrandong"},"content":"import Task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"bertrandong"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"bertrandong"},"content":" private int taskToDeleteIndex;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"bertrandong"},"content":" public DeleteCommand(String userInput) {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"bertrandong"},"content":" super(false);","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"bertrandong"},"content":" this.taskToDeleteIndex \u003d Integer.parseInt(userInput.split(\" \")[1]) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"bertrandong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"bertrandong"},"content":" public void execute(TaskList taskList, Storage storage, Ui ui) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"bertrandong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"bertrandong"},"content":" Task removedTask \u003d taskList.deleteTask(this.taskToDeleteIndex);","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"bertrandong"},"content":" ui.showDelete(removedTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"bertrandong"},"content":" } catch (NumberFormatException | ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"bertrandong"},"content":" throw new DukeException(\"Invalid input. Please provide a valid task index or check that the task exists.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"bertrandong"},"content":" storage.save(taskList);","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"bertrandong"},"content":" ui.showTaskListLength(taskList);","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"bertrandong"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"bertrandong":26}},{"path":"src/main/java/Command/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bertrandong"},"content":"package Command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"bertrandong"},"content":"import Utilities.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"bertrandong"},"content":"import Task.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"bertrandong"},"content":"import Utilities.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"bertrandong"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"bertrandong"},"content":" public ExitCommand() {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"bertrandong"},"content":" super(true);","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"bertrandong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"bertrandong"},"content":" public void execute(TaskList taskList, Storage storage, Ui ui) {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"bertrandong"},"content":" System.out.println(\"Bye! Hope to see you again!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"bertrandong"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"bertrandong":16}},{"path":"src/main/java/Command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bertrandong"},"content":"package Command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"bertrandong"},"content":"import Utilities.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"bertrandong"},"content":"import Task.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"bertrandong"},"content":"import Utilities.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"bertrandong"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"bertrandong"},"content":" public ListCommand() {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"bertrandong"},"content":" super(false);","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"bertrandong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"bertrandong"},"content":" public void execute(TaskList taskList, Storage storage, Ui ui) {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"bertrandong"},"content":" ui.showList(taskList);","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"bertrandong"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"bertrandong":15}},{"path":"src/main/java/Command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bertrandong"},"content":"package Command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"bertrandong"},"content":"import Utilities.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"bertrandong"},"content":"import Task.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"bertrandong"},"content":"import Utilities.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"bertrandong"},"content":"import Task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"bertrandong"},"content":"import Exceptions.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"bertrandong"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"bertrandong"},"content":" private int taskIndex;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"bertrandong"},"content":" private boolean isMarked;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"bertrandong"},"content":" public MarkCommand(String userInput, boolean isMarked) {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"bertrandong"},"content":" super(false);","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"bertrandong"},"content":" this.taskIndex \u003d Integer.parseInt(userInput.split(\" \")[1]) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"bertrandong"},"content":" this.isMarked \u003d isMarked;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"bertrandong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"bertrandong"},"content":" public void execute(TaskList taskList, Storage storage, Ui ui) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"bertrandong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"bertrandong"},"content":" Task taskToMark \u003d taskList.markTask(this.taskIndex, this.isMarked);","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"bertrandong"},"content":" ui.showMarkTask(taskToMark, this.isMarked);","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"bertrandong"},"content":" } catch (NumberFormatException | ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"bertrandong"},"content":" throw new DukeException(\"Invalid input. Please provide a valid task index.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"bertrandong"},"content":" storage.save(taskList);","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"bertrandong"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"bertrandong":29}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bertrandong"},"content":"import Task.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"bertrandong"},"content":"import Utilities.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"bertrandong"},"content":"import Command.Command;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"bertrandong"},"content":"import Exceptions.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"bertrandong"},"content":"import Utilities.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"bertrandong"},"content":"import Utilities.Parser;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":9,"author":{"gitId":"bertrandong"},"content":" private Ui ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"bertrandong"},"content":" private TaskList taskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"bertrandong"},"content":" private Storage storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"bertrandong"},"content":" public Duke(String fileName, String directoryName) {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"bertrandong"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"bertrandong"},"content":" this.storage \u003d new Storage(fileName, directoryName);","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"bertrandong"},"content":" this.taskList \u003d new TaskList(storage.load());","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":18,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"bertrandong"},"content":" public void run() {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"bertrandong"},"content":" ui.showWelcome();","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"bertrandong"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"bertrandong"},"content":" while (!isExit) {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"bertrandong"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"bertrandong"},"content":" String userInput \u003d ui.readCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"bertrandong"},"content":" Command command \u003d Parser.parse(userInput);","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"bertrandong"},"content":" command.execute(taskList, storage, ui);","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"bertrandong"},"content":" isExit \u003d command.isExit();","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"bertrandong"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"bertrandong"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"bertrandong"},"content":" new Duke(\"duke.txt\", \"./src/main/data\").run();","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"-":5,"bertrandong":32}},{"path":"src/main/java/Exceptions/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bertrandong"},"content":"package Exceptions;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"bertrandong"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"bertrandong"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"bertrandong"},"content":" super(message);","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"bertrandong"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"bertrandong":7}},{"path":"src/main/java/Task/DateTime.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bertrandong"},"content":"package Task;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"bertrandong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"bertrandong"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"bertrandong"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"bertrandong"},"content":"public class DateTime {","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"bertrandong"},"content":" private String dateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"bertrandong"},"content":" private LocalDateTime dateTimeData;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"bertrandong"},"content":" public DateTime(String dateTime) {","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"bertrandong"},"content":" DateTimeFormatter inputFormat \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"bertrandong"},"content":" this.dateTime \u003d dateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"bertrandong"},"content":" this.dateTimeData \u003d LocalDateTime.parse(dateTime, inputFormat);","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"bertrandong"},"content":" public boolean isValid() {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"bertrandong"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"bertrandong"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"bertrandong"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"bertrandong"},"content":" return true;","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"bertrandong"},"content":" public String formatDate() {","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"bertrandong"},"content":" DateTimeFormatter outputFormat \u003d DateTimeFormatter.ofPattern(\"dd MMM yyyy, HHmm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"bertrandong"},"content":" return this.dateTimeData.format(outputFormat);","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"bertrandong"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"bertrandong":28}},{"path":"src/main/java/Task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bertrandong"},"content":"package Task;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"bertrandong"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"bertrandong"},"content":" private String by;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"bertrandong"},"content":" private DateTime deadline;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"bertrandong"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"bertrandong"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"bertrandong"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"bertrandong"},"content":" this.deadline \u003d new DateTime(by);","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"bertrandong"},"content":" public Deadline(String description, boolean isDone, String by) {","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"bertrandong"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"bertrandong"},"content":" this.deadline \u003d new DateTime(by);","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"bertrandong"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"bertrandong"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"bertrandong"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.deadline.formatDate() + \"hrs)\";","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"bertrandong"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"bertrandong"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"bertrandong"},"content":" return \"D\" + super.toFileString() + \"|\" + this.by;","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"bertrandong"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"bertrandong":27}},{"path":"src/main/java/Task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bertrandong"},"content":"package Task;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"bertrandong"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"bertrandong"},"content":" private String from;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"bertrandong"},"content":" private String to;","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"bertrandong"},"content":" private DateTime start;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"bertrandong"},"content":" private DateTime end;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"bertrandong"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"bertrandong"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"bertrandong"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"bertrandong"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"bertrandong"},"content":" this.start \u003d new DateTime(from);","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"bertrandong"},"content":" this.end \u003d new DateTime(to);","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"bertrandong"},"content":" public Event(String description, boolean isDone, String from, String to) {","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"bertrandong"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"bertrandong"},"content":" this.start \u003d new DateTime(from);","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"bertrandong"},"content":" this.end \u003d new DateTime(to);","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"bertrandong"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"bertrandong"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"bertrandong"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.start.formatDate() + \"hrs to: \" + this.end.formatDate() + \"hrs)\";","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"bertrandong"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"bertrandong"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"bertrandong"},"content":" return \"E\" + super.toFileString() + \"|\" + this.from + \"|\" + this.to;","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"bertrandong"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"bertrandong":32}},{"path":"src/main/java/Task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bertrandong"},"content":"package Task;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"bertrandong"},"content":"public class Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"bertrandong"},"content":" private String description;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"bertrandong"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"bertrandong"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"bertrandong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"bertrandong"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"bertrandong"},"content":" public Task(String description, boolean isDone) {","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"bertrandong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"bertrandong"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"bertrandong"},"content":" public void setDone(boolean done) {","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"bertrandong"},"content":" this.isDone \u003d done;","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"bertrandong"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"bertrandong"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"bertrandong"},"content":" return \"[\" + (this.isDone ? \"X\" : \" \") + \"] \" + this.description;","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"bertrandong"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"bertrandong"},"content":" return \"|\" + (this.isDone ? \"1\" : \"0\") + \"|\" + this.description;","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"bertrandong"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"bertrandong":28}},{"path":"src/main/java/Task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bertrandong"},"content":"package Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"bertrandong"},"content":"import Task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"bertrandong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"bertrandong"},"content":"public class TaskList {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"bertrandong"},"content":" private ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"bertrandong"},"content":" public TaskList(ArrayList\u003cTask\u003e taskArray) {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"bertrandong"},"content":" this.taskList \u003d taskArray;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"bertrandong"},"content":" public int length() {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"bertrandong"},"content":" return this.taskList.size();","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"bertrandong"},"content":" public ArrayList\u003cTask\u003e getList() {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"bertrandong"},"content":" return this.taskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"bertrandong"},"content":" public Task getTask(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"bertrandong"},"content":" return this.taskList.get(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"bertrandong"},"content":" public boolean isEmpty() {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"bertrandong"},"content":" return this.taskList.isEmpty();","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"bertrandong"},"content":" public void addTask(Task newTask) {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"bertrandong"},"content":" this.taskList.add(newTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"bertrandong"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"bertrandong"},"content":" System.out.println(newTask.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"bertrandong"},"content":" public Task markTask(int taskIndex, boolean isMarked) {","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"bertrandong"},"content":" Task taskToMark \u003d this.taskList.get(taskIndex);","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"bertrandong"},"content":" taskToMark.setDone(isMarked);","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"bertrandong"},"content":" return taskToMark;","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"bertrandong"},"content":" public Task deleteTask(int taskIndex) {","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"bertrandong"},"content":" return this.taskList.remove(taskIndex);","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"bertrandong"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"bertrandong":44}},{"path":"src/main/java/Task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bertrandong"},"content":"package Task;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"bertrandong"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"bertrandong"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"bertrandong"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"bertrandong"},"content":" public Todo(String description, boolean isDone) {","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"bertrandong"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"bertrandong"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"bertrandong"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"bertrandong"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"bertrandong"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"bertrandong"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"bertrandong"},"content":" return \"T\" + super.toFileString();","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"bertrandong"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"bertrandong":21}},{"path":"src/main/java/Utilities/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bertrandong"},"content":"package Utilities;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"bertrandong"},"content":"import Command.Command;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"bertrandong"},"content":"import Command.AddCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"bertrandong"},"content":"import Command.DeleteCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"bertrandong"},"content":"import Command.ExitCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"bertrandong"},"content":"import Command.ListCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"bertrandong"},"content":"import Command.MarkCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"bertrandong"},"content":"import Exceptions.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"bertrandong"},"content":"import Task.Todo;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"bertrandong"},"content":"import Task.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"bertrandong"},"content":"import Task.Event;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"bertrandong"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"bertrandong"},"content":"public class Parser {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"bertrandong"},"content":" public static Command parse(String userInput) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"bertrandong"},"content":" if (userInput.equals(\"bye\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"bertrandong"},"content":" return new ExitCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"bertrandong"},"content":" } else if (userInput.equals(\"list\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"bertrandong"},"content":" return new ListCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"bertrandong"},"content":" } else if (userInput.startsWith(\"mark\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"bertrandong"},"content":" return new MarkCommand(userInput, true);","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"bertrandong"},"content":" } else if (userInput.startsWith(\"unmark\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"bertrandong"},"content":" return new MarkCommand(userInput, false);","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"bertrandong"},"content":" } else if (userInput.startsWith(\"delete\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"bertrandong"},"content":" return new DeleteCommand(userInput);","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"bertrandong"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"bertrandong"},"content":" // Sort out type of task","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"bertrandong"},"content":" if (userInput.startsWith(\"todo\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"bertrandong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"bertrandong"},"content":" String description \u003d userInput.split(\" \", 2)[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"bertrandong"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"bertrandong"},"content":" throw new DukeException(\"OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"bertrandong"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"bertrandong"},"content":" Todo newTodo \u003d new Todo(description);","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"bertrandong"},"content":" return new AddCommand(newTodo);","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"bertrandong"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"bertrandong"},"content":" throw new DukeException(\"OOPS!!! Please follow the given todo format \u0027todo \u003ctask description\u003e\u0027.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"bertrandong"},"content":" } else if (userInput.startsWith(\"deadline\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"bertrandong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"bertrandong"},"content":" String description \u003d userInput.split(\" /by \")[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"bertrandong"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"bertrandong"},"content":" throw new DukeException(\"OOPS!!! The description of a deadline cannot be empty.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"bertrandong"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"bertrandong"},"content":" String by \u003d userInput.split(\" /by \")[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"bertrandong"},"content":" Deadline newDeadline \u003d new Deadline(description, by);","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"bertrandong"},"content":" return new AddCommand(newDeadline);","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"bertrandong"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"bertrandong"},"content":" throw new DukeException(\"OOPS!!! Please follow the given deadline format \u0027deadline \u003ctask description\u003e /by \u003cdeadline\u003e\u0027.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"bertrandong"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"bertrandong"},"content":" throw new DukeException(\"Invalid date time provided!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"bertrandong"},"content":" } else if (userInput.startsWith(\"event\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"bertrandong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"bertrandong"},"content":" String description \u003d userInput.split(\" /from \")[0].split(\" \", 2)[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"bertrandong"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"bertrandong"},"content":" throw new DukeException(\"OOPS!!! The description of an event cannot be empty.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"bertrandong"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"bertrandong"},"content":" String from \u003d userInput.split(\" /from \")[1].split(\" /to \")[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"bertrandong"},"content":" String to \u003d userInput.split(\" /to \")[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"bertrandong"},"content":" Event newEvent \u003d new Event(description, from, to);","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"bertrandong"},"content":" return new AddCommand(newEvent);","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"bertrandong"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"bertrandong"},"content":" throw new DukeException(\"OOPS!!! Please follow the given event format \u0027event \u003ctask description\u003e /from \u003cstart\u003e /to \u003cend\u003e\u0027.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"bertrandong"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"bertrandong"},"content":" throw new DukeException(\"Invalid date time provided!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"bertrandong"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"bertrandong"},"content":" throw new DukeException(\"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-( Please start with todo, deadline or event.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"bertrandong"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"bertrandong":78}},{"path":"src/main/java/Utilities/SaveFile.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bertrandong"},"content":"package Utilities;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"bertrandong"},"content":"import java.io.File;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"bertrandong"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"bertrandong"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"bertrandong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"bertrandong"},"content":"import Task.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"bertrandong"},"content":"import Task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"bertrandong"},"content":"import Task.Todo;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"bertrandong"},"content":"import Task.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"bertrandong"},"content":"import Task.Event;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"bertrandong"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"bertrandong"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"bertrandong"},"content":"public class SaveFile {","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"bertrandong"},"content":" private String fileName;","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"bertrandong"},"content":" private String directoryName;","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"bertrandong"},"content":" public SaveFile(String fileName, String directoryName) {","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"bertrandong"},"content":" this.fileName \u003d fileName;","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"bertrandong"},"content":" this.directoryName \u003d directoryName;","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"bertrandong"},"content":" public void createDirectory() {","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"bertrandong"},"content":" File directory \u003d new File(directoryName);","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"bertrandong"},"content":" if (!directory.exists()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"bertrandong"},"content":" if (directory.mkdir()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"bertrandong"},"content":" } else {","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"bertrandong"},"content":" System.err.println(\"Error creating directory\");","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"bertrandong"},"content":" public void createFile() {","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"bertrandong"},"content":" File file \u003d new File(directoryName, fileName);","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"bertrandong"},"content":" if(!file.exists()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"bertrandong"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"bertrandong"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"bertrandong"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"bertrandong"},"content":" System.out.println(\"Error generating task list\");","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"bertrandong"},"content":" public void saveToFile(TaskList taskList) {","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"bertrandong"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"bertrandong"},"content":" FileWriter fw \u003d new FileWriter(this.directoryName + \"/\" + this.fileName);","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"bertrandong"},"content":" for (Task t : taskList.getList()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"bertrandong"},"content":" fw.write(t.toFileString());","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"bertrandong"},"content":" fw.write((System.lineSeparator()));","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"bertrandong"},"content":" fw.close();","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"bertrandong"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"bertrandong"},"content":" System.err.println(\"Error writing task list to file: \" + e.getMessage());","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"bertrandong"},"content":" public ArrayList\u003cTask\u003e readFile() {","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"bertrandong"},"content":" ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"bertrandong"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"bertrandong"},"content":" File f \u003d new File(this.directoryName + \"/\" + this.fileName);","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"bertrandong"},"content":" Scanner s \u003d new Scanner(f);","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"bertrandong"},"content":" while (s.hasNextLine()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":64,"author":{"gitId":"bertrandong"},"content":" String data \u003d s.nextLine();","lastModifiedDate":"2024-01-27"},{"lineNumber":65,"author":{"gitId":"bertrandong"},"content":" boolean isDone;","lastModifiedDate":"2024-01-27"},{"lineNumber":66,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"bertrandong"},"content":" if (data.split(\"[|]\")[1].equals(\"0\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"bertrandong"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-27"},{"lineNumber":69,"author":{"gitId":"bertrandong"},"content":" } else {","lastModifiedDate":"2024-01-27"},{"lineNumber":70,"author":{"gitId":"bertrandong"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-27"},{"lineNumber":71,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":72,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":73,"author":{"gitId":"bertrandong"},"content":" if (data.startsWith(\"T\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":74,"author":{"gitId":"bertrandong"},"content":" String description \u003d data.split(\"[|]\")[2];","lastModifiedDate":"2024-01-27"},{"lineNumber":75,"author":{"gitId":"bertrandong"},"content":" Todo newTodo \u003d new Todo(description, isDone);","lastModifiedDate":"2024-01-27"},{"lineNumber":76,"author":{"gitId":"bertrandong"},"content":" taskList.add(newTodo);","lastModifiedDate":"2024-01-27"},{"lineNumber":77,"author":{"gitId":"bertrandong"},"content":" } else if (data.startsWith(\"D\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":78,"author":{"gitId":"bertrandong"},"content":" String description \u003d data.split(\"[|]\")[2];","lastModifiedDate":"2024-01-27"},{"lineNumber":79,"author":{"gitId":"bertrandong"},"content":" String by \u003d data.split(\"[|]\")[3];","lastModifiedDate":"2024-01-27"},{"lineNumber":80,"author":{"gitId":"bertrandong"},"content":" Deadline newDeadline \u003d new Deadline(description, isDone, by);","lastModifiedDate":"2024-01-27"},{"lineNumber":81,"author":{"gitId":"bertrandong"},"content":" taskList.add(newDeadline);","lastModifiedDate":"2024-01-27"},{"lineNumber":82,"author":{"gitId":"bertrandong"},"content":" } else if (data.startsWith(\"E\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":83,"author":{"gitId":"bertrandong"},"content":" String description \u003d data.split(\"[|]\")[2];","lastModifiedDate":"2024-01-27"},{"lineNumber":84,"author":{"gitId":"bertrandong"},"content":" String from \u003d data.split(\"[|]\")[3];","lastModifiedDate":"2024-01-27"},{"lineNumber":85,"author":{"gitId":"bertrandong"},"content":" String to \u003d data.split(\"[|]\")[4];","lastModifiedDate":"2024-01-27"},{"lineNumber":86,"author":{"gitId":"bertrandong"},"content":" Event newEvent \u003d new Event(description, isDone, from, to);","lastModifiedDate":"2024-01-27"},{"lineNumber":87,"author":{"gitId":"bertrandong"},"content":" taskList.add(newEvent);","lastModifiedDate":"2024-01-27"},{"lineNumber":88,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":89,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":90,"author":{"gitId":"bertrandong"},"content":" s.close();","lastModifiedDate":"2024-01-27"},{"lineNumber":91,"author":{"gitId":"bertrandong"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":92,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":93,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":94,"author":{"gitId":"bertrandong"},"content":" return taskList;","lastModifiedDate":"2024-01-27"},{"lineNumber":95,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":96,"author":{"gitId":"bertrandong"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"bertrandong":96}},{"path":"src/main/java/Utilities/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bertrandong"},"content":"package Utilities;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"bertrandong"},"content":"import Task.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"bertrandong"},"content":"import Task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"bertrandong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"bertrandong"},"content":"public class Storage {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"bertrandong"},"content":" private SaveFile saveFile;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"bertrandong"},"content":" public Storage(String fileName, String directoryName) {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"bertrandong"},"content":" this.saveFile \u003d new SaveFile(fileName, directoryName);","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"bertrandong"},"content":" this.saveFile.createDirectory();","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"bertrandong"},"content":" this.saveFile.createFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"bertrandong"},"content":" public void save(TaskList taskList) {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"bertrandong"},"content":" this.saveFile.saveToFile(taskList);","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"bertrandong"},"content":" public ArrayList\u003cTask\u003e load() {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"bertrandong"},"content":" return this.saveFile.readFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"bertrandong"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"bertrandong":23}},{"path":"src/main/java/Utilities/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bertrandong"},"content":"package Utilities;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"bertrandong"},"content":"import Task.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"bertrandong"},"content":"import Task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"bertrandong"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"bertrandong"},"content":"public class Ui {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"bertrandong"},"content":" public String readCommand() {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"bertrandong"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"bertrandong"},"content":" return scanner.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"bertrandong"},"content":" public void showWelcome() {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"bertrandong"},"content":" System.out.println(\"Hello! I\u0027m TodoPal!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"bertrandong"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"bertrandong"},"content":" public void showList(TaskList taskList) {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"bertrandong"},"content":" if (taskList.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"bertrandong"},"content":" System.out.println(\"Your task list is empty.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"bertrandong"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"bertrandong"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"bertrandong"},"content":" for (int i \u003d 0; i \u003c taskList.length(); i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"bertrandong"},"content":" System.out.println((i + 1) + \".\" + taskList.getTask(i).toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"bertrandong"},"content":" public void showTaskListLength(TaskList taskList) {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"bertrandong"},"content":" System.out.println(\"Now you have \" + taskList.length() + \" task(s) in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"bertrandong"},"content":" public void showDelete(Task removedTask) {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"bertrandong"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"bertrandong"},"content":" System.out.println(removedTask.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"bertrandong"},"content":" public void showMarkTask(Task task, boolean isMarked) {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"bertrandong"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as \" + (isMarked ? \"done:\" : \"not done yet:\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"bertrandong"},"content":" System.out.println(task.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"bertrandong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"bertrandong"},"content":" public void showError(String message) {","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"bertrandong"},"content":" System.out.println(message);","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"bertrandong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"bertrandong"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"bertrandong":47}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"bertrandong"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"bertrandong"},"content":"todo","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"bertrandong"},"content":"todo borrow book","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"bertrandong"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"bertrandong"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"bertrandong"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"bertrandong"},"content":"mark","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"bertrandong"},"content":"mark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"bertrandong"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"bertrandong"},"content":"unmark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"bertrandong"},"content":"delete","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"bertrandong"},"content":"delete 1","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"bertrandong"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"bertrandong"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"bertrandong":14}}] diff --git a/bertrandong_ip_master/commits.json b/bertrandong_ip_master/commits.json index 2c9d05ae..81c3dfb0 100644 --- a/bertrandong_ip_master/commits.json +++ b/bertrandong_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"bertrandong":[{"date":"2024-01-23","commitResults":[{"hash":"986eb8923a86d37e4896fc8f6b743ae2cd923964","isMergeCommit":false,"messageTitle":"level 0","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":6}}},{"hash":"17ecd4094a2954a9b1ba1fbaff39a849b5b832dc","isMergeCommit":false,"messageTitle":"level 1","messageBody":"","tags":["level1","level0"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}},{"hash":"63116ce9540102c99cf4013863ca12ca9eead691","isMergeCommit":false,"messageTitle":"level 2","messageBody":"","tags":["level2"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":1}}},{"hash":"811e492f4d8afb923cced2ce40a2f35e8d330c33","isMergeCommit":false,"messageTitle":"level 3","messageBody":"","tags":["level3"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":5}}},{"hash":"45f944c534337904dfdc646fa25b9bb515360bef","isMergeCommit":false,"messageTitle":"level 4","messageBody":"","tags":["level4"],"fileTypesAndContributionMap":{"java":{"insertions":82,"deletions":8}}}]},{"date":"2024-01-24","commitResults":[{"hash":"49189eff9beef3969e61d7f814c98c800c87e20a","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0}}},{"hash":"c7242f383a2c170828354978638fa12e051b44e0","isMergeCommit":false,"messageTitle":"level 5","messageBody":"","tags":["level5"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":50,"deletions":24}}},{"hash":"e9c363b340768a55fca378e4fde6de838eb6bc25","isMergeCommit":false,"messageTitle":"level 6","messageBody":"","tags":["level6"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":20,"deletions":1}}}]},{"date":"2024-01-27","commitResults":[{"hash":"99c1d4efa725d1c496447028604cbc1f850c5b2a","isMergeCommit":false,"messageTitle":"Add level 7: Save","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":147,"deletions":8}}},{"hash":"2e8556f9efbe494c08e9780faf5c20084663de6a","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-7\u0027","messageBody":"","tags":["level7"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-28","commitResults":[{"hash":"698048995d388c3468e9b8345919aa5d8ffc67ab","isMergeCommit":false,"messageTitle":"Add level 8: Dates and Times","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":1},"java":{"insertions":46,"deletions":8}}},{"hash":"aa7f7711293c7a885c5c4008499243ec4ef3061d","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-8\u0027","messageBody":"","tags":["level8"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"bertrandong":{"java":365,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":20}},"authorContributionVariance":{"bertrandong":4622.04},"authorDisplayNameMap":{"bertrandong":"CS2103T-T08-2 ONG ..RAND"}} +{"authorDailyContributionsMap":{"bertrandong":[{"date":"2024-01-23","commitResults":[{"hash":"986eb8923a86d37e4896fc8f6b743ae2cd923964","isMergeCommit":false,"messageTitle":"level 0","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":6}}},{"hash":"17ecd4094a2954a9b1ba1fbaff39a849b5b832dc","isMergeCommit":false,"messageTitle":"level 1","messageBody":"","tags":["level1","level0"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}},{"hash":"63116ce9540102c99cf4013863ca12ca9eead691","isMergeCommit":false,"messageTitle":"level 2","messageBody":"","tags":["level2"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":1}}},{"hash":"811e492f4d8afb923cced2ce40a2f35e8d330c33","isMergeCommit":false,"messageTitle":"level 3","messageBody":"","tags":["level3"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":5}}},{"hash":"45f944c534337904dfdc646fa25b9bb515360bef","isMergeCommit":false,"messageTitle":"level 4","messageBody":"","tags":["level4"],"fileTypesAndContributionMap":{"java":{"insertions":82,"deletions":8}}}]},{"date":"2024-01-24","commitResults":[{"hash":"49189eff9beef3969e61d7f814c98c800c87e20a","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0}}},{"hash":"c7242f383a2c170828354978638fa12e051b44e0","isMergeCommit":false,"messageTitle":"level 5","messageBody":"","tags":["level5"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":50,"deletions":24}}},{"hash":"e9c363b340768a55fca378e4fde6de838eb6bc25","isMergeCommit":false,"messageTitle":"level 6","messageBody":"","tags":["level6"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":20,"deletions":1}}}]},{"date":"2024-01-27","commitResults":[{"hash":"99c1d4efa725d1c496447028604cbc1f850c5b2a","isMergeCommit":false,"messageTitle":"Add level 7: Save","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":147,"deletions":8}}},{"hash":"2e8556f9efbe494c08e9780faf5c20084663de6a","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-7\u0027","messageBody":"","tags":["level7"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-28","commitResults":[{"hash":"698048995d388c3468e9b8345919aa5d8ffc67ab","isMergeCommit":false,"messageTitle":"Add level 8: Dates and Times","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":1},"java":{"insertions":46,"deletions":8}}},{"hash":"aa7f7711293c7a885c5c4008499243ec4ef3061d","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-8\u0027","messageBody":"","tags":["level8"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-30","commitResults":[{"hash":"ebd64586e9d65b2d5d3d4e7721bda8ec3bf96046","isMergeCommit":false,"messageTitle":"Add more OOP","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":5},"java":{"insertions":362,"deletions":139}}},{"hash":"c1abee4f11e0c62d78d629e1c870b592d38b1d41","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-moreoop\u0027","messageBody":"","tags":["A-Packages","A-MoreOOP"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"bertrandong":{"java":588,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":18}},"authorContributionVariance":{"bertrandong":20432.41},"authorDisplayNameMap":{"bertrandong":"CS2103T-T08-2 ONG ..RAND"}} diff --git a/biinnnggggg_ip_master/authorship.json b/biinnnggggg_ip_master/authorship.json index 826dc30d..1b4c46ad 100644 --- a/biinnnggggg_ip_master/authorship.json +++ b/biinnnggggg_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/AddCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"biinnnggggg"},"content":"abstract class AddCommand extends Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"biinnnggggg"},"content":" protected final String description;","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"biinnnggggg"},"content":" AddCommand(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"biinnnggggg"},"content":" super(\"\");","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"biinnnggggg"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"biinnnggggg"},"content":" protected void respond(TaskList taskList, Task newTask) {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"biinnnggggg"},"content":" String message \u003d","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"biinnnggggg"},"content":" \"Got it, I\u0027ve added this task:\\n \"","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"biinnnggggg"},"content":" + newTask + \"\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"biinnnggggg"},"content":" + \"Now you have \" + taskList.size() + \" tasks in the list.\";","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"biinnnggggg"},"content":" Ui.display(message);","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"biinnnggggg"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"biinnnggggg":15}},{"path":"src/main/java/AddDeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"biinnnggggg"},"content":"public class AddDeadlineCommand extends AddCommand {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"biinnnggggg"},"content":" private final String deadline;","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"biinnnggggg"},"content":" AddDeadlineCommand(String description, String deadline) {","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"biinnnggggg"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"biinnnggggg"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"biinnnggggg"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"biinnnggggg"},"content":" void execute(TaskList taskList) throws MikeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"biinnnggggg"},"content":" Task newTask \u003d new Deadline(description, deadline);","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"biinnnggggg"},"content":" taskList.add(newTask);","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"biinnnggggg"},"content":" respond(taskList, newTask);","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"biinnnggggg"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"biinnnggggg"},"content":" boolean isExit() {","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"biinnnggggg"},"content":" return false;","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"biinnnggggg"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"biinnnggggg":20}},{"path":"src/main/java/AddEventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"biinnnggggg"},"content":"public class AddEventCommand extends AddCommand {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"biinnnggggg"},"content":" private final String startDate;","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"biinnnggggg"},"content":" private final String endDate;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"biinnnggggg"},"content":" AddEventCommand(String description, String startDate, String endDate) {","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"biinnnggggg"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"biinnnggggg"},"content":" this.startDate \u003d startDate;","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"biinnnggggg"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"biinnnggggg"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"biinnnggggg"},"content":" void execute(TaskList taskList) throws MikeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"biinnnggggg"},"content":" Task newTask \u003d new Event(description, startDate, endDate);","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"biinnnggggg"},"content":" taskList.add(newTask);","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"biinnnggggg"},"content":" respond(taskList, newTask);","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"biinnnggggg"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"biinnnggggg"},"content":" boolean isExit() {","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"biinnnggggg"},"content":" return false;","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"biinnnggggg"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"biinnnggggg":22}},{"path":"src/main/java/AddTodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"biinnnggggg"},"content":"public class AddTodoCommand extends AddCommand {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"biinnnggggg"},"content":" AddTodoCommand(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"biinnnggggg"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"biinnnggggg"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"biinnnggggg"},"content":" void execute(TaskList taskList) throws MikeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"biinnnggggg"},"content":" Task newTask \u003d new Todo(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"biinnnggggg"},"content":" taskList.add(newTask);","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"biinnnggggg"},"content":" respond(taskList, newTask);","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"biinnnggggg"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"biinnnggggg"},"content":" boolean isExit() {","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"biinnnggggg"},"content":" return false;","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"biinnnggggg"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"biinnnggggg":18}},{"path":"src/main/java/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"biinnnggggg"},"content":"public abstract class Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"biinnnggggg"},"content":" String text;","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"biinnnggggg"},"content":" Command(String text) {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"biinnnggggg"},"content":" this.text \u003d text;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"biinnnggggg"},"content":" abstract void execute(TaskList taskList) throws MikeException;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"biinnnggggg"},"content":" abstract boolean isExit();","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"biinnnggggg"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"biinnnggggg":12}},{"path":"src/main/java/CommandParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"biinnnggggg"},"content":"/*","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"biinnnggggg"},"content":"TODO:","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"biinnnggggg"},"content":" 1. Write comments to document the code.","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"biinnnggggg"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"biinnnggggg"},"content":"import java.util.List;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"biinnnggggg"},"content":"public class CommandParser {","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"biinnnggggg"},"content":" private final List\u003cToken\u003e tokens;","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"biinnnggggg"},"content":" private int current;","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"biinnnggggg"},"content":" CommandParser(List\u003cToken\u003e tokens) {","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"biinnnggggg"},"content":" this.tokens \u003d tokens;","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"biinnnggggg"},"content":" this.current \u003d 0;","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"biinnnggggg"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"biinnnggggg"},"content":" * Parses the token list to generate a Command object which is returned.","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"biinnnggggg"},"content":" * @return Command that can be executed.","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"biinnnggggg"},"content":" * @throws MikeException If there is no command input or the command is not recognized.","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"biinnnggggg"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"biinnnggggg"},"content":" public Command parse() throws MikeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"biinnnggggg"},"content":" Token commandToken \u003d advance();","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"biinnnggggg"},"content":" switch (commandToken.getType()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"biinnnggggg"},"content":" case EXIT:","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"biinnnggggg"},"content":" return parseExit();","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"biinnnggggg"},"content":" case LIST:","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"biinnnggggg"},"content":" return parseList();","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"biinnnggggg"},"content":" case MARK:","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"biinnnggggg"},"content":" return parseMark();","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"biinnnggggg"},"content":" case UNMARK:","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"biinnnggggg"},"content":" return parseUnmark();","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"biinnnggggg"},"content":" case TODO:","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"biinnnggggg"},"content":" return parseTodo();","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"biinnnggggg"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"biinnnggggg"},"content":" return parseDeadline();","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"biinnnggggg"},"content":" case EVENT:","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"biinnnggggg"},"content":" return parseEvent();","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"biinnnggggg"},"content":" case DELETE:","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"biinnnggggg"},"content":" return parseDelete();","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"biinnnggggg"},"content":" case EOC:","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"biinnnggggg"},"content":" throw new MikeException(\"Say something.\");","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"biinnnggggg"},"content":" default:","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"biinnnggggg"},"content":" String errorMessage \u003d \"\u0027\" + commandToken.getText() + \"\u0027 is not recognized as a command.\\n\"","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"biinnnggggg"},"content":" + \"That is the weirdest thing you\u0027ve ever said.\";","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"biinnnggggg"},"content":" throw new MikeException(errorMessage);","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"biinnnggggg"},"content":" private Command parseExit() throws MikeException {","lastModifiedDate":"2024-01-26"},{"lineNumber":50,"author":{"gitId":"biinnnggggg"},"content":" consume(TokenType.EOC, \"Usage: bye\");","lastModifiedDate":"2024-01-26"},{"lineNumber":51,"author":{"gitId":"biinnnggggg"},"content":" return new ExitCommand();","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"biinnnggggg"},"content":" private Command parseList() throws MikeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"biinnnggggg"},"content":" consume(TokenType.EOC, \"Usage: list\");","lastModifiedDate":"2024-01-26"},{"lineNumber":56,"author":{"gitId":"biinnnggggg"},"content":" return new ListCommand();","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"biinnnggggg"},"content":" private Command parseMark() throws MikeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"biinnnggggg"},"content":" String usage \u003d \"Usage: mark [number]\";","lastModifiedDate":"2024-01-26"},{"lineNumber":61,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"biinnnggggg"},"content":" consume(TokenType.LITERAL, usage);","lastModifiedDate":"2024-01-26"},{"lineNumber":63,"author":{"gitId":"biinnnggggg"},"content":" String argument \u003d previousToken().getText();","lastModifiedDate":"2024-01-26"},{"lineNumber":64,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":65,"author":{"gitId":"biinnnggggg"},"content":" consume(TokenType.EOC, usage);","lastModifiedDate":"2024-01-26"},{"lineNumber":66,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"biinnnggggg"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":68,"author":{"gitId":"biinnnggggg"},"content":" int taskNumber \u003d Integer.parseInt(argument);","lastModifiedDate":"2024-01-25"},{"lineNumber":69,"author":{"gitId":"biinnnggggg"},"content":" return new MarkCommand(taskNumber);","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"biinnnggggg"},"content":" } catch(NumberFormatException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":71,"author":{"gitId":"biinnnggggg"},"content":" String errorMessage \u003d \"One, two, three, four, get the kid back through the door!\\n\" +","lastModifiedDate":"2024-01-26"},{"lineNumber":72,"author":{"gitId":"biinnnggggg"},"content":" \"\u0027\" + argument + \"\u0027 is not an integer Sulley...\";","lastModifiedDate":"2024-01-26"},{"lineNumber":73,"author":{"gitId":"biinnnggggg"},"content":" throw new MikeException(errorMessage);","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"biinnnggggg"},"content":" private Command parseUnmark() throws MikeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"biinnnggggg"},"content":" String usage \u003d\"Usage: unmark [number]\";","lastModifiedDate":"2024-01-26"},{"lineNumber":79,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":80,"author":{"gitId":"biinnnggggg"},"content":" consume(TokenType.LITERAL, usage);","lastModifiedDate":"2024-01-26"},{"lineNumber":81,"author":{"gitId":"biinnnggggg"},"content":" String argument \u003d previousToken().getText();","lastModifiedDate":"2024-01-26"},{"lineNumber":82,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":83,"author":{"gitId":"biinnnggggg"},"content":" consume(TokenType.EOC, usage);","lastModifiedDate":"2024-01-26"},{"lineNumber":84,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":85,"author":{"gitId":"biinnnggggg"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":86,"author":{"gitId":"biinnnggggg"},"content":" int taskNumber \u003d Integer.parseInt(argument);","lastModifiedDate":"2024-01-25"},{"lineNumber":87,"author":{"gitId":"biinnnggggg"},"content":" return new UnmarkCommand(taskNumber);","lastModifiedDate":"2024-01-25"},{"lineNumber":88,"author":{"gitId":"biinnnggggg"},"content":" } catch(NumberFormatException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":89,"author":{"gitId":"biinnnggggg"},"content":" String errorMessage \u003d \"One, two, three, four, get the kid back through the door!\\n\" +","lastModifiedDate":"2024-01-26"},{"lineNumber":90,"author":{"gitId":"biinnnggggg"},"content":" \"\u0027\" + argument + \"\u0027 is not an integer Sulley...\";","lastModifiedDate":"2024-01-26"},{"lineNumber":91,"author":{"gitId":"biinnnggggg"},"content":" throw new MikeException(errorMessage);","lastModifiedDate":"2024-01-25"},{"lineNumber":92,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":93,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":94,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":95,"author":{"gitId":"biinnnggggg"},"content":" private Command parseTodo() throws MikeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":96,"author":{"gitId":"biinnnggggg"},"content":" String usage \u003d \"Usage: todo [description]\";","lastModifiedDate":"2024-01-26"},{"lineNumber":97,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":98,"author":{"gitId":"biinnnggggg"},"content":" consume(TokenType.LITERAL, \"Description missing.\\n\" + usage);","lastModifiedDate":"2024-01-26"},{"lineNumber":99,"author":{"gitId":"biinnnggggg"},"content":" String description \u003d previousToken().getText().strip();","lastModifiedDate":"2024-01-26"},{"lineNumber":100,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":101,"author":{"gitId":"biinnnggggg"},"content":" consume(TokenType.EOC, usage);","lastModifiedDate":"2024-01-26"},{"lineNumber":102,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":103,"author":{"gitId":"biinnnggggg"},"content":" return new AddTodoCommand(description);","lastModifiedDate":"2024-01-26"},{"lineNumber":104,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":105,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":106,"author":{"gitId":"biinnnggggg"},"content":" private Command parseDeadline() throws MikeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":107,"author":{"gitId":"biinnnggggg"},"content":" String usage \u003d \"Usage: deadline [description] /by [date]\";","lastModifiedDate":"2024-01-26"},{"lineNumber":108,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":109,"author":{"gitId":"biinnnggggg"},"content":" consume(TokenType.LITERAL, \"Description missing.\\n\" + usage);","lastModifiedDate":"2024-01-26"},{"lineNumber":110,"author":{"gitId":"biinnnggggg"},"content":" String description \u003d previousToken().getText().strip();","lastModifiedDate":"2024-01-26"},{"lineNumber":111,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":112,"author":{"gitId":"biinnnggggg"},"content":" consume(TokenType.FORWARD_DASH, usage);","lastModifiedDate":"2024-01-26"},{"lineNumber":113,"author":{"gitId":"biinnnggggg"},"content":" consume(TokenType.PARAM, usage);","lastModifiedDate":"2024-01-26"},{"lineNumber":114,"author":{"gitId":"biinnnggggg"},"content":" Token paramToken \u003d previousToken();","lastModifiedDate":"2024-01-26"},{"lineNumber":115,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":116,"author":{"gitId":"biinnnggggg"},"content":" if (!paramToken.getText().equals(\"by\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":117,"author":{"gitId":"biinnnggggg"},"content":" throw error(usage);","lastModifiedDate":"2024-01-26"},{"lineNumber":118,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":119,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":120,"author":{"gitId":"biinnnggggg"},"content":" consume(TokenType.LITERAL, usage);","lastModifiedDate":"2024-01-26"},{"lineNumber":121,"author":{"gitId":"biinnnggggg"},"content":" String deadline \u003d previousToken().getText().strip();","lastModifiedDate":"2024-01-26"},{"lineNumber":122,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":123,"author":{"gitId":"biinnnggggg"},"content":" consume(TokenType.EOC, usage);","lastModifiedDate":"2024-01-26"},{"lineNumber":124,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":125,"author":{"gitId":"biinnnggggg"},"content":" return new AddDeadlineCommand(description, deadline);","lastModifiedDate":"2024-01-26"},{"lineNumber":126,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":127,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":128,"author":{"gitId":"biinnnggggg"},"content":" private Command parseEvent() throws MikeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":129,"author":{"gitId":"biinnnggggg"},"content":" String usage \u003d \"Usage: event [description] /from [date] /to [date]\";","lastModifiedDate":"2024-01-26"},{"lineNumber":130,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":131,"author":{"gitId":"biinnnggggg"},"content":" consume(TokenType.LITERAL, \"Description missing.\\n\" + usage);","lastModifiedDate":"2024-01-26"},{"lineNumber":132,"author":{"gitId":"biinnnggggg"},"content":" String description \u003d previousToken().getText().strip();","lastModifiedDate":"2024-01-26"},{"lineNumber":133,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":134,"author":{"gitId":"biinnnggggg"},"content":" consume(TokenType.FORWARD_DASH, usage);","lastModifiedDate":"2024-01-26"},{"lineNumber":135,"author":{"gitId":"biinnnggggg"},"content":" consume(TokenType.PARAM, usage);","lastModifiedDate":"2024-01-26"},{"lineNumber":136,"author":{"gitId":"biinnnggggg"},"content":" Token paramToken \u003d previousToken();","lastModifiedDate":"2024-01-26"},{"lineNumber":137,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":138,"author":{"gitId":"biinnnggggg"},"content":" if (!paramToken.getText().equals(\"from\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":139,"author":{"gitId":"biinnnggggg"},"content":" throw error(usage);","lastModifiedDate":"2024-01-26"},{"lineNumber":140,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":141,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":142,"author":{"gitId":"biinnnggggg"},"content":" consume(TokenType.LITERAL, \"Start date missing.\\n\" + usage);","lastModifiedDate":"2024-01-26"},{"lineNumber":143,"author":{"gitId":"biinnnggggg"},"content":" String startDate \u003d previousToken().getText().strip();","lastModifiedDate":"2024-01-26"},{"lineNumber":144,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":145,"author":{"gitId":"biinnnggggg"},"content":" consume(TokenType.FORWARD_DASH, usage);","lastModifiedDate":"2024-01-26"},{"lineNumber":146,"author":{"gitId":"biinnnggggg"},"content":" consume(TokenType.PARAM, usage);","lastModifiedDate":"2024-01-26"},{"lineNumber":147,"author":{"gitId":"biinnnggggg"},"content":" paramToken \u003d previousToken();","lastModifiedDate":"2024-01-26"},{"lineNumber":148,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":149,"author":{"gitId":"biinnnggggg"},"content":" if (!paramToken.getText().equals(\"to\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":150,"author":{"gitId":"biinnnggggg"},"content":" throw error(usage);","lastModifiedDate":"2024-01-26"},{"lineNumber":151,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":152,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":153,"author":{"gitId":"biinnnggggg"},"content":" consume(TokenType.LITERAL, \"End date missing.\\n\" + usage);","lastModifiedDate":"2024-01-26"},{"lineNumber":154,"author":{"gitId":"biinnnggggg"},"content":" String endDate \u003d previousToken().getText().strip();","lastModifiedDate":"2024-01-26"},{"lineNumber":155,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":156,"author":{"gitId":"biinnnggggg"},"content":" consume(TokenType.EOC, usage);","lastModifiedDate":"2024-01-26"},{"lineNumber":157,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":158,"author":{"gitId":"biinnnggggg"},"content":" return new AddEventCommand(description, startDate, endDate);","lastModifiedDate":"2024-01-26"},{"lineNumber":159,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":160,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":161,"author":{"gitId":"biinnnggggg"},"content":" private Command parseDelete() throws MikeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":162,"author":{"gitId":"biinnnggggg"},"content":" String usage \u003d \"Usage: delete [number]\";","lastModifiedDate":"2024-01-26"},{"lineNumber":163,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":164,"author":{"gitId":"biinnnggggg"},"content":" consume(TokenType.LITERAL, usage);","lastModifiedDate":"2024-01-26"},{"lineNumber":165,"author":{"gitId":"biinnnggggg"},"content":" String argument \u003d previousToken().getText();","lastModifiedDate":"2024-01-26"},{"lineNumber":166,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":167,"author":{"gitId":"biinnnggggg"},"content":" consume(TokenType.EOC, usage);","lastModifiedDate":"2024-01-26"},{"lineNumber":168,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":169,"author":{"gitId":"biinnnggggg"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":170,"author":{"gitId":"biinnnggggg"},"content":" int taskNumber \u003d Integer.parseInt(argument);","lastModifiedDate":"2024-01-25"},{"lineNumber":171,"author":{"gitId":"biinnnggggg"},"content":" return new DeleteCommand(taskNumber);","lastModifiedDate":"2024-01-25"},{"lineNumber":172,"author":{"gitId":"biinnnggggg"},"content":" } catch(NumberFormatException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":173,"author":{"gitId":"biinnnggggg"},"content":" String errorMessage \u003d \"One, two, three, four, get the kid back through the door!\\n\" +","lastModifiedDate":"2024-01-26"},{"lineNumber":174,"author":{"gitId":"biinnnggggg"},"content":" \"\u0027\" + argument + \"\u0027 is not an integer Sulley...\";","lastModifiedDate":"2024-01-26"},{"lineNumber":175,"author":{"gitId":"biinnnggggg"},"content":" throw new MikeException(errorMessage);","lastModifiedDate":"2024-01-25"},{"lineNumber":176,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":177,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":178,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":179,"author":{"gitId":"biinnnggggg"},"content":" private MikeException error(String message) {","lastModifiedDate":"2024-01-26"},{"lineNumber":180,"author":{"gitId":"biinnnggggg"},"content":" return new MikeException(message);","lastModifiedDate":"2024-01-26"},{"lineNumber":181,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":182,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":183,"author":{"gitId":"biinnnggggg"},"content":" private Token consume(TokenType type, String message) throws MikeException {","lastModifiedDate":"2024-01-26"},{"lineNumber":184,"author":{"gitId":"biinnnggggg"},"content":" if (check(type)) return advance();","lastModifiedDate":"2024-01-26"},{"lineNumber":185,"author":{"gitId":"biinnnggggg"},"content":" throw error(message);","lastModifiedDate":"2024-01-26"},{"lineNumber":186,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":187,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":188,"author":{"gitId":"biinnnggggg"},"content":" private boolean check(TokenType type) {","lastModifiedDate":"2024-01-26"},{"lineNumber":189,"author":{"gitId":"biinnnggggg"},"content":" return peekToken().getType() \u003d\u003d type;","lastModifiedDate":"2024-01-26"},{"lineNumber":190,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":191,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":192,"author":{"gitId":"biinnnggggg"},"content":" private Token advance() {","lastModifiedDate":"2024-01-26"},{"lineNumber":193,"author":{"gitId":"biinnnggggg"},"content":" if (!isAtEnd()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":194,"author":{"gitId":"biinnnggggg"},"content":" current++;","lastModifiedDate":"2024-01-26"},{"lineNumber":195,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":196,"author":{"gitId":"biinnnggggg"},"content":" return previousToken();","lastModifiedDate":"2024-01-26"},{"lineNumber":197,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":198,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":199,"author":{"gitId":"biinnnggggg"},"content":" private Token previousToken() {","lastModifiedDate":"2024-01-26"},{"lineNumber":200,"author":{"gitId":"biinnnggggg"},"content":" return tokens.get(current - 1);","lastModifiedDate":"2024-01-26"},{"lineNumber":201,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":202,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":203,"author":{"gitId":"biinnnggggg"},"content":" private boolean isAtEnd() {","lastModifiedDate":"2024-01-26"},{"lineNumber":204,"author":{"gitId":"biinnnggggg"},"content":" return peekToken().getType() \u003d\u003d TokenType.EOC;","lastModifiedDate":"2024-01-26"},{"lineNumber":205,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":206,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":207,"author":{"gitId":"biinnnggggg"},"content":" private Token peekToken() {","lastModifiedDate":"2024-01-26"},{"lineNumber":208,"author":{"gitId":"biinnnggggg"},"content":" return tokens.get(current);","lastModifiedDate":"2024-01-26"},{"lineNumber":209,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":210,"author":{"gitId":"biinnnggggg"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"biinnnggggg":210}},{"path":"src/main/java/CommandScanner.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"biinnnggggg"},"content":"import java.util.Map;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"biinnnggggg"},"content":"import java.util.HashMap;","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"biinnnggggg"},"content":"import java.util.List;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"biinnnggggg"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"biinnnggggg"},"content":"public class CommandScanner {","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"biinnnggggg"},"content":" private static final Map\u003cString, TokenType\u003e commands;","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"biinnnggggg"},"content":" static {","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"biinnnggggg"},"content":" commands \u003d new HashMap\u003cString, TokenType\u003e(0);","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"biinnnggggg"},"content":" commands.put(\"bye\", TokenType.EXIT);","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"biinnnggggg"},"content":" commands.put(\"list\", TokenType.LIST);","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"biinnnggggg"},"content":" commands.put(\"mark\", TokenType.MARK);","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"biinnnggggg"},"content":" commands.put(\"unmark\", TokenType.UNMARK);","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"biinnnggggg"},"content":" commands.put(\"todo\", TokenType.TODO);","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"biinnnggggg"},"content":" commands.put(\"deadline\", TokenType.DEADLINE);","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"biinnnggggg"},"content":" commands.put(\"event\", TokenType.EVENT);","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"biinnnggggg"},"content":" commands.put(\"delete\", TokenType.DELETE);","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"biinnnggggg"},"content":" private final String source;","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"biinnnggggg"},"content":" private final List\u003cToken\u003e tokens;","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"biinnnggggg"},"content":" private int start;","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"biinnnggggg"},"content":" private int current;","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"biinnnggggg"},"content":" CommandScanner(String source) {","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"biinnnggggg"},"content":" this.source \u003d source;","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"biinnnggggg"},"content":" this.tokens \u003d new ArrayList\u003cToken\u003e();","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"biinnnggggg"},"content":" this.start \u003d 0;","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"biinnnggggg"},"content":" this.current \u003d 0;","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"biinnnggggg"},"content":" public List\u003cToken\u003e scanTokens() {","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"biinnnggggg"},"content":" // command token","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"biinnnggggg"},"content":" scanStartToken();","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"biinnnggggg"},"content":" // argument tokens","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"biinnnggggg"},"content":" while (!isAtEnd()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"biinnnggggg"},"content":" start \u003d current;","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"biinnnggggg"},"content":" scanToken();","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"biinnnggggg"},"content":" scanEndToken();","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"biinnnggggg"},"content":" return tokens;","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"biinnnggggg"},"content":" private void scanEndToken() {","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"biinnnggggg"},"content":" tokens.add(new Token(TokenType.EOC, \"\"));","lastModifiedDate":"2024-01-26"},{"lineNumber":48,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":49,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":50,"author":{"gitId":"biinnnggggg"},"content":" private void scanToken() {","lastModifiedDate":"2024-01-26"},{"lineNumber":51,"author":{"gitId":"biinnnggggg"},"content":" char c \u003d advance();","lastModifiedDate":"2024-01-26"},{"lineNumber":52,"author":{"gitId":"biinnnggggg"},"content":" switch (c) {","lastModifiedDate":"2024-01-26"},{"lineNumber":53,"author":{"gitId":"biinnnggggg"},"content":" case \u0027/\u0027:","lastModifiedDate":"2024-01-26"},{"lineNumber":54,"author":{"gitId":"biinnnggggg"},"content":" prefix();","lastModifiedDate":"2024-01-26"},{"lineNumber":55,"author":{"gitId":"biinnnggggg"},"content":" parameter();","lastModifiedDate":"2024-01-26"},{"lineNumber":56,"author":{"gitId":"biinnnggggg"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":57,"author":{"gitId":"biinnnggggg"},"content":" case \u0027 \u0027:","lastModifiedDate":"2024-01-26"},{"lineNumber":58,"author":{"gitId":"biinnnggggg"},"content":" case \u0027\\r\u0027:","lastModifiedDate":"2024-01-26"},{"lineNumber":59,"author":{"gitId":"biinnnggggg"},"content":" case \u0027\\t\u0027:","lastModifiedDate":"2024-01-26"},{"lineNumber":60,"author":{"gitId":"biinnnggggg"},"content":" // ignore whitespace","lastModifiedDate":"2024-01-26"},{"lineNumber":61,"author":{"gitId":"biinnnggggg"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":62,"author":{"gitId":"biinnnggggg"},"content":" default:","lastModifiedDate":"2024-01-26"},{"lineNumber":63,"author":{"gitId":"biinnnggggg"},"content":" literal();","lastModifiedDate":"2024-01-26"},{"lineNumber":64,"author":{"gitId":"biinnnggggg"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":65,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":66,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":67,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":68,"author":{"gitId":"biinnnggggg"},"content":" private void literal() {","lastModifiedDate":"2024-01-26"},{"lineNumber":69,"author":{"gitId":"biinnnggggg"},"content":" while (peek() !\u003d \u0027/\u0027 \u0026\u0026 !isAtEnd()) advance();","lastModifiedDate":"2024-01-26"},{"lineNumber":70,"author":{"gitId":"biinnnggggg"},"content":" addToken(TokenType.LITERAL);","lastModifiedDate":"2024-01-26"},{"lineNumber":71,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":72,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":73,"author":{"gitId":"biinnnggggg"},"content":" private void parameter() {","lastModifiedDate":"2024-01-26"},{"lineNumber":74,"author":{"gitId":"biinnnggggg"},"content":" start \u003d current;","lastModifiedDate":"2024-01-26"},{"lineNumber":75,"author":{"gitId":"biinnnggggg"},"content":" while (!isWhiteSpace(peek()) \u0026\u0026 !isAtEnd()) advance();","lastModifiedDate":"2024-01-26"},{"lineNumber":76,"author":{"gitId":"biinnnggggg"},"content":" addToken(TokenType.PARAM);","lastModifiedDate":"2024-01-26"},{"lineNumber":77,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":78,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":79,"author":{"gitId":"biinnnggggg"},"content":" private void prefix() {","lastModifiedDate":"2024-01-26"},{"lineNumber":80,"author":{"gitId":"biinnnggggg"},"content":" addToken(TokenType.FORWARD_DASH);","lastModifiedDate":"2024-01-26"},{"lineNumber":81,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":82,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":83,"author":{"gitId":"biinnnggggg"},"content":" private void scanStartToken() {","lastModifiedDate":"2024-01-26"},{"lineNumber":84,"author":{"gitId":"biinnnggggg"},"content":" while (!isWhiteSpace(peek()) \u0026\u0026 !isAtEnd()) advance();","lastModifiedDate":"2024-01-26"},{"lineNumber":85,"author":{"gitId":"biinnnggggg"},"content":" String text \u003d source.substring(start, current);","lastModifiedDate":"2024-01-26"},{"lineNumber":86,"author":{"gitId":"biinnnggggg"},"content":" TokenType type \u003d commands.get(text);","lastModifiedDate":"2024-01-26"},{"lineNumber":87,"author":{"gitId":"biinnnggggg"},"content":" if (type \u003d\u003d null) type \u003d TokenType.LITERAL;","lastModifiedDate":"2024-01-26"},{"lineNumber":88,"author":{"gitId":"biinnnggggg"},"content":" // flag that LITERAL is not recognised command when parsing","lastModifiedDate":"2024-01-26"},{"lineNumber":89,"author":{"gitId":"biinnnggggg"},"content":" addToken(type);","lastModifiedDate":"2024-01-26"},{"lineNumber":90,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":91,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":92,"author":{"gitId":"biinnnggggg"},"content":" private void addToken(TokenType type) {","lastModifiedDate":"2024-01-26"},{"lineNumber":93,"author":{"gitId":"biinnnggggg"},"content":" String text \u003d source.substring(start, current);","lastModifiedDate":"2024-01-26"},{"lineNumber":94,"author":{"gitId":"biinnnggggg"},"content":" Token newToken \u003d new Token(type, text);","lastModifiedDate":"2024-01-26"},{"lineNumber":95,"author":{"gitId":"biinnnggggg"},"content":" tokens.add(newToken);","lastModifiedDate":"2024-01-26"},{"lineNumber":96,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":97,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":98,"author":{"gitId":"biinnnggggg"},"content":" private char peek() {","lastModifiedDate":"2024-01-26"},{"lineNumber":99,"author":{"gitId":"biinnnggggg"},"content":" if (isAtEnd()) return \u0027\\0\u0027;","lastModifiedDate":"2024-01-26"},{"lineNumber":100,"author":{"gitId":"biinnnggggg"},"content":" return source.charAt(current);","lastModifiedDate":"2024-01-26"},{"lineNumber":101,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":102,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":103,"author":{"gitId":"biinnnggggg"},"content":" private boolean isWhiteSpace(char c) {","lastModifiedDate":"2024-01-26"},{"lineNumber":104,"author":{"gitId":"biinnnggggg"},"content":" return c \u003d\u003d \u0027 \u0027 || c \u003d\u003d \u0027\\t\u0027 || c \u003d\u003d \u0027\\r\u0027;","lastModifiedDate":"2024-01-26"},{"lineNumber":105,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":106,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":107,"author":{"gitId":"biinnnggggg"},"content":" private char advance() {","lastModifiedDate":"2024-01-26"},{"lineNumber":108,"author":{"gitId":"biinnnggggg"},"content":" return source.charAt(current++);","lastModifiedDate":"2024-01-26"},{"lineNumber":109,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":110,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":111,"author":{"gitId":"biinnnggggg"},"content":" private boolean isAtEnd() {","lastModifiedDate":"2024-01-26"},{"lineNumber":112,"author":{"gitId":"biinnnggggg"},"content":" return current \u003e\u003d source.length();","lastModifiedDate":"2024-01-26"},{"lineNumber":113,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":114,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":115,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":116,"author":{"gitId":"biinnnggggg"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"biinnnggggg":116}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"biinnnggggg"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"biinnnggggg"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"biinnnggggg"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"biinnnggggg"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"biinnnggggg"},"content":" private static final String TYPE \u003d \"Deadline\";","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"biinnnggggg"},"content":" protected LocalDate deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"biinnnggggg"},"content":" Deadline(String description, String deadline) throws MikeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"biinnnggggg"},"content":" super(description, TYPE);","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"biinnnggggg"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"biinnnggggg"},"content":" this.deadline \u003d LocalDate.parse(deadline);","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"biinnnggggg"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"biinnnggggg"},"content":" throw new MikeException(\"Please enter a valid date \" + e.getParsedString());","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"biinnnggggg"},"content":" private String getDeadline() {","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"biinnnggggg"},"content":" return deadline.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"biinnnggggg"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"biinnnggggg"},"content":" public String getFileEncoding() {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"biinnnggggg"},"content":" return super.getFileEncoding() + \",\" + deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"biinnnggggg"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"biinnnggggg"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"biinnnggggg"},"content":" return \"[D]\" + super.toString() + \" (by: \" + getDeadline() + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"biinnnggggg"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"biinnnggggg":31}},{"path":"src/main/java/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"biinnnggggg"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"biinnnggggg"},"content":" private final int taskNumber;","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"biinnnggggg"},"content":" DeleteCommand(int taskNumber) {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"biinnnggggg"},"content":" super(\"\");","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"biinnnggggg"},"content":" this.taskNumber \u003d taskNumber;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"biinnnggggg"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"biinnnggggg"},"content":" void execute(TaskList taskList) throws MikeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"biinnnggggg"},"content":" int taskIndex \u003d taskNumber - 1;","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"biinnnggggg"},"content":" if (taskList.isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"biinnnggggg"},"content":" throw new MikeException(\"There are no tasks to remove.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"biinnnggggg"},"content":" } else if (taskIndex \u003e\u003d taskList.size() || taskIndex \u003c 0) {","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"biinnnggggg"},"content":" throw new MikeException(\"That task doesn\u0027t exist. Please enter a number in the range 1-\" + taskList.size() + \".\");","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"biinnnggggg"},"content":" Task task \u003d taskList.get(taskIndex);","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"biinnnggggg"},"content":" taskList.remove(taskIndex);","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"biinnnggggg"},"content":" String message \u003d","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"biinnnggggg"},"content":" \"Noted! I\u0027ve removed this task:\\n \" +","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"biinnnggggg"},"content":" task + \"\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"biinnnggggg"},"content":" + \"Now you have \" + taskList.size() + \" tasks in the list.\";","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"biinnnggggg"},"content":" Ui.display(message);","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"biinnnggggg"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"biinnnggggg"},"content":" boolean isExit() {","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"biinnnggggg"},"content":" return false;","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"biinnnggggg"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"biinnnggggg":30}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"biinnnggggg"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"biinnnggggg"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"biinnnggggg"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"biinnnggggg"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"biinnnggggg"},"content":" private static final String TYPE \u003d \"Event\";","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"biinnnggggg"},"content":" protected LocalDate startDate;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"biinnnggggg"},"content":" protected LocalDate endDate;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"biinnnggggg"},"content":" Event(String description, String startDate, String endDate) throws MikeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"biinnnggggg"},"content":" super(description, TYPE);","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"biinnnggggg"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"biinnnggggg"},"content":" this.startDate \u003d LocalDate.parse(startDate);","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"biinnnggggg"},"content":" this.endDate \u003d LocalDate.parse(endDate);","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"biinnnggggg"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"biinnnggggg"},"content":" throw new MikeException(\"Please enter a valid date \" + e.getParsedString());","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"biinnnggggg"},"content":" private String getStartDate() {","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"biinnnggggg"},"content":" return startDate.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"biinnnggggg"},"content":" private String getEndDate() {","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"biinnnggggg"},"content":" return endDate.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"biinnnggggg"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"biinnnggggg"},"content":" public String getFileEncoding() {","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"biinnnggggg"},"content":" return super.getFileEncoding() + \",\" + getStartDate() + \",\" + getEndDate();","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"biinnnggggg"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"biinnnggggg"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"biinnnggggg"},"content":" return \"[E]\" + super.toString() + \" (from:\" + getStartDate() + \" to:\" + getEndDate() + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"biinnnggggg"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"biinnnggggg":37}},{"path":"src/main/java/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"biinnnggggg"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"biinnnggggg"},"content":" ExitCommand() {","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"biinnnggggg"},"content":" super(\"\");","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"biinnnggggg"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"biinnnggggg"},"content":" void execute(TaskList taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"biinnnggggg"},"content":" Ui.farewell();","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"biinnnggggg"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"biinnnggggg"},"content":" boolean isExit() {","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"biinnnggggg"},"content":" return true;","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"biinnnggggg"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"biinnnggggg":15}},{"path":"src/main/java/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"biinnnggggg"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"biinnnggggg"},"content":" ListCommand() {","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"biinnnggggg"},"content":" super(\"\" );","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"biinnnggggg"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"biinnnggggg"},"content":" void execute(TaskList taskList) throws MikeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"biinnnggggg"},"content":" if (taskList.isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"biinnnggggg"},"content":" throw new MikeException(\"You have no more tasks Sulley...\");","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"biinnnggggg"},"content":" Ui.display(\"You and I are a team.\\nHere is the task list:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"biinnnggggg"},"content":" Ui.display(taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"biinnnggggg"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"biinnnggggg"},"content":" boolean isExit() {","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"biinnnggggg"},"content":" return false;","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"biinnnggggg"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"biinnnggggg":19}},{"path":"src/main/java/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"biinnnggggg"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"biinnnggggg"},"content":" private final int taskNumber;","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"biinnnggggg"},"content":" MarkCommand(int taskNumber) {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"biinnnggggg"},"content":" super(\"\");","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"biinnnggggg"},"content":" this.taskNumber \u003d taskNumber;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"biinnnggggg"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"biinnnggggg"},"content":" void execute(TaskList taskList) throws MikeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"biinnnggggg"},"content":" int taskIndex \u003d taskNumber - 1;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"biinnnggggg"},"content":" if (taskList.isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"biinnnggggg"},"content":" throw new MikeException(\"There are no tasks to mark. Please add a task first.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"biinnnggggg"},"content":" } else if (taskIndex \u003e\u003d taskList.size() || taskIndex \u003c 0) {","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"biinnnggggg"},"content":" throw new MikeException(\"That\u0027s suspicious. Please enter a number in the range 1-\" + taskList.size() + \".\");","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"biinnnggggg"},"content":" Task task \u003d taskList.get(taskIndex);","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"biinnnggggg"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"biinnnggggg"},"content":" String message \u003d \"Nice! I\u0027ve marked this task as done:\\n \" + task;","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"biinnnggggg"},"content":" Ui.display(message);","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"biinnnggggg"},"content":" /*","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"biinnnggggg"},"content":" TODO:","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"biinnnggggg"},"content":" 1. Check that task is or is not done.","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"biinnnggggg"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"biinnnggggg"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"biinnnggggg"},"content":" boolean isExit() {","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"biinnnggggg"},"content":" return false;","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"biinnnggggg"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"biinnnggggg":30}},{"path":"src/main/java/Mike.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"biinnnggggg"},"content":"import java.util.List;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"biinnnggggg"},"content":"/*","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"biinnnggggg"},"content":"TODO:","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"biinnnggggg"},"content":" 1. Write comments to document code","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"biinnnggggg"},"content":" 2. Write the README.md","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"biinnnggggg"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"biinnnggggg"},"content":"public class Mike {","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"biinnnggggg"},"content":" private final TaskList taskList;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"biinnnggggg"},"content":" private final Ui ui;","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"biinnnggggg"},"content":" Mike() {","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"biinnnggggg"},"content":" this.taskList \u003d new TaskList();","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"biinnnggggg"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"biinnnggggg"},"content":" public void run() {","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"biinnnggggg"},"content":" ui.displayWelcome();","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"biinnnggggg"},"content":" boolean exitSeen \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"biinnnggggg"},"content":" while (!exitSeen) {","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"biinnnggggg"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"biinnnggggg"},"content":" String userInput \u003d ui.scanInput();","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"biinnnggggg"},"content":" Ui.displayLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"biinnnggggg"},"content":" List\u003cToken\u003e tokens \u003d new CommandScanner(userInput).scanTokens();","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"biinnnggggg"},"content":" // System.out.println(tokens);","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"biinnnggggg"},"content":" Command command \u003d new CommandParser(tokens).parse();","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"biinnnggggg"},"content":" command.execute(taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"biinnnggggg"},"content":" if (command.isExit()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"biinnnggggg"},"content":" exitSeen \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"biinnnggggg"},"content":" } catch (MikeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"biinnnggggg"},"content":" Ui.displayError(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"biinnnggggg"},"content":" } finally {","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"biinnnggggg"},"content":" Ui.displayLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"biinnnggggg"},"content":" taskList.writeToFile();","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"biinnnggggg"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"biinnnggggg"},"content":" * Main method that runs the program.","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"biinnnggggg"},"content":" * @param args n/a","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"biinnnggggg"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"biinnnggggg"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"biinnnggggg"},"content":" Mike mike \u003d new Mike();","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"biinnnggggg"},"content":" mike.run();","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"biinnnggggg"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"biinnnggggg":49}},{"path":"src/main/java/MikeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"biinnnggggg"},"content":"public class MikeException extends Exception {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"biinnnggggg"},"content":" MikeException(String message) {","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"biinnnggggg"},"content":" super(message);","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"biinnnggggg"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"biinnnggggg":5}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"biinnnggggg"},"content":"abstract class Task {","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"biinnnggggg"},"content":" protected final String description;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"biinnnggggg"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"biinnnggggg"},"content":" protected String type;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"biinnnggggg"},"content":" Task(String description, String type) {","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"biinnnggggg"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"biinnnggggg"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"biinnnggggg"},"content":" this.type \u003d type;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"biinnnggggg"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"biinnnggggg"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"biinnnggggg"},"content":" public void markAsNotDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"biinnnggggg"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"biinnnggggg"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"biinnnggggg"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"biinnnggggg"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"biinnnggggg"},"content":" return description;","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"biinnnggggg"},"content":" public String getIsDone() {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"biinnnggggg"},"content":" return isDone ? \"true\" : \"false\";","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"biinnnggggg"},"content":" public String getType() {","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"biinnnggggg"},"content":" return type;","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"biinnnggggg"},"content":" public String getFileEncoding() {","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"biinnnggggg"},"content":" return getType() + \",\" + getDescription() + \",\" + getIsDone();","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"biinnnggggg"},"content":" };","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"biinnnggggg"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"biinnnggggg"},"content":" return \"[\" + getStatusIcon() + \"] \" + getDescription();","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"biinnnggggg"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"biinnnggggg":43}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"biinnnggggg"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"biinnnggggg"},"content":"import java.util.stream.IntStream;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"biinnnggggg"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"biinnnggggg"},"content":"import java.io.File;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"biinnnggggg"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"biinnnggggg"},"content":"import java.io.PrintWriter;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"biinnnggggg"},"content":"public class TaskList extends ArrayList\u003cTask\u003e {","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"biinnnggggg"},"content":" private static final String FILE_DIRECTORY \u003d \"./data\";","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"biinnnggggg"},"content":" private static final String FILE_NAME \u003d \"Mike.txt\";","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"biinnnggggg"},"content":" protected File file;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"biinnnggggg"},"content":" TaskList() {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"biinnnggggg"},"content":" extractFile();","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"biinnnggggg"},"content":" public void extractFile() {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"biinnnggggg"},"content":" String filePath \u003d FILE_DIRECTORY + \"/\" + FILE_NAME;","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"biinnnggggg"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"biinnnggggg"},"content":" if (new File(FILE_DIRECTORY).mkdirs()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"biinnnggggg"},"content":" Ui.display(\"File location created at \" + filePath);","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"biinnnggggg"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"biinnnggggg"},"content":" Ui.display(\"File location already exists\");","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"biinnnggggg"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"biinnnggggg"},"content":" this.file \u003d file;","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"biinnnggggg"},"content":" if (file.createNewFile()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"biinnnggggg"},"content":" Ui.display(\"File created: \" + file.getName());","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"biinnnggggg"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"biinnnggggg"},"content":" Ui.display(\"File already exists\");","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"biinnnggggg"},"content":" Scanner fileScanner \u003d new Scanner(file);","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"biinnnggggg"},"content":" String line;","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"biinnnggggg"},"content":" Task newTask;","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"biinnnggggg"},"content":" while (fileScanner.hasNext()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"biinnnggggg"},"content":" line \u003d fileScanner.nextLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"biinnnggggg"},"content":" newTask \u003d extractTask(line);","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"biinnnggggg"},"content":" this.add(newTask);","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"biinnnggggg"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"biinnnggggg"},"content":" Ui.displayError(\"404 File not found\");","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"biinnnggggg"},"content":" } catch (MikeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"biinnnggggg"},"content":" Ui.displayError(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"biinnnggggg"},"content":" public void writeToFile() {","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"biinnnggggg"},"content":" String filePath \u003d FILE_DIRECTORY + \"/\" + FILE_NAME;","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"biinnnggggg"},"content":" try (PrintWriter out \u003d new PrintWriter(filePath)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"biinnnggggg"},"content":" for (Task task : this) {","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"biinnnggggg"},"content":" out.println(task.getFileEncoding());","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"biinnnggggg"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"biinnnggggg"},"content":" Ui.display(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"biinnnggggg"},"content":" private Task extractTask(String line) throws IndexOutOfBoundsException, MikeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"biinnnggggg"},"content":" String[] taskInformation \u003d line.split(\",\");","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"biinnnggggg"},"content":" String taskType \u003d taskInformation[0];","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"biinnnggggg"},"content":" String taskDescription \u003d taskInformation[1];","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"biinnnggggg"},"content":" boolean taskIsCompleted \u003d taskInformation[2].equals(\"true\");","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"biinnnggggg"},"content":" Task newTask;","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"biinnnggggg"},"content":" switch (taskType) {","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"biinnnggggg"},"content":" case \"Todo\":","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"biinnnggggg"},"content":" newTask \u003d new Todo(taskDescription);","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"biinnnggggg"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"biinnnggggg"},"content":" case \"Deadline\": // format: taskType,taskDescription,taskDone,deadline","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"biinnnggggg"},"content":" String deadline \u003d taskInformation[3];","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"biinnnggggg"},"content":" newTask \u003d new Deadline(taskDescription, deadline);","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"biinnnggggg"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"biinnnggggg"},"content":" case \"Event\": // format: taskType,taskDescription,taskDone,startDate,endDate","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"biinnnggggg"},"content":" String startDate \u003d taskInformation[3];","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"biinnnggggg"},"content":" String endDate \u003d taskInformation[4];","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"biinnnggggg"},"content":" newTask \u003d new Event(taskDescription, startDate, endDate);","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"biinnnggggg"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"biinnnggggg"},"content":" default:","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"biinnnggggg"},"content":" throw new MikeException(\"File corrupted\");","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"biinnnggggg"},"content":" if (taskIsCompleted) {","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"biinnnggggg"},"content":" newTask.markAsDone();","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"biinnnggggg"},"content":" return newTask;","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"biinnnggggg"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":99,"author":{"gitId":"biinnnggggg"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":100,"author":{"gitId":"biinnnggggg"},"content":" return String.join(\"\\n\", IntStream.range(0, this.size())","lastModifiedDate":"2024-01-25"},{"lineNumber":101,"author":{"gitId":"biinnnggggg"},"content":" .boxed()","lastModifiedDate":"2024-01-24"},{"lineNumber":102,"author":{"gitId":"biinnnggggg"},"content":" .map(i -\u003e {","lastModifiedDate":"2024-01-24"},{"lineNumber":103,"author":{"gitId":"biinnnggggg"},"content":" Task task \u003d this.get(i);","lastModifiedDate":"2024-01-24"},{"lineNumber":104,"author":{"gitId":"biinnnggggg"},"content":" int index \u003d i + 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":105,"author":{"gitId":"biinnnggggg"},"content":" return String.format(\"%d.%s\", index, task.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":106,"author":{"gitId":"biinnnggggg"},"content":" })","lastModifiedDate":"2024-01-24"},{"lineNumber":107,"author":{"gitId":"biinnnggggg"},"content":" .toArray(String[]::new)","lastModifiedDate":"2024-01-24"},{"lineNumber":108,"author":{"gitId":"biinnnggggg"},"content":" );","lastModifiedDate":"2024-01-24"},{"lineNumber":109,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":110,"author":{"gitId":"biinnnggggg"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"biinnnggggg":110}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"biinnnggggg"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"biinnnggggg"},"content":" private static final String TYPE \u003d \"Todo\";","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"biinnnggggg"},"content":" Todo(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"biinnnggggg"},"content":" super(description, TYPE);","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"biinnnggggg"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"biinnnggggg"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"biinnnggggg"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"biinnnggggg"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"biinnnggggg":11}},{"path":"src/main/java/Token.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"biinnnggggg"},"content":"public class Token {","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"biinnnggggg"},"content":" final TokenType type;","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"biinnnggggg"},"content":" final String text;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"biinnnggggg"},"content":" Token(TokenType type, String text) {","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"biinnnggggg"},"content":" this.type \u003d type;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"biinnnggggg"},"content":" this.text \u003d text;","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"biinnnggggg"},"content":" public TokenType getType() {","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"biinnnggggg"},"content":" return type;","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"biinnnggggg"},"content":" public String getText() {","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"biinnnggggg"},"content":" return text;","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"biinnnggggg"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"biinnnggggg"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"biinnnggggg"},"content":" return type + \" \" + text;","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"biinnnggggg"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"biinnnggggg":22}},{"path":"src/main/java/TokenType.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"biinnnggggg"},"content":"enum TokenType {","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"biinnnggggg"},"content":" // Command tokens","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"biinnnggggg"},"content":" EXIT, LIST, MARK, UNMARK, TODO, DEADLINE, EVENT, DELETE,","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"biinnnggggg"},"content":" // prefix character tokens","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"biinnnggggg"},"content":" FORWARD_DASH,","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"biinnnggggg"},"content":" // parameter tokens","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"biinnnggggg"},"content":" PARAM,","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"biinnnggggg"},"content":" // argument tokens","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"biinnnggggg"},"content":" LITERAL,","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"biinnnggggg"},"content":" // end of command","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"biinnnggggg"},"content":" EOC","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"biinnnggggg"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"biinnnggggg":16}},{"path":"src/main/java/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"biinnnggggg"},"content":"import java.util.NoSuchElementException;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"biinnnggggg"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"biinnnggggg"},"content":"public class Ui {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"biinnnggggg"},"content":" private final Scanner scanner;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"biinnnggggg"},"content":" Ui() {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"biinnnggggg"},"content":" scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"biinnnggggg"},"content":" public String scanInput() throws MikeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"biinnnggggg"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"biinnnggggg"},"content":" return scanner.nextLine().strip();","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"biinnnggggg"},"content":" } catch (NoSuchElementException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"biinnnggggg"},"content":" throw new MikeException(\"That is the weirdest thing you\u0027ve ever said.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"biinnnggggg"},"content":" public static void display(Object object) {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"biinnnggggg"},"content":" System.out.println(object);","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"biinnnggggg"},"content":" public static void displayError(String errorMessage) {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"biinnnggggg"},"content":" display(errorMessage);","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"biinnnggggg"},"content":" public void displayWelcome() {","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"biinnnggggg"},"content":" displayLogo();","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"biinnnggggg"},"content":" displayGreeting();","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"biinnnggggg"},"content":" displayLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"biinnnggggg"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"biinnnggggg"},"content":" * Displays a farewell message with Wazowski pizazz.","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"biinnnggggg"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"biinnnggggg"},"content":" public static void farewell() {","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"biinnnggggg"},"content":" String farewell \u003d","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"biinnnggggg"},"content":" \" Where are you going? We\u0027ll talk.\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"biinnnggggg"},"content":" \" We\u0027ll have a latte.\";","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"biinnnggggg"},"content":" display(farewell);","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"biinnnggggg"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"biinnnggggg"},"content":" * Prints the Wazowski logo as ASCII art.","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"biinnnggggg"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"biinnnggggg"},"content":" private void displayLogo() {","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"biinnnggggg"},"content":" String logo \u003d","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"biinnnggggg"},"content":" \" .\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"biinnnggggg"},"content":" \" \u0026# #*\u0026/,,(@%*. (#\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"biinnnggggg"},"content":" \" %#((,. #%,*,\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"biinnnggggg"},"content":" \" %%%(/,.. *( /,.**\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"biinnnggggg"},"content":" \" .%%%%#/**,%(@@\u0026@ /.,,/\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"biinnnggggg"},"content":" \" %%%%#(((/*(#*(%\u0026 ..,,,*(\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"biinnnggggg"},"content":" \" *#%%%##(/,#(/**,,...,...,,,**/\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"biinnnggggg"},"content":" \" .#%%%%%##(((//#(//*......,,,**//\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"biinnnggggg"},"content":" \" \u0026#%%%%%%###(///*,,..,,,,,,,***/#*\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"biinnnggggg"},"content":" \" \u0026#%%%%%%#####@@@@@@(,,**,****/(#*\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"biinnnggggg"},"content":" \" *\u0026%#%%\u0026\u0026\u0026%%%@@@@@@@@@@\u0026**/////(.\u0026/*\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"biinnnggggg"},"content":" \" #\u0026, #%\u0026\u0026\u0026\u0026\u0026\u0026%(((/*****((((((##. #(\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"biinnnggggg"},"content":" \" ## #\u0026\u0026\u0026\u0026\u0026\u0026\u0026\u0026\u0026\u0026%%%%%%###%%( (*\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"biinnnggggg"},"content":" \" .#/ /%%%%%%%%%%%%%%%%# //\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"biinnnggggg"},"content":" \" #( /## *#, (/\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"biinnnggggg"},"content":" \" %* /#( #, //\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"biinnnggggg"},"content":" \" %(/. %( .%\u0026 //*/\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"biinnnggggg"},"content":" \" %/,\u0026, \u0026( #%/ (#//,\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"biinnnggggg"},"content":" \" /(* ##* #% \u0026*#%\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"biinnnggggg"},"content":" \" @/@* (#*. #(. /%%\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"biinnnggggg"},"content":" \" (/(/##(...........##(//\u0026#(\u0026/.\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"biinnnggggg"},"content":" \" (@%(\u0026@@,#,..........,*@@\u0026\u0026@\u0026*,\\n\";","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"biinnnggggg"},"content":" display(logo);","lastModifiedDate":"2024-01-25"},{"lineNumber":68,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":69,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"biinnnggggg"},"content":" private void displayGreeting() {","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"biinnnggggg"},"content":" String greeting \u003d","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"biinnnggggg"},"content":" \" Hello! I\u0027m Mike WAZOWSKI.\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"biinnnggggg"},"content":" \" What can I do for you?\";","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"biinnnggggg"},"content":" display(greeting);","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"biinnnggggg"},"content":" public static void displayLine() {","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"biinnnggggg"},"content":" String horizontalLine \u003d \"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\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-26"},{"lineNumber":79,"author":{"gitId":"biinnnggggg"},"content":" display(horizontalLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":80,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":82,"author":{"gitId":"biinnnggggg"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"biinnnggggg":82}},{"path":"src/main/java/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"biinnnggggg"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"biinnnggggg"},"content":" private final int taskNumber;","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"biinnnggggg"},"content":" UnmarkCommand(int taskNumber) {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"biinnnggggg"},"content":" super(\"\");","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"biinnnggggg"},"content":" this.taskNumber \u003d taskNumber;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"biinnnggggg"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"biinnnggggg"},"content":" void execute(TaskList taskList) throws MikeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"biinnnggggg"},"content":" int taskIndex \u003d taskNumber - 1;","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"biinnnggggg"},"content":" if (taskList.isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"biinnnggggg"},"content":" throw new MikeException(\"There are no tasks to mark. Please add a task first.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"biinnnggggg"},"content":" } else if (taskIndex \u003e\u003d taskList.size() || taskIndex \u003c 0) {","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"biinnnggggg"},"content":" throw new MikeException(\"That\u0027s suspicious. Please enter a number in the range 1-\" + taskList.size() + \".\");","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"biinnnggggg"},"content":" Task task \u003d taskList.get(taskIndex);","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"biinnnggggg"},"content":" task.markAsNotDone();","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"biinnnggggg"},"content":" String message \u003d \"I\u0027ve marked this task as not done:\\n \" + task;","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"biinnnggggg"},"content":" Ui.display(message);","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"biinnnggggg"},"content":" /*","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"biinnnggggg"},"content":" TODO:","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"biinnnggggg"},"content":" 1. Check that task is or is not done.","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"biinnnggggg"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"biinnnggggg"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"biinnnggggg"},"content":" boolean isExit() {","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"biinnnggggg"},"content":" return false;","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"biinnnggggg"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"biinnnggggg":31}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"biinnnggggg"},"content":"todo read book","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"biinnnggggg"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"biinnnggggg"},"content":"mark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"biinnnggggg"},"content":"deadline return book /by friday","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"biinnnggggg"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"biinnnggggg"},"content":"mark 2","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"biinnnggggg"},"content":"random text","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"biinnnggggg"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"biinnnggggg"},"content":"event book club /from saturday 5pm /to 7pm","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"biinnnggggg"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"biinnnggggg"},"content":"mark 4","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"biinnnggggg"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"biinnnggggg"},"content":"event /from saturday 5pm /to 7pm","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"biinnnggggg"},"content":"event book club /from saturday 5pm /from /to 7pm","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"biinnnggggg"},"content":"event book club /to saturday 5pm /from 7pm","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"biinnnggggg"},"content":"bye","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"biinnnggggg":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":"biinnnggggg"},"content":"java -classpath ..\\bin Mike \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"biinnnggggg":1,"-":20}}] +[{"path":"src/main/java/mike/CommandParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"biinnnggggg"},"content":"package mike;/*","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"biinnnggggg"},"content":"TODO:","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"biinnnggggg"},"content":" 1. Write comments to document the code.","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"biinnnggggg"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"biinnnggggg"},"content":"import mike.command.*;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"biinnnggggg"},"content":"import java.util.List;","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"biinnnggggg"},"content":"class CommandParser {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"biinnnggggg"},"content":" private final List\u003cToken\u003e tokens;","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"biinnnggggg"},"content":" private int current;","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"biinnnggggg"},"content":" CommandParser(List\u003cToken\u003e tokens) {","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"biinnnggggg"},"content":" this.tokens \u003d tokens;","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"biinnnggggg"},"content":" this.current \u003d 0;","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"biinnnggggg"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"biinnnggggg"},"content":" * Parses the token list to generate a Command object which is returned.","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"biinnnggggg"},"content":" * @return Command that can be executed.","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"biinnnggggg"},"content":" * @throws MikeException If there is no command input or the command is not recognized.","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"biinnnggggg"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"biinnnggggg"},"content":" public Command parse() throws MikeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"biinnnggggg"},"content":" Token commandToken \u003d advance();","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"biinnnggggg"},"content":" switch (commandToken.getType()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"biinnnggggg"},"content":" case EXIT:","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"biinnnggggg"},"content":" return parseExit();","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"biinnnggggg"},"content":" case LIST:","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"biinnnggggg"},"content":" return parseList();","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"biinnnggggg"},"content":" case MARK:","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"biinnnggggg"},"content":" return parseMark();","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"biinnnggggg"},"content":" case UNMARK:","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"biinnnggggg"},"content":" return parseUnmark();","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"biinnnggggg"},"content":" case TODO:","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"biinnnggggg"},"content":" return parseTodo();","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"biinnnggggg"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"biinnnggggg"},"content":" return parseDeadline();","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"biinnnggggg"},"content":" case EVENT:","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"biinnnggggg"},"content":" return parseEvent();","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"biinnnggggg"},"content":" case DELETE:","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"biinnnggggg"},"content":" return parseDelete();","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"biinnnggggg"},"content":" case EOC:","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"biinnnggggg"},"content":" throw new MikeException(\"Say something.\");","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"biinnnggggg"},"content":" default:","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"biinnnggggg"},"content":" String errorMessage \u003d \"\u0027\" + commandToken.getText() + \"\u0027 is not recognized as a command.\\n\"","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"biinnnggggg"},"content":" + \"That is the weirdest thing you\u0027ve ever said.\";","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"biinnnggggg"},"content":" throw new MikeException(errorMessage);","lastModifiedDate":"2024-01-26"},{"lineNumber":48,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"biinnnggggg"},"content":" private Command parseExit() throws MikeException {","lastModifiedDate":"2024-01-26"},{"lineNumber":52,"author":{"gitId":"biinnnggggg"},"content":" consume(TokenType.EOC, \"Usage: bye\");","lastModifiedDate":"2024-01-26"},{"lineNumber":53,"author":{"gitId":"biinnnggggg"},"content":" return new ExitCommand();","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"biinnnggggg"},"content":" private Command parseList() throws MikeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"biinnnggggg"},"content":" consume(TokenType.EOC, \"Usage: list\");","lastModifiedDate":"2024-01-26"},{"lineNumber":58,"author":{"gitId":"biinnnggggg"},"content":" return new ListCommand();","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"biinnnggggg"},"content":" private Command parseMark() throws MikeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"biinnnggggg"},"content":" String usage \u003d \"Usage: mark [number]\";","lastModifiedDate":"2024-01-26"},{"lineNumber":63,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"biinnnggggg"},"content":" consume(TokenType.LITERAL, usage);","lastModifiedDate":"2024-01-26"},{"lineNumber":65,"author":{"gitId":"biinnnggggg"},"content":" String argument \u003d previousToken().getText();","lastModifiedDate":"2024-01-26"},{"lineNumber":66,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":67,"author":{"gitId":"biinnnggggg"},"content":" consume(TokenType.EOC, usage);","lastModifiedDate":"2024-01-26"},{"lineNumber":68,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":69,"author":{"gitId":"biinnnggggg"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"biinnnggggg"},"content":" int taskNumber \u003d Integer.parseInt(argument);","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"biinnnggggg"},"content":" return new MarkCommand(taskNumber);","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"biinnnggggg"},"content":" } catch(NumberFormatException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":73,"author":{"gitId":"biinnnggggg"},"content":" String errorMessage \u003d \"One, two, three, four, get the kid back through the door!\\n\" +","lastModifiedDate":"2024-01-26"},{"lineNumber":74,"author":{"gitId":"biinnnggggg"},"content":" \"\u0027\" + argument + \"\u0027 is not an integer Sulley...\";","lastModifiedDate":"2024-01-26"},{"lineNumber":75,"author":{"gitId":"biinnnggggg"},"content":" throw new MikeException(errorMessage);","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":79,"author":{"gitId":"biinnnggggg"},"content":" private Command parseUnmark() throws MikeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":80,"author":{"gitId":"biinnnggggg"},"content":" String usage \u003d\"Usage: unmark [number]\";","lastModifiedDate":"2024-01-26"},{"lineNumber":81,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":82,"author":{"gitId":"biinnnggggg"},"content":" consume(TokenType.LITERAL, usage);","lastModifiedDate":"2024-01-26"},{"lineNumber":83,"author":{"gitId":"biinnnggggg"},"content":" String argument \u003d previousToken().getText();","lastModifiedDate":"2024-01-26"},{"lineNumber":84,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":85,"author":{"gitId":"biinnnggggg"},"content":" consume(TokenType.EOC, usage);","lastModifiedDate":"2024-01-26"},{"lineNumber":86,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":87,"author":{"gitId":"biinnnggggg"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":88,"author":{"gitId":"biinnnggggg"},"content":" int taskNumber \u003d Integer.parseInt(argument);","lastModifiedDate":"2024-01-25"},{"lineNumber":89,"author":{"gitId":"biinnnggggg"},"content":" return new UnmarkCommand(taskNumber);","lastModifiedDate":"2024-01-25"},{"lineNumber":90,"author":{"gitId":"biinnnggggg"},"content":" } catch(NumberFormatException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":91,"author":{"gitId":"biinnnggggg"},"content":" String errorMessage \u003d \"One, two, three, four, get the kid back through the door!\\n\" +","lastModifiedDate":"2024-01-26"},{"lineNumber":92,"author":{"gitId":"biinnnggggg"},"content":" \"\u0027\" + argument + \"\u0027 is not an integer Sulley...\";","lastModifiedDate":"2024-01-26"},{"lineNumber":93,"author":{"gitId":"biinnnggggg"},"content":" throw new MikeException(errorMessage);","lastModifiedDate":"2024-01-25"},{"lineNumber":94,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":95,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":96,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":97,"author":{"gitId":"biinnnggggg"},"content":" private Command parseTodo() throws MikeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":98,"author":{"gitId":"biinnnggggg"},"content":" String usage \u003d \"Usage: todo [description]\";","lastModifiedDate":"2024-01-26"},{"lineNumber":99,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":100,"author":{"gitId":"biinnnggggg"},"content":" consume(TokenType.LITERAL, \"Description missing.\\n\" + usage);","lastModifiedDate":"2024-01-26"},{"lineNumber":101,"author":{"gitId":"biinnnggggg"},"content":" String description \u003d previousToken().getText().strip();","lastModifiedDate":"2024-01-26"},{"lineNumber":102,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":103,"author":{"gitId":"biinnnggggg"},"content":" consume(TokenType.EOC, usage);","lastModifiedDate":"2024-01-26"},{"lineNumber":104,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":105,"author":{"gitId":"biinnnggggg"},"content":" return new AddTodoCommand(description);","lastModifiedDate":"2024-01-26"},{"lineNumber":106,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":107,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":108,"author":{"gitId":"biinnnggggg"},"content":" private Command parseDeadline() throws MikeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":109,"author":{"gitId":"biinnnggggg"},"content":" String usage \u003d \"Usage: deadline [description] /by [date]\";","lastModifiedDate":"2024-01-26"},{"lineNumber":110,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":111,"author":{"gitId":"biinnnggggg"},"content":" consume(TokenType.LITERAL, \"Description missing.\\n\" + usage);","lastModifiedDate":"2024-01-26"},{"lineNumber":112,"author":{"gitId":"biinnnggggg"},"content":" String description \u003d previousToken().getText().strip();","lastModifiedDate":"2024-01-26"},{"lineNumber":113,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":114,"author":{"gitId":"biinnnggggg"},"content":" consume(TokenType.FORWARD_DASH, usage);","lastModifiedDate":"2024-01-26"},{"lineNumber":115,"author":{"gitId":"biinnnggggg"},"content":" consume(TokenType.PARAM, usage);","lastModifiedDate":"2024-01-26"},{"lineNumber":116,"author":{"gitId":"biinnnggggg"},"content":" Token paramToken \u003d previousToken();","lastModifiedDate":"2024-01-26"},{"lineNumber":117,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":118,"author":{"gitId":"biinnnggggg"},"content":" if (!paramToken.getText().equals(\"by\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":119,"author":{"gitId":"biinnnggggg"},"content":" throw error(usage);","lastModifiedDate":"2024-01-26"},{"lineNumber":120,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":121,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":122,"author":{"gitId":"biinnnggggg"},"content":" consume(TokenType.LITERAL, usage);","lastModifiedDate":"2024-01-26"},{"lineNumber":123,"author":{"gitId":"biinnnggggg"},"content":" String deadline \u003d previousToken().getText().strip();","lastModifiedDate":"2024-01-26"},{"lineNumber":124,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":125,"author":{"gitId":"biinnnggggg"},"content":" consume(TokenType.EOC, usage);","lastModifiedDate":"2024-01-26"},{"lineNumber":126,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":127,"author":{"gitId":"biinnnggggg"},"content":" return new AddDeadlineCommand(description, deadline);","lastModifiedDate":"2024-01-26"},{"lineNumber":128,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":129,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":130,"author":{"gitId":"biinnnggggg"},"content":" private Command parseEvent() throws MikeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":131,"author":{"gitId":"biinnnggggg"},"content":" String usage \u003d \"Usage: event [description] /from [date] /to [date]\";","lastModifiedDate":"2024-01-26"},{"lineNumber":132,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":133,"author":{"gitId":"biinnnggggg"},"content":" consume(TokenType.LITERAL, \"Description missing.\\n\" + usage);","lastModifiedDate":"2024-01-26"},{"lineNumber":134,"author":{"gitId":"biinnnggggg"},"content":" String description \u003d previousToken().getText().strip();","lastModifiedDate":"2024-01-26"},{"lineNumber":135,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":136,"author":{"gitId":"biinnnggggg"},"content":" consume(TokenType.FORWARD_DASH, usage);","lastModifiedDate":"2024-01-26"},{"lineNumber":137,"author":{"gitId":"biinnnggggg"},"content":" consume(TokenType.PARAM, usage);","lastModifiedDate":"2024-01-26"},{"lineNumber":138,"author":{"gitId":"biinnnggggg"},"content":" Token paramToken \u003d previousToken();","lastModifiedDate":"2024-01-26"},{"lineNumber":139,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":140,"author":{"gitId":"biinnnggggg"},"content":" if (!paramToken.getText().equals(\"from\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":141,"author":{"gitId":"biinnnggggg"},"content":" throw error(usage);","lastModifiedDate":"2024-01-26"},{"lineNumber":142,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":143,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":144,"author":{"gitId":"biinnnggggg"},"content":" consume(TokenType.LITERAL, \"Start date missing.\\n\" + usage);","lastModifiedDate":"2024-01-26"},{"lineNumber":145,"author":{"gitId":"biinnnggggg"},"content":" String startDate \u003d previousToken().getText().strip();","lastModifiedDate":"2024-01-26"},{"lineNumber":146,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":147,"author":{"gitId":"biinnnggggg"},"content":" consume(TokenType.FORWARD_DASH, usage);","lastModifiedDate":"2024-01-26"},{"lineNumber":148,"author":{"gitId":"biinnnggggg"},"content":" consume(TokenType.PARAM, usage);","lastModifiedDate":"2024-01-26"},{"lineNumber":149,"author":{"gitId":"biinnnggggg"},"content":" paramToken \u003d previousToken();","lastModifiedDate":"2024-01-26"},{"lineNumber":150,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":151,"author":{"gitId":"biinnnggggg"},"content":" if (!paramToken.getText().equals(\"to\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":152,"author":{"gitId":"biinnnggggg"},"content":" throw error(usage);","lastModifiedDate":"2024-01-26"},{"lineNumber":153,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":154,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":155,"author":{"gitId":"biinnnggggg"},"content":" consume(TokenType.LITERAL, \"End date missing.\\n\" + usage);","lastModifiedDate":"2024-01-26"},{"lineNumber":156,"author":{"gitId":"biinnnggggg"},"content":" String endDate \u003d previousToken().getText().strip();","lastModifiedDate":"2024-01-26"},{"lineNumber":157,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":158,"author":{"gitId":"biinnnggggg"},"content":" consume(TokenType.EOC, usage);","lastModifiedDate":"2024-01-26"},{"lineNumber":159,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":160,"author":{"gitId":"biinnnggggg"},"content":" return new AddEventCommand(description, startDate, endDate);","lastModifiedDate":"2024-01-26"},{"lineNumber":161,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":162,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":163,"author":{"gitId":"biinnnggggg"},"content":" private Command parseDelete() throws MikeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":164,"author":{"gitId":"biinnnggggg"},"content":" String usage \u003d \"Usage: delete [number]\";","lastModifiedDate":"2024-01-26"},{"lineNumber":165,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":166,"author":{"gitId":"biinnnggggg"},"content":" consume(TokenType.LITERAL, usage);","lastModifiedDate":"2024-01-26"},{"lineNumber":167,"author":{"gitId":"biinnnggggg"},"content":" String argument \u003d previousToken().getText();","lastModifiedDate":"2024-01-26"},{"lineNumber":168,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":169,"author":{"gitId":"biinnnggggg"},"content":" consume(TokenType.EOC, usage);","lastModifiedDate":"2024-01-26"},{"lineNumber":170,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":171,"author":{"gitId":"biinnnggggg"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":172,"author":{"gitId":"biinnnggggg"},"content":" int taskNumber \u003d Integer.parseInt(argument);","lastModifiedDate":"2024-01-25"},{"lineNumber":173,"author":{"gitId":"biinnnggggg"},"content":" return new DeleteCommand(taskNumber);","lastModifiedDate":"2024-01-25"},{"lineNumber":174,"author":{"gitId":"biinnnggggg"},"content":" } catch(NumberFormatException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":175,"author":{"gitId":"biinnnggggg"},"content":" String errorMessage \u003d \"One, two, three, four, get the kid back through the door!\\n\" +","lastModifiedDate":"2024-01-26"},{"lineNumber":176,"author":{"gitId":"biinnnggggg"},"content":" \"\u0027\" + argument + \"\u0027 is not an integer Sulley...\";","lastModifiedDate":"2024-01-26"},{"lineNumber":177,"author":{"gitId":"biinnnggggg"},"content":" throw new MikeException(errorMessage);","lastModifiedDate":"2024-01-25"},{"lineNumber":178,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":179,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":180,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":181,"author":{"gitId":"biinnnggggg"},"content":" private MikeException error(String message) {","lastModifiedDate":"2024-01-26"},{"lineNumber":182,"author":{"gitId":"biinnnggggg"},"content":" return new MikeException(message);","lastModifiedDate":"2024-01-26"},{"lineNumber":183,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":184,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":185,"author":{"gitId":"biinnnggggg"},"content":" private Token consume(TokenType type, String message) throws MikeException {","lastModifiedDate":"2024-01-26"},{"lineNumber":186,"author":{"gitId":"biinnnggggg"},"content":" if (check(type)) return advance();","lastModifiedDate":"2024-01-26"},{"lineNumber":187,"author":{"gitId":"biinnnggggg"},"content":" throw error(message);","lastModifiedDate":"2024-01-26"},{"lineNumber":188,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":189,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":190,"author":{"gitId":"biinnnggggg"},"content":" private boolean check(TokenType type) {","lastModifiedDate":"2024-01-26"},{"lineNumber":191,"author":{"gitId":"biinnnggggg"},"content":" return peekToken().getType() \u003d\u003d type;","lastModifiedDate":"2024-01-26"},{"lineNumber":192,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":193,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":194,"author":{"gitId":"biinnnggggg"},"content":" private Token advance() {","lastModifiedDate":"2024-01-26"},{"lineNumber":195,"author":{"gitId":"biinnnggggg"},"content":" if (!isAtEnd()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":196,"author":{"gitId":"biinnnggggg"},"content":" current++;","lastModifiedDate":"2024-01-26"},{"lineNumber":197,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":198,"author":{"gitId":"biinnnggggg"},"content":" return previousToken();","lastModifiedDate":"2024-01-26"},{"lineNumber":199,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":200,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":201,"author":{"gitId":"biinnnggggg"},"content":" private Token previousToken() {","lastModifiedDate":"2024-01-26"},{"lineNumber":202,"author":{"gitId":"biinnnggggg"},"content":" return tokens.get(current - 1);","lastModifiedDate":"2024-01-26"},{"lineNumber":203,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":204,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":205,"author":{"gitId":"biinnnggggg"},"content":" private boolean isAtEnd() {","lastModifiedDate":"2024-01-26"},{"lineNumber":206,"author":{"gitId":"biinnnggggg"},"content":" return peekToken().getType() \u003d\u003d TokenType.EOC;","lastModifiedDate":"2024-01-26"},{"lineNumber":207,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":208,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":209,"author":{"gitId":"biinnnggggg"},"content":" private Token peekToken() {","lastModifiedDate":"2024-01-26"},{"lineNumber":210,"author":{"gitId":"biinnnggggg"},"content":" return tokens.get(current);","lastModifiedDate":"2024-01-26"},{"lineNumber":211,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":212,"author":{"gitId":"biinnnggggg"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"biinnnggggg":212}},{"path":"src/main/java/mike/CommandScanner.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"biinnnggggg"},"content":"package mike;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"biinnnggggg"},"content":"import java.util.Map;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"biinnnggggg"},"content":"import java.util.HashMap;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"biinnnggggg"},"content":"import java.util.List;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"biinnnggggg"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"biinnnggggg"},"content":"class CommandScanner {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"biinnnggggg"},"content":" private static final Map\u003cString, TokenType\u003e commands;","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"biinnnggggg"},"content":" static {","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"biinnnggggg"},"content":" commands \u003d new HashMap\u003cString, TokenType\u003e(0);","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"biinnnggggg"},"content":" commands.put(\"bye\", TokenType.EXIT);","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"biinnnggggg"},"content":" commands.put(\"list\", TokenType.LIST);","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"biinnnggggg"},"content":" commands.put(\"mark\", TokenType.MARK);","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"biinnnggggg"},"content":" commands.put(\"unmark\", TokenType.UNMARK);","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"biinnnggggg"},"content":" commands.put(\"todo\", TokenType.TODO);","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"biinnnggggg"},"content":" commands.put(\"deadline\", TokenType.DEADLINE);","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"biinnnggggg"},"content":" commands.put(\"event\", TokenType.EVENT);","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"biinnnggggg"},"content":" commands.put(\"delete\", TokenType.DELETE);","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"biinnnggggg"},"content":" private final String source;","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"biinnnggggg"},"content":" private final List\u003cToken\u003e tokens;","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"biinnnggggg"},"content":" private int start;","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"biinnnggggg"},"content":" private int current;","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"biinnnggggg"},"content":" CommandScanner(String source) {","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"biinnnggggg"},"content":" this.source \u003d source;","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"biinnnggggg"},"content":" this.tokens \u003d new ArrayList\u003cToken\u003e();","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"biinnnggggg"},"content":" this.start \u003d 0;","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"biinnnggggg"},"content":" this.current \u003d 0;","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"biinnnggggg"},"content":" public List\u003cToken\u003e scanTokens() {","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"biinnnggggg"},"content":" // command token","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"biinnnggggg"},"content":" scanStartToken();","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"biinnnggggg"},"content":" // argument tokens","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"biinnnggggg"},"content":" while (!isAtEnd()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"biinnnggggg"},"content":" start \u003d current;","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"biinnnggggg"},"content":" scanToken();","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"biinnnggggg"},"content":" scanEndToken();","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"biinnnggggg"},"content":" return tokens;","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":48,"author":{"gitId":"biinnnggggg"},"content":" private void scanEndToken() {","lastModifiedDate":"2024-01-26"},{"lineNumber":49,"author":{"gitId":"biinnnggggg"},"content":" tokens.add(new Token(TokenType.EOC, \"\"));","lastModifiedDate":"2024-01-26"},{"lineNumber":50,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":51,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":52,"author":{"gitId":"biinnnggggg"},"content":" private void scanToken() {","lastModifiedDate":"2024-01-26"},{"lineNumber":53,"author":{"gitId":"biinnnggggg"},"content":" char c \u003d advance();","lastModifiedDate":"2024-01-26"},{"lineNumber":54,"author":{"gitId":"biinnnggggg"},"content":" switch (c) {","lastModifiedDate":"2024-01-26"},{"lineNumber":55,"author":{"gitId":"biinnnggggg"},"content":" case \u0027/\u0027:","lastModifiedDate":"2024-01-26"},{"lineNumber":56,"author":{"gitId":"biinnnggggg"},"content":" prefix();","lastModifiedDate":"2024-01-26"},{"lineNumber":57,"author":{"gitId":"biinnnggggg"},"content":" parameter();","lastModifiedDate":"2024-01-26"},{"lineNumber":58,"author":{"gitId":"biinnnggggg"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":59,"author":{"gitId":"biinnnggggg"},"content":" case \u0027 \u0027:","lastModifiedDate":"2024-01-26"},{"lineNumber":60,"author":{"gitId":"biinnnggggg"},"content":" case \u0027\\r\u0027:","lastModifiedDate":"2024-01-26"},{"lineNumber":61,"author":{"gitId":"biinnnggggg"},"content":" case \u0027\\t\u0027:","lastModifiedDate":"2024-01-26"},{"lineNumber":62,"author":{"gitId":"biinnnggggg"},"content":" // ignore whitespace","lastModifiedDate":"2024-01-26"},{"lineNumber":63,"author":{"gitId":"biinnnggggg"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":64,"author":{"gitId":"biinnnggggg"},"content":" default:","lastModifiedDate":"2024-01-26"},{"lineNumber":65,"author":{"gitId":"biinnnggggg"},"content":" literal();","lastModifiedDate":"2024-01-26"},{"lineNumber":66,"author":{"gitId":"biinnnggggg"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":67,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":68,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":69,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":70,"author":{"gitId":"biinnnggggg"},"content":" private void literal() {","lastModifiedDate":"2024-01-26"},{"lineNumber":71,"author":{"gitId":"biinnnggggg"},"content":" while (peek() !\u003d \u0027/\u0027 \u0026\u0026 !isAtEnd()) advance();","lastModifiedDate":"2024-01-26"},{"lineNumber":72,"author":{"gitId":"biinnnggggg"},"content":" addToken(TokenType.LITERAL);","lastModifiedDate":"2024-01-26"},{"lineNumber":73,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":74,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":75,"author":{"gitId":"biinnnggggg"},"content":" private void parameter() {","lastModifiedDate":"2024-01-26"},{"lineNumber":76,"author":{"gitId":"biinnnggggg"},"content":" start \u003d current;","lastModifiedDate":"2024-01-26"},{"lineNumber":77,"author":{"gitId":"biinnnggggg"},"content":" while (!isWhiteSpace(peek()) \u0026\u0026 !isAtEnd()) advance();","lastModifiedDate":"2024-01-26"},{"lineNumber":78,"author":{"gitId":"biinnnggggg"},"content":" addToken(TokenType.PARAM);","lastModifiedDate":"2024-01-26"},{"lineNumber":79,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":80,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":81,"author":{"gitId":"biinnnggggg"},"content":" private void prefix() {","lastModifiedDate":"2024-01-26"},{"lineNumber":82,"author":{"gitId":"biinnnggggg"},"content":" addToken(TokenType.FORWARD_DASH);","lastModifiedDate":"2024-01-26"},{"lineNumber":83,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":84,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":85,"author":{"gitId":"biinnnggggg"},"content":" private void scanStartToken() {","lastModifiedDate":"2024-01-26"},{"lineNumber":86,"author":{"gitId":"biinnnggggg"},"content":" while (!isWhiteSpace(peek()) \u0026\u0026 !isAtEnd()) advance();","lastModifiedDate":"2024-01-26"},{"lineNumber":87,"author":{"gitId":"biinnnggggg"},"content":" String text \u003d source.substring(start, current);","lastModifiedDate":"2024-01-26"},{"lineNumber":88,"author":{"gitId":"biinnnggggg"},"content":" TokenType type \u003d commands.get(text);","lastModifiedDate":"2024-01-26"},{"lineNumber":89,"author":{"gitId":"biinnnggggg"},"content":" if (type \u003d\u003d null) type \u003d TokenType.LITERAL;","lastModifiedDate":"2024-01-26"},{"lineNumber":90,"author":{"gitId":"biinnnggggg"},"content":" // flag that LITERAL is not recognised command when parsing","lastModifiedDate":"2024-01-26"},{"lineNumber":91,"author":{"gitId":"biinnnggggg"},"content":" addToken(type);","lastModifiedDate":"2024-01-26"},{"lineNumber":92,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":93,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":94,"author":{"gitId":"biinnnggggg"},"content":" private void addToken(TokenType type) {","lastModifiedDate":"2024-01-26"},{"lineNumber":95,"author":{"gitId":"biinnnggggg"},"content":" String text \u003d source.substring(start, current);","lastModifiedDate":"2024-01-26"},{"lineNumber":96,"author":{"gitId":"biinnnggggg"},"content":" Token newToken \u003d new Token(type, text);","lastModifiedDate":"2024-01-26"},{"lineNumber":97,"author":{"gitId":"biinnnggggg"},"content":" tokens.add(newToken);","lastModifiedDate":"2024-01-26"},{"lineNumber":98,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":99,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":100,"author":{"gitId":"biinnnggggg"},"content":" private char peek() {","lastModifiedDate":"2024-01-26"},{"lineNumber":101,"author":{"gitId":"biinnnggggg"},"content":" if (isAtEnd()) return \u0027\\0\u0027;","lastModifiedDate":"2024-01-26"},{"lineNumber":102,"author":{"gitId":"biinnnggggg"},"content":" return source.charAt(current);","lastModifiedDate":"2024-01-26"},{"lineNumber":103,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":104,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":105,"author":{"gitId":"biinnnggggg"},"content":" private boolean isWhiteSpace(char c) {","lastModifiedDate":"2024-01-26"},{"lineNumber":106,"author":{"gitId":"biinnnggggg"},"content":" return c \u003d\u003d \u0027 \u0027 || c \u003d\u003d \u0027\\t\u0027 || c \u003d\u003d \u0027\\r\u0027;","lastModifiedDate":"2024-01-26"},{"lineNumber":107,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":108,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":109,"author":{"gitId":"biinnnggggg"},"content":" private char advance() {","lastModifiedDate":"2024-01-26"},{"lineNumber":110,"author":{"gitId":"biinnnggggg"},"content":" return source.charAt(current++);","lastModifiedDate":"2024-01-26"},{"lineNumber":111,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":112,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":113,"author":{"gitId":"biinnnggggg"},"content":" private boolean isAtEnd() {","lastModifiedDate":"2024-01-26"},{"lineNumber":114,"author":{"gitId":"biinnnggggg"},"content":" return current \u003e\u003d source.length();","lastModifiedDate":"2024-01-26"},{"lineNumber":115,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":116,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":117,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":118,"author":{"gitId":"biinnnggggg"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"biinnnggggg":118}},{"path":"src/main/java/mike/Mike.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"biinnnggggg"},"content":"package mike;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"biinnnggggg"},"content":"import mike.command.Command;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"biinnnggggg"},"content":"import java.util.List;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"biinnnggggg"},"content":"/*","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"biinnnggggg"},"content":"TODO:","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"biinnnggggg"},"content":" 1. Write comments to document code","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"biinnnggggg"},"content":" 2. Write the README.md","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"biinnnggggg"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"biinnnggggg"},"content":"public class Mike {","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"biinnnggggg"},"content":" private static final String FILE_PATH \u003d \"./data/mike.txt\";","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"biinnnggggg"},"content":" private final TaskList taskList;","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"biinnnggggg"},"content":" private final Ui ui;","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"biinnnggggg"},"content":" private final Storage storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"biinnnggggg"},"content":" Mike() {","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"biinnnggggg"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"biinnnggggg"},"content":" this.storage \u003d new Storage(FILE_PATH);","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"biinnnggggg"},"content":" this.taskList \u003d storage.load();","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"biinnnggggg"},"content":" public void run() {","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"biinnnggggg"},"content":" ui.displayWelcome();","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"biinnnggggg"},"content":" boolean exitSeen \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"biinnnggggg"},"content":" while (!exitSeen) {","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"biinnnggggg"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"biinnnggggg"},"content":" String userInput \u003d ui.scanInput();","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"biinnnggggg"},"content":" Ui.displayLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"biinnnggggg"},"content":" List\u003cToken\u003e tokens \u003d new CommandScanner(userInput).scanTokens();","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"biinnnggggg"},"content":" Command command \u003d new CommandParser(tokens).parse();","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"biinnnggggg"},"content":" command.execute(taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"biinnnggggg"},"content":" if (command.isExit()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"biinnnggggg"},"content":" exitSeen \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"biinnnggggg"},"content":" } catch (MikeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"biinnnggggg"},"content":" Ui.displayError(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"biinnnggggg"},"content":" } finally {","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"biinnnggggg"},"content":" Ui.displayLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"biinnnggggg"},"content":" storage.writeToFile(taskList);","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"biinnnggggg"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"biinnnggggg"},"content":" * Main method that runs the program.","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"biinnnggggg"},"content":" * @param args n/a","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"biinnnggggg"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"biinnnggggg"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"biinnnggggg"},"content":" Mike mike \u003d new Mike();","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"biinnnggggg"},"content":" mike.run();","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"biinnnggggg"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"biinnnggggg":55}},{"path":"src/main/java/mike/MikeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"biinnnggggg"},"content":"package mike;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"biinnnggggg"},"content":"public class MikeException extends Exception {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"biinnnggggg"},"content":" public MikeException(String message) {","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"biinnnggggg"},"content":" super(message);","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"biinnnggggg"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"biinnnggggg":7}},{"path":"src/main/java/mike/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"biinnnggggg"},"content":"package mike;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"biinnnggggg"},"content":"import mike.task.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"biinnnggggg"},"content":"import mike.task.Event;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"biinnnggggg"},"content":"import mike.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"biinnnggggg"},"content":"import mike.task.Todo;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"biinnnggggg"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"biinnnggggg"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"biinnnggggg"},"content":"import java.io.PrintWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"biinnnggggg"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"biinnnggggg"},"content":"class Storage {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"biinnnggggg"},"content":" private final String fileDirectory;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"biinnnggggg"},"content":" private final String filePath;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"biinnnggggg"},"content":" protected File file;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"biinnnggggg"},"content":" Storage(String filePath) {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"biinnnggggg"},"content":" this.fileDirectory \u003d filePath.split(\"/\")[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"biinnnggggg"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"biinnnggggg"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"biinnnggggg"},"content":" * Return a TaskList object constructed from file data.","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"biinnnggggg"},"content":" * @return TaskList","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"biinnnggggg"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"biinnnggggg"},"content":" public TaskList load() {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"biinnnggggg"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"biinnnggggg"},"content":" if (new File(fileDirectory).mkdirs()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"biinnnggggg"},"content":" Ui.display(\"File location created at \" + filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"biinnnggggg"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"biinnnggggg"},"content":" Ui.display(\"File location already exists\");","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"biinnnggggg"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"biinnnggggg"},"content":" this.file \u003d file;","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"biinnnggggg"},"content":" if (file.createNewFile()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"biinnnggggg"},"content":" Ui.display(\"File created: \" + file.getName());","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"biinnnggggg"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"biinnnggggg"},"content":" Ui.display(\"File already exists\");","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"biinnnggggg"},"content":" Scanner fileScanner \u003d new Scanner(file);","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"biinnnggggg"},"content":" String line;","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"biinnnggggg"},"content":" Task newTask;","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"biinnnggggg"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"biinnnggggg"},"content":" while (fileScanner.hasNext()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"biinnnggggg"},"content":" line \u003d fileScanner.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"biinnnggggg"},"content":" newTask \u003d extractTask(line);","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"biinnnggggg"},"content":" taskList.add(newTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"biinnnggggg"},"content":" return taskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"biinnnggggg"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"biinnnggggg"},"content":" Ui.displayError(\"404 File not found\");","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"biinnnggggg"},"content":" return new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"biinnnggggg"},"content":" } catch (MikeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"biinnnggggg"},"content":" Ui.displayError(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"biinnnggggg"},"content":" return new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"biinnnggggg"},"content":" public void writeToFile(TaskList taskList) {","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"biinnnggggg"},"content":" try (PrintWriter out \u003d new PrintWriter(filePath)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"biinnnggggg"},"content":" for (Task task : taskList) {","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"biinnnggggg"},"content":" out.println(task.getFileEncoding());","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"biinnnggggg"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"biinnnggggg"},"content":" Ui.display(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"biinnnggggg"},"content":" private Task extractTask(String line) throws IndexOutOfBoundsException, MikeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"biinnnggggg"},"content":" String[] taskInformation \u003d line.split(\",\");","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"biinnnggggg"},"content":" String taskType \u003d taskInformation[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"biinnnggggg"},"content":" String taskDescription \u003d taskInformation[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"biinnnggggg"},"content":" boolean taskIsCompleted \u003d taskInformation[2].equals(\"true\");","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"biinnnggggg"},"content":" Task newTask;","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"biinnnggggg"},"content":" switch (taskType) {","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"biinnnggggg"},"content":" case \"Todo\":","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"biinnnggggg"},"content":" newTask \u003d new Todo(taskDescription);","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"biinnnggggg"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"biinnnggggg"},"content":" case \"Deadline\": // format: taskType,taskDescription,taskDone,deadline","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"biinnnggggg"},"content":" String deadline \u003d taskInformation[3];","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"biinnnggggg"},"content":" newTask \u003d new Deadline(taskDescription, deadline);","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"biinnnggggg"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"biinnnggggg"},"content":" case \"Event\": // format: taskType,taskDescription,taskDone,startDate,endDate","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"biinnnggggg"},"content":" String startDate \u003d taskInformation[3];","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"biinnnggggg"},"content":" String endDate \u003d taskInformation[4];","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"biinnnggggg"},"content":" newTask \u003d new Event(taskDescription, startDate, endDate);","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"biinnnggggg"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"biinnnggggg"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"biinnnggggg"},"content":" throw new MikeException(\"File corrupted. Unable to load saved data.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"biinnnggggg"},"content":" if (taskIsCompleted) {","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"biinnnggggg"},"content":" newTask.markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"biinnnggggg"},"content":" return newTask;","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"biinnnggggg"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"biinnnggggg":106}},{"path":"src/main/java/mike/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"biinnnggggg"},"content":"package mike;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"biinnnggggg"},"content":"import mike.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"biinnnggggg"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"biinnnggggg"},"content":"import java.util.stream.IntStream;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"biinnnggggg"},"content":"public class TaskList extends ArrayList\u003cTask\u003e {","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"biinnnggggg"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"biinnnggggg"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"biinnnggggg"},"content":" return String.join(\"\\n\", IntStream.range(0, this.size())","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"biinnnggggg"},"content":" .boxed()","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"biinnnggggg"},"content":" .map(i -\u003e {","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"biinnnggggg"},"content":" Task task \u003d this.get(i);","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"biinnnggggg"},"content":" int index \u003d i + 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"biinnnggggg"},"content":" return String.format(\"%d.%s\", index, task.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"biinnnggggg"},"content":" })","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"biinnnggggg"},"content":" .toArray(String[]::new)","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"biinnnggggg"},"content":" );","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"biinnnggggg"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"biinnnggggg":22}},{"path":"src/main/java/mike/Token.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"biinnnggggg"},"content":"package mike;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"biinnnggggg"},"content":"class Token {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"biinnnggggg"},"content":" final TokenType type;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"biinnnggggg"},"content":" final String text;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"biinnnggggg"},"content":" Token(TokenType type, String text) {","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"biinnnggggg"},"content":" this.type \u003d type;","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"biinnnggggg"},"content":" this.text \u003d text;","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"biinnnggggg"},"content":" public TokenType getType() {","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"biinnnggggg"},"content":" return type;","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"biinnnggggg"},"content":" public String getText() {","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"biinnnggggg"},"content":" return text;","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"biinnnggggg"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"biinnnggggg"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"biinnnggggg"},"content":" return type + \" \" + text;","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"biinnnggggg"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"biinnnggggg":24}},{"path":"src/main/java/mike/TokenType.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"biinnnggggg"},"content":"package mike;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"biinnnggggg"},"content":"enum TokenType {","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"biinnnggggg"},"content":" // Command tokens","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"biinnnggggg"},"content":" EXIT, LIST, MARK, UNMARK, TODO, DEADLINE, EVENT, DELETE,","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"biinnnggggg"},"content":" // prefix character tokens","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"biinnnggggg"},"content":" FORWARD_DASH,","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"biinnnggggg"},"content":" // parameter tokens","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"biinnnggggg"},"content":" PARAM,","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"biinnnggggg"},"content":" // argument tokens","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"biinnnggggg"},"content":" LITERAL,","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"biinnnggggg"},"content":" // end of command","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"biinnnggggg"},"content":" EOC","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"biinnnggggg"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"biinnnggggg":18}},{"path":"src/main/java/mike/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"biinnnggggg"},"content":"package mike;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"biinnnggggg"},"content":"import java.util.NoSuchElementException;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"biinnnggggg"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"biinnnggggg"},"content":"public class Ui {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"biinnnggggg"},"content":" private final Scanner scanner;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"biinnnggggg"},"content":" Ui() {","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"biinnnggggg"},"content":" scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"biinnnggggg"},"content":" public String scanInput() throws MikeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"biinnnggggg"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"biinnnggggg"},"content":" return scanner.nextLine().strip();","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"biinnnggggg"},"content":" } catch (NoSuchElementException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"biinnnggggg"},"content":" throw new MikeException(\"That is the weirdest thing you\u0027ve ever said.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"biinnnggggg"},"content":" public static void display(Object object) {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"biinnnggggg"},"content":" System.out.println(object);","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"biinnnggggg"},"content":" public static void displayError(String errorMessage) {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"biinnnggggg"},"content":" display(errorMessage);","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"biinnnggggg"},"content":" public void displayWelcome() {","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"biinnnggggg"},"content":" displayLogo();","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"biinnnggggg"},"content":" displayGreeting();","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"biinnnggggg"},"content":" displayLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"biinnnggggg"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"biinnnggggg"},"content":" * Displays a farewell message with Wazowski pizazz.","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"biinnnggggg"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"biinnnggggg"},"content":" public static void farewell() {","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"biinnnggggg"},"content":" String farewell \u003d","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"biinnnggggg"},"content":" \" Where are you going? We\u0027ll talk.\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"biinnnggggg"},"content":" \" We\u0027ll have a latte.\";","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"biinnnggggg"},"content":" display(farewell);","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"biinnnggggg"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"biinnnggggg"},"content":" * Prints the Wazowski logo as ASCII art.","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"biinnnggggg"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"biinnnggggg"},"content":" private void displayLogo() {","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"biinnnggggg"},"content":" String logo \u003d","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"biinnnggggg"},"content":" \" .\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"biinnnggggg"},"content":" \" \u0026# #*\u0026/,,(@%*. (#\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"biinnnggggg"},"content":" \" %#((,. #%,*,\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"biinnnggggg"},"content":" \" %%%(/,.. *( /,.**\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"biinnnggggg"},"content":" \" .%%%%#/**,%(@@\u0026@ /.,,/\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"biinnnggggg"},"content":" \" %%%%#(((/*(#*(%\u0026 ..,,,*(\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"biinnnggggg"},"content":" \" *#%%%##(/,#(/**,,...,...,,,**/\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"biinnnggggg"},"content":" \" .#%%%%%##(((//#(//*......,,,**//\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"biinnnggggg"},"content":" \" \u0026#%%%%%%###(///*,,..,,,,,,,***/#*\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"biinnnggggg"},"content":" \" \u0026#%%%%%%#####@@@@@@(,,**,****/(#*\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"biinnnggggg"},"content":" \" *\u0026%#%%\u0026\u0026\u0026%%%@@@@@@@@@@\u0026**/////(.\u0026/*\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"biinnnggggg"},"content":" \" #\u0026, #%\u0026\u0026\u0026\u0026\u0026\u0026%(((/*****((((((##. #(\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"biinnnggggg"},"content":" \" ## #\u0026\u0026\u0026\u0026\u0026\u0026\u0026\u0026\u0026\u0026%%%%%%###%%( (*\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"biinnnggggg"},"content":" \" .#/ /%%%%%%%%%%%%%%%%# //\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"biinnnggggg"},"content":" \" #( /## *#, (/\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"biinnnggggg"},"content":" \" %* /#( #, //\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"biinnnggggg"},"content":" \" %(/. %( .%\u0026 //*/\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"biinnnggggg"},"content":" \" %/,\u0026, \u0026( #%/ (#//,\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"biinnnggggg"},"content":" \" /(* ##* #% \u0026*#%\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"biinnnggggg"},"content":" \" @/@* (#*. #(. /%%\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"biinnnggggg"},"content":" \" (/(/##(...........##(//\u0026#(\u0026/.\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":68,"author":{"gitId":"biinnnggggg"},"content":" \" (@%(\u0026@@,#,..........,*@@\u0026\u0026@\u0026*,\\n\";","lastModifiedDate":"2024-01-25"},{"lineNumber":69,"author":{"gitId":"biinnnggggg"},"content":" display(logo);","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"biinnnggggg"},"content":" private void displayGreeting() {","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"biinnnggggg"},"content":" String greeting \u003d","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"biinnnggggg"},"content":" \" Hello! I\u0027m mike WAZOWSKI.\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"biinnnggggg"},"content":" \" What can I do for you?\";","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"biinnnggggg"},"content":" display(greeting);","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":79,"author":{"gitId":"biinnnggggg"},"content":" public static void displayLine() {","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"biinnnggggg"},"content":" String horizontalLine \u003d \"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\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-26"},{"lineNumber":81,"author":{"gitId":"biinnnggggg"},"content":" display(horizontalLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":82,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":83,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":84,"author":{"gitId":"biinnnggggg"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"biinnnggggg":84}},{"path":"src/main/java/mike/command/AddCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"biinnnggggg"},"content":"package mike.command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"biinnnggggg"},"content":"import mike.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"biinnnggggg"},"content":"import mike.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"biinnnggggg"},"content":"import mike.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"biinnnggggg"},"content":"abstract class AddCommand extends Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"biinnnggggg"},"content":" protected final String description;","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"biinnnggggg"},"content":" public AddCommand(String description) {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"biinnnggggg"},"content":" super(\"\");","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"biinnnggggg"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"biinnnggggg"},"content":" protected void respond(TaskList taskList, Task newTask) {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"biinnnggggg"},"content":" String message \u003d","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"biinnnggggg"},"content":" \"Got it, I\u0027ve added this task:\\n \"","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"biinnnggggg"},"content":" + newTask + \"\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"biinnnggggg"},"content":" + \"Now you have \" + taskList.size() + \" tasks in the list.\";","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"biinnnggggg"},"content":" Ui.display(message);","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"biinnnggggg"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"biinnnggggg":21}},{"path":"src/main/java/mike/command/AddDeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"biinnnggggg"},"content":"package mike.command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"biinnnggggg"},"content":"import mike.MikeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"biinnnggggg"},"content":"import mike.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"biinnnggggg"},"content":"import mike.task.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"biinnnggggg"},"content":"import mike.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"biinnnggggg"},"content":"public class AddDeadlineCommand extends AddCommand {","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"biinnnggggg"},"content":" private final String deadline;","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"biinnnggggg"},"content":" public AddDeadlineCommand(String description, String deadline) {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"biinnnggggg"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"biinnnggggg"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"biinnnggggg"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"biinnnggggg"},"content":" public void execute(TaskList taskList) throws MikeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"biinnnggggg"},"content":" Task newTask \u003d new Deadline(description, deadline);","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"biinnnggggg"},"content":" taskList.add(newTask);","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"biinnnggggg"},"content":" respond(taskList, newTask);","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"biinnnggggg"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"biinnnggggg"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"biinnnggggg"},"content":" return false;","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"biinnnggggg"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"biinnnggggg":27}},{"path":"src/main/java/mike/command/AddEventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"biinnnggggg"},"content":"package mike.command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"biinnnggggg"},"content":"import mike.MikeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"biinnnggggg"},"content":"import mike.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"biinnnggggg"},"content":"import mike.task.Event;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"biinnnggggg"},"content":"import mike.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"biinnnggggg"},"content":"public class AddEventCommand extends AddCommand {","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"biinnnggggg"},"content":" private final String startDate;","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"biinnnggggg"},"content":" private final String endDate;","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"biinnnggggg"},"content":" public AddEventCommand(String description, String startDate, String endDate) {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"biinnnggggg"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"biinnnggggg"},"content":" this.startDate \u003d startDate;","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"biinnnggggg"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"biinnnggggg"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"biinnnggggg"},"content":" public void execute(TaskList taskList) throws MikeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"biinnnggggg"},"content":" Task newTask \u003d new Event(description, startDate, endDate);","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"biinnnggggg"},"content":" taskList.add(newTask);","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"biinnnggggg"},"content":" respond(taskList, newTask);","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"biinnnggggg"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"biinnnggggg"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"biinnnggggg"},"content":" return false;","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"biinnnggggg"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"biinnnggggg":29}},{"path":"src/main/java/mike/command/AddTodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"biinnnggggg"},"content":"package mike.command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"biinnnggggg"},"content":"import mike.MikeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"biinnnggggg"},"content":"import mike.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"biinnnggggg"},"content":"import mike.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"biinnnggggg"},"content":"import mike.task.Todo;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"biinnnggggg"},"content":"public class AddTodoCommand extends AddCommand {","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"biinnnggggg"},"content":" public AddTodoCommand(String description) {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"biinnnggggg"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"biinnnggggg"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"biinnnggggg"},"content":" public void execute(TaskList taskList) throws MikeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"biinnnggggg"},"content":" Task newTask \u003d new Todo(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"biinnnggggg"},"content":" taskList.add(newTask);","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"biinnnggggg"},"content":" respond(taskList, newTask);","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"biinnnggggg"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"biinnnggggg"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"biinnnggggg"},"content":" return false;","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"biinnnggggg"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"biinnnggggg":25}},{"path":"src/main/java/mike/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"biinnnggggg"},"content":"package mike.command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"biinnnggggg"},"content":"import mike.MikeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"biinnnggggg"},"content":"import mike.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"biinnnggggg"},"content":"public abstract class Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"biinnnggggg"},"content":" String text;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"biinnnggggg"},"content":" public Command(String text) {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"biinnnggggg"},"content":" this.text \u003d text;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"biinnnggggg"},"content":" public abstract void execute(TaskList taskList) throws MikeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"biinnnggggg"},"content":" public abstract boolean isExit();","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"biinnnggggg"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"biinnnggggg"},"content":" public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"biinnnggggg"},"content":" return \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"biinnnggggg"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"biinnnggggg":22}},{"path":"src/main/java/mike/command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"biinnnggggg"},"content":"package mike.command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"biinnnggggg"},"content":"import mike.MikeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"biinnnggggg"},"content":"import mike.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"biinnnggggg"},"content":"import mike.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"biinnnggggg"},"content":"import mike.command.Command;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"biinnnggggg"},"content":"import mike.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"biinnnggggg"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"biinnnggggg"},"content":" private final int taskNumber;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"biinnnggggg"},"content":" public DeleteCommand(int taskNumber) {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"biinnnggggg"},"content":" super(\"\");","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"biinnnggggg"},"content":" this.taskNumber \u003d taskNumber;","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"biinnnggggg"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"biinnnggggg"},"content":" public void execute(TaskList taskList) throws MikeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"biinnnggggg"},"content":" int taskIndex \u003d taskNumber - 1;","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"biinnnggggg"},"content":" if (taskList.isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"biinnnggggg"},"content":" throw new MikeException(\"There are no tasks to remove.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"biinnnggggg"},"content":" } else if (taskIndex \u003e\u003d taskList.size() || taskIndex \u003c 0) {","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"biinnnggggg"},"content":" throw new MikeException(\"That task doesn\u0027t exist. Please enter a number in the range 1-\" + taskList.size() + \".\");","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"biinnnggggg"},"content":" Task task \u003d taskList.get(taskIndex);","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"biinnnggggg"},"content":" taskList.remove(taskIndex);","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"biinnnggggg"},"content":" String message \u003d","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"biinnnggggg"},"content":" \"Noted! I\u0027ve removed this task:\\n \" +","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"biinnnggggg"},"content":" task + \"\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"biinnnggggg"},"content":" + \"Now you have \" + taskList.size() + \" tasks in the list.\";","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"biinnnggggg"},"content":" Ui.display(message);","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"biinnnggggg"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"biinnnggggg"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"biinnnggggg"},"content":" return false;","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"biinnnggggg"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"biinnnggggg":38}},{"path":"src/main/java/mike/command/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"biinnnggggg"},"content":"package mike.command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"biinnnggggg"},"content":"import mike.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"biinnnggggg"},"content":"import mike.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"biinnnggggg"},"content":"import mike.command.Command;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"biinnnggggg"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"biinnnggggg"},"content":" public ExitCommand() {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"biinnnggggg"},"content":" super(\"\");","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"biinnnggggg"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"biinnnggggg"},"content":" public void execute(TaskList taskList) {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"biinnnggggg"},"content":" Ui.farewell();","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"biinnnggggg"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"biinnnggggg"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"biinnnggggg"},"content":" return true;","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"biinnnggggg"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"biinnnggggg":22}},{"path":"src/main/java/mike/command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"biinnnggggg"},"content":"package mike.command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"biinnnggggg"},"content":"import mike.MikeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"biinnnggggg"},"content":"import mike.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"biinnnggggg"},"content":"import mike.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"biinnnggggg"},"content":"import mike.command.Command;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"biinnnggggg"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"biinnnggggg"},"content":" public ListCommand() {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"biinnnggggg"},"content":" super(\"\" );","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"biinnnggggg"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"biinnnggggg"},"content":" public void execute(TaskList taskList) throws MikeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"biinnnggggg"},"content":" if (taskList.isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"biinnnggggg"},"content":" throw new MikeException(\"You have no more tasks Sulley...\");","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"biinnnggggg"},"content":" Ui.display(\"You and I are a team.\\nHere is the task list:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"biinnnggggg"},"content":" Ui.display(taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"biinnnggggg"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"biinnnggggg"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"biinnnggggg"},"content":" return false;","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"biinnnggggg"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"biinnnggggg":26}},{"path":"src/main/java/mike/command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"biinnnggggg"},"content":"package mike.command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"biinnnggggg"},"content":"import mike.MikeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"biinnnggggg"},"content":"import mike.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"biinnnggggg"},"content":"import mike.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"biinnnggggg"},"content":"import mike.command.Command;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"biinnnggggg"},"content":"import mike.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"biinnnggggg"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"biinnnggggg"},"content":" private final int taskNumber;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"biinnnggggg"},"content":" public MarkCommand(int taskNumber) {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"biinnnggggg"},"content":" super(\"\");","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"biinnnggggg"},"content":" this.taskNumber \u003d taskNumber;","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"biinnnggggg"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"biinnnggggg"},"content":" public void execute(TaskList taskList) throws MikeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"biinnnggggg"},"content":" int taskIndex \u003d taskNumber - 1;","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"biinnnggggg"},"content":" if (taskList.isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"biinnnggggg"},"content":" throw new MikeException(\"There are no tasks to mark. Please add a task first.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"biinnnggggg"},"content":" } else if (taskIndex \u003e\u003d taskList.size() || taskIndex \u003c 0) {","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"biinnnggggg"},"content":" throw new MikeException(\"That\u0027s suspicious. Please enter a number in the range 1-\" + taskList.size() + \".\");","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"biinnnggggg"},"content":" Task task \u003d taskList.get(taskIndex);","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"biinnnggggg"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"biinnnggggg"},"content":" String message \u003d \"Nice! I\u0027ve marked this task as done:\\n \" + task;","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"biinnnggggg"},"content":" Ui.display(message);","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"biinnnggggg"},"content":" /*","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"biinnnggggg"},"content":" TODO:","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"biinnnggggg"},"content":" 1. Check that task is or is not done.","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"biinnnggggg"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"biinnnggggg"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"biinnnggggg"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"biinnnggggg"},"content":" return false;","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"biinnnggggg"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"biinnnggggg":39}},{"path":"src/main/java/mike/command/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"biinnnggggg"},"content":"package mike.command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"biinnnggggg"},"content":"import mike.MikeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"biinnnggggg"},"content":"import mike.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"biinnnggggg"},"content":"import mike.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"biinnnggggg"},"content":"import mike.command.Command;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"biinnnggggg"},"content":"import mike.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"biinnnggggg"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"biinnnggggg"},"content":" private final int taskNumber;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"biinnnggggg"},"content":" public UnmarkCommand(int taskNumber) {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"biinnnggggg"},"content":" super(\"\");","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"biinnnggggg"},"content":" this.taskNumber \u003d taskNumber;","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"biinnnggggg"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"biinnnggggg"},"content":" public void execute(TaskList taskList) throws MikeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"biinnnggggg"},"content":" int taskIndex \u003d taskNumber - 1;","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"biinnnggggg"},"content":" if (taskList.isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"biinnnggggg"},"content":" throw new MikeException(\"There are no tasks to mark. Please add a task first.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"biinnnggggg"},"content":" } else if (taskIndex \u003e\u003d taskList.size() || taskIndex \u003c 0) {","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"biinnnggggg"},"content":" throw new MikeException(\"That\u0027s suspicious. Please enter a number in the range 1-\" + taskList.size() + \".\");","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"biinnnggggg"},"content":" Task task \u003d taskList.get(taskIndex);","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"biinnnggggg"},"content":" task.markAsNotDone();","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"biinnnggggg"},"content":" String message \u003d \"I\u0027ve marked this task as not done:\\n \" + task;","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"biinnnggggg"},"content":" Ui.display(message);","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"biinnnggggg"},"content":" /*","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"biinnnggggg"},"content":" TODO:","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"biinnnggggg"},"content":" 1. Check that task is or is not done.","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"biinnnggggg"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"biinnnggggg"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"biinnnggggg"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"biinnnggggg"},"content":" return false;","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"biinnnggggg"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"biinnnggggg":39}},{"path":"src/main/java/mike/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"biinnnggggg"},"content":"package mike.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"biinnnggggg"},"content":"import mike.MikeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"biinnnggggg"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"biinnnggggg"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"biinnnggggg"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"biinnnggggg"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"biinnnggggg"},"content":" private static final String TYPE \u003d \"Deadline\";","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"biinnnggggg"},"content":" protected LocalDate deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"biinnnggggg"},"content":" public Deadline(String description, String deadline) throws MikeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"biinnnggggg"},"content":" super(description, TYPE);","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"biinnnggggg"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"biinnnggggg"},"content":" this.deadline \u003d LocalDate.parse(deadline);","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"biinnnggggg"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"biinnnggggg"},"content":" throw new MikeException(\"Please enter a valid date \" + e.getParsedString());","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"biinnnggggg"},"content":" private String getDeadline() {","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"biinnnggggg"},"content":" return deadline.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"biinnnggggg"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"biinnnggggg"},"content":" public String getFileEncoding() {","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"biinnnggggg"},"content":" return super.getFileEncoding() + \",\" + deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"biinnnggggg"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"biinnnggggg"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"biinnnggggg"},"content":" return \"[D]\" + super.toString() + \" (by: \" + getDeadline() + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"biinnnggggg"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"biinnnggggg":35}},{"path":"src/main/java/mike/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"biinnnggggg"},"content":"package mike.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"biinnnggggg"},"content":"import mike.MikeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"biinnnggggg"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"biinnnggggg"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"biinnnggggg"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"biinnnggggg"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"biinnnggggg"},"content":" private static final String TYPE \u003d \"Event\";","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"biinnnggggg"},"content":" protected LocalDate startDate;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"biinnnggggg"},"content":" protected LocalDate endDate;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"biinnnggggg"},"content":" public Event(String description, String startDate, String endDate) throws MikeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"biinnnggggg"},"content":" super(description, TYPE);","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"biinnnggggg"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"biinnnggggg"},"content":" this.startDate \u003d LocalDate.parse(startDate);","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"biinnnggggg"},"content":" this.endDate \u003d LocalDate.parse(endDate);","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"biinnnggggg"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"biinnnggggg"},"content":" throw new MikeException(\"Please enter a valid date \" + e.getParsedString());","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"biinnnggggg"},"content":" private String getStartDate() {","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"biinnnggggg"},"content":" return startDate.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"biinnnggggg"},"content":" private String getEndDate() {","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"biinnnggggg"},"content":" return endDate.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"biinnnggggg"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"biinnnggggg"},"content":" public String getFileEncoding() {","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"biinnnggggg"},"content":" return super.getFileEncoding() + \",\" + getStartDate() + \",\" + getEndDate();","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"biinnnggggg"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"biinnnggggg"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"biinnnggggg"},"content":" return \"[E]\" + super.toString() + \" (from:\" + getStartDate() + \" to:\" + getEndDate() + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"biinnnggggg"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"biinnnggggg":41}},{"path":"src/main/java/mike/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"biinnnggggg"},"content":"package mike.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"biinnnggggg"},"content":"public class Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"biinnnggggg"},"content":" protected final String description;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"biinnnggggg"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"biinnnggggg"},"content":" protected String type;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"biinnnggggg"},"content":" public Task(String description, String type) {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"biinnnggggg"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"biinnnggggg"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"biinnnggggg"},"content":" this.type \u003d type;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"biinnnggggg"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"biinnnggggg"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"biinnnggggg"},"content":" public void markAsNotDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"biinnnggggg"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"biinnnggggg"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"biinnnggggg"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"biinnnggggg"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"biinnnggggg"},"content":" return description;","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"biinnnggggg"},"content":" public String getIsDone() {","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"biinnnggggg"},"content":" return isDone ? \"true\" : \"false\";","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"biinnnggggg"},"content":" public String getType() {","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"biinnnggggg"},"content":" return type;","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"biinnnggggg"},"content":" public String getFileEncoding() {","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"biinnnggggg"},"content":" return getType() + \",\" + getDescription() + \",\" + getIsDone();","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"biinnnggggg"},"content":" };","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"biinnnggggg"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"biinnnggggg"},"content":" return \"[\" + getStatusIcon() + \"] \" + getDescription();","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"biinnnggggg"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"biinnnggggg":45}},{"path":"src/main/java/mike/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"biinnnggggg"},"content":"package mike.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"biinnnggggg"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"biinnnggggg"},"content":" private static final String TYPE \u003d \"Todo\";","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"biinnnggggg"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"biinnnggggg"},"content":" super(description, TYPE);","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"biinnnggggg"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"biinnnggggg"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"biinnnggggg"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"biinnnggggg"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"biinnnggggg"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"biinnnggggg"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"biinnnggggg":13}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"biinnnggggg"},"content":"todo read book","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"biinnnggggg"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"biinnnggggg"},"content":"mark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"biinnnggggg"},"content":"deadline return book /by friday","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"biinnnggggg"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"biinnnggggg"},"content":"mark 2","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"biinnnggggg"},"content":"random text","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"biinnnggggg"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"biinnnggggg"},"content":"event book club /from saturday 5pm /to 7pm","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"biinnnggggg"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"biinnnggggg"},"content":"mark 4","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"biinnnggggg"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"biinnnggggg"},"content":"event /from saturday 5pm /to 7pm","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"biinnnggggg"},"content":"event book club /from saturday 5pm /from /to 7pm","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"biinnnggggg"},"content":"event book club /to saturday 5pm /from 7pm","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"biinnnggggg"},"content":"bye","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"biinnnggggg":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":"biinnnggggg"},"content":"java -classpath ..\\bin Mike \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"biinnnggggg":1,"-":20}}] diff --git a/biinnnggggg_ip_master/commits.json b/biinnnggggg_ip_master/commits.json index ef8f3ac9..b8d37285 100644 --- a/biinnnggggg_ip_master/commits.json +++ b/biinnnggggg_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"biinnnggggg":[{"date":"2024-01-24","commitResults":[{"hash":"8fe50f2e91a3739ca182e867d8f5d133f0071169","isMergeCommit":false,"messageTitle":"Chatbot renamed from \u0027Duke\u0027 to \u0027Mike Wazowski\u0027, and now greets the user.","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":10}}},{"hash":"edcbf4f2f6e043cc3f36d922771d4286cc27b6a7","isMergeCommit":false,"messageTitle":"Added echo as the default behaviour.","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":2}}},{"hash":"591a4f39239c19e6e4a9d40042a6b22790abf7cb","isMergeCommit":false,"messageTitle":"Added Task and TaskList classes, default behaviour is to add a task.","messageBody":"","tags":["Level-2","A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":61,"deletions":18}}}]},{"date":"2024-01-25","commitResults":[{"hash":"534ad17ae3ba93323050fc1dbf860b75a2453f97","isMergeCommit":false,"messageTitle":"Added support for marking tasks as completed.","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":99,"deletions":18}}},{"hash":"4060ccd50148db1ffa0bb548374e566e94a3142c","isMergeCommit":false,"messageTitle":"Added Event, Todo, and Deadline. Added some minimal error handling. Increased the parsing capability.","messageBody":"","tags":["Level-5","Level-4","A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":304,"deletions":132}}},{"hash":"dc7b02f74db7863846a3ad1833ec663501c5880a","isMergeCommit":false,"messageTitle":"1. Changed the logo of Mike to be compatible with windows-1252 encoding to be in line with the automated text ui testing. 2. Added commands to input.txt 2. Improved comprehensiveness of the input error handling. Error messages are now more helpful.","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":16,"deletions":0},"java":{"insertions":49,"deletions":25},"bat":{"insertions":2,"deletions":2}}},{"hash":"88aa2b348602969bbd5a8a59c22fcaa275910121","isMergeCommit":false,"messageTitle":"Refactored parsing code into a CommandParserClass and command execution from parsing","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":358,"deletions":184}}},{"hash":"400c21536bb01406a8868889b3cc4569fd9d0b6b","isMergeCommit":false,"messageTitle":"Added response method to AddCommand. Added support for deleting tasks from the list.","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":65,"deletions":23}}}]},{"date":"2024-01-26","commitResults":[{"hash":"8c41663de0cdb3923b1a2d58b97491a3ce163c07","isMergeCommit":false,"messageTitle":"Separated scanning from parsing. CommandScanner outputs a list of tokens that the parser parses. Enum class is used for the token types.","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":298,"deletions":123}}},{"hash":"66a3454da5d87c74b95a85b9e97d4923a5edc476","isMergeCommit":false,"messageTitle":"no message","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"0261af979d7dabcce34c489974b108faf55382dc","isMergeCommit":false,"messageTitle":"Revert \"no message\"","messageBody":"This reverts commit 66a3454da5d87c74b95a85b9e97d4923a5edc476.\n","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"1ec07a820bb418efbe4dca6124ebc213f36b442a","isMergeCommit":false,"messageTitle":"Renamed fields in Deadline and Event related classes.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":12}}},{"hash":"74176e01c535e0eec7a603627215a856a3095133","isMergeCommit":false,"messageTitle":"Added getters.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"57553dcc6b58c6f91cd2afdf62d34642f716921a","isMergeCommit":false,"messageTitle":"Refactored class vocab to be more descriptive.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":26}}},{"hash":"bf6455db0c70ee3777738641549179d8768558d8","isMergeCommit":false,"messageTitle":"Todo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"fc052abd5cf76c0bf9ce8afa3df03686254a1c3f","isMergeCommit":false,"messageTitle":"Added method header for javadocs.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":16}}}]},{"date":"2024-01-29","commitResults":[{"hash":"dd459745fb2ec75d106bcfc137f1712a9628d806","isMergeCommit":false,"messageTitle":"Format switch statement according to CS2103 iP coding standard","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":23}}},{"hash":"c741d7dd08d9111919700d7eb0825785610a99b7","isMergeCommit":false,"messageTitle":"`Add support for load and save.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":146,"deletions":23}}},{"hash":"18f6aaba386566028684f47caccf500fa646baa0","isMergeCommit":false,"messageTitle":"Refactor Ui methods to static.","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":25,"deletions":27}}},{"hash":"1a9d930d53bae584b6ac56cbad9277d50e45339c","isMergeCommit":false,"messageTitle":"Remove /data/ from repo.","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1}}},{"hash":"4aa495420b44d2872748f2ccacb114a7ace097ce","isMergeCommit":false,"messageTitle":"Add date","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":11}}}]}]},"authorFileTypeContributionMap":{"biinnnggggg":{"java":944,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":16}},"authorContributionVariance":{"biinnnggggg":143763.67},"authorDisplayNameMap":{"biinnnggggg":"CHIN..NING"}} +{"authorDailyContributionsMap":{"biinnnggggg":[{"date":"2024-01-24","commitResults":[{"hash":"8fe50f2e91a3739ca182e867d8f5d133f0071169","isMergeCommit":false,"messageTitle":"Chatbot renamed from \u0027Duke\u0027 to \u0027Mike Wazowski\u0027, and now greets the user.","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":10}}},{"hash":"edcbf4f2f6e043cc3f36d922771d4286cc27b6a7","isMergeCommit":false,"messageTitle":"Added echo as the default behaviour.","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":2}}},{"hash":"591a4f39239c19e6e4a9d40042a6b22790abf7cb","isMergeCommit":false,"messageTitle":"Added Task and TaskList classes, default behaviour is to add a task.","messageBody":"","tags":["Level-2","A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":61,"deletions":18}}}]},{"date":"2024-01-25","commitResults":[{"hash":"534ad17ae3ba93323050fc1dbf860b75a2453f97","isMergeCommit":false,"messageTitle":"Added support for marking tasks as completed.","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":99,"deletions":18}}},{"hash":"4060ccd50148db1ffa0bb548374e566e94a3142c","isMergeCommit":false,"messageTitle":"Added Event, Todo, and Deadline. Added some minimal error handling. Increased the parsing capability.","messageBody":"","tags":["Level-5","Level-4","A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":304,"deletions":132}}},{"hash":"dc7b02f74db7863846a3ad1833ec663501c5880a","isMergeCommit":false,"messageTitle":"1. Changed the logo of Mike to be compatible with windows-1252 encoding to be in line with the automated text ui testing. 2. Added commands to input.txt 2. Improved comprehensiveness of the input error handling. Error messages are now more helpful.","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":16,"deletions":0},"java":{"insertions":49,"deletions":25},"bat":{"insertions":2,"deletions":2}}},{"hash":"88aa2b348602969bbd5a8a59c22fcaa275910121","isMergeCommit":false,"messageTitle":"Refactored parsing code into a CommandParserClass and command execution from parsing","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":358,"deletions":184}}},{"hash":"400c21536bb01406a8868889b3cc4569fd9d0b6b","isMergeCommit":false,"messageTitle":"Added response method to AddCommand. Added support for deleting tasks from the list.","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":65,"deletions":23}}}]},{"date":"2024-01-26","commitResults":[{"hash":"8c41663de0cdb3923b1a2d58b97491a3ce163c07","isMergeCommit":false,"messageTitle":"Separated scanning from parsing. CommandScanner outputs a list of tokens that the parser parses. Enum class is used for the token types.","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":298,"deletions":123}}},{"hash":"66a3454da5d87c74b95a85b9e97d4923a5edc476","isMergeCommit":false,"messageTitle":"no message","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"0261af979d7dabcce34c489974b108faf55382dc","isMergeCommit":false,"messageTitle":"Revert \"no message\"","messageBody":"This reverts commit 66a3454da5d87c74b95a85b9e97d4923a5edc476.\n","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"1ec07a820bb418efbe4dca6124ebc213f36b442a","isMergeCommit":false,"messageTitle":"Renamed fields in Deadline and Event related classes.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":12}}},{"hash":"74176e01c535e0eec7a603627215a856a3095133","isMergeCommit":false,"messageTitle":"Added getters.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"57553dcc6b58c6f91cd2afdf62d34642f716921a","isMergeCommit":false,"messageTitle":"Refactored class vocab to be more descriptive.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":26}}},{"hash":"bf6455db0c70ee3777738641549179d8768558d8","isMergeCommit":false,"messageTitle":"Todo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"fc052abd5cf76c0bf9ce8afa3df03686254a1c3f","isMergeCommit":false,"messageTitle":"Added method header for javadocs.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":16}}}]},{"date":"2024-01-29","commitResults":[{"hash":"dd459745fb2ec75d106bcfc137f1712a9628d806","isMergeCommit":false,"messageTitle":"Format switch statement according to CS2103 iP coding standard","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":23}}},{"hash":"c741d7dd08d9111919700d7eb0825785610a99b7","isMergeCommit":false,"messageTitle":"`Add support for load and save.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":146,"deletions":23}}},{"hash":"18f6aaba386566028684f47caccf500fa646baa0","isMergeCommit":false,"messageTitle":"Refactor Ui methods to static.","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":25,"deletions":27}}},{"hash":"1a9d930d53bae584b6ac56cbad9277d50e45339c","isMergeCommit":false,"messageTitle":"Remove /data/ from repo.","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1}}},{"hash":"4aa495420b44d2872748f2ccacb114a7ace097ce","isMergeCommit":false,"messageTitle":"Add date","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":11}}}]},{"date":"2024-01-30","commitResults":[{"hash":"a9c84a8e74598892d60715294b6d4d2c2b8a764d","isMergeCommit":false,"messageTitle":"Refactor load save functionality in TaskList to Storage object","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":105,"deletions":96}}},{"hash":"3d7be019d47bab07dd564a0f5494f022ef11cca8","isMergeCommit":false,"messageTitle":"Refactor into mike, mike.task, and mike.command packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":177,"deletions":62}}}]}]},"authorFileTypeContributionMap":{"biinnnggggg":{"java":1068,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":16}},"authorContributionVariance":{"biinnnggggg":135837.14},"authorDisplayNameMap":{"biinnnggggg":"CHIN..NING"}} diff --git a/cheahTJ_ip_master/authorship.json b/cheahTJ_ip_master/authorship.json index 84d3ed2b..077ca77a 100644 --- a/cheahTJ_ip_master/authorship.json +++ b/cheahTJ_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cheahTJ"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"cheahTJ"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"cheahTJ"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"cheahTJ"},"content":" protected LocalDateTime by;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"cheahTJ"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"cheahTJ"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"cheahTJ"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"cheahTJ"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"cheahTJ"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"cheahTJ"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.by.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy, HHmm\")) + \")\";","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"cheahTJ"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"cheahTJ":16}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cheahTJ"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"cheahTJ"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-21"},{"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":"cheahTJ"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"cheahTJ"},"content":" String greetingMsg \u003d \"Hello! I\u0027m PingMeBot\\n\" + \"What can I do for you?\";","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"cheahTJ"},"content":" String exitMsg \u003d \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"cheahTJ"},"content":" System.out.println(greetingMsg);","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"cheahTJ"},"content":" // This is the fixed storage of all the tasks","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"cheahTJ"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"cheahTJ"},"content":" final String FILE_PATH \u003d \"./data/dukeData.txt\";","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"cheahTJ"},"content":" fileStorage fs \u003d null;","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"cheahTJ"},"content":" // Loading the data","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"cheahTJ"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"cheahTJ"},"content":" fs \u003d new fileStorage(FILE_PATH);","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"cheahTJ"},"content":" tasks \u003d fs.bootingUp();","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"cheahTJ"},"content":" } catch (myBotException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"cheahTJ"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":23,"author":{"gitId":"cheahTJ"},"content":" while (true) {","lastModifiedDate":"2024-01-21"},{"lineNumber":24,"author":{"gitId":"cheahTJ"},"content":" String userInput \u003d sc.nextLine();","lastModifiedDate":"2024-01-21"},{"lineNumber":25,"author":{"gitId":"cheahTJ"},"content":" String[] words \u003d userInput.split(\" \");","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"cheahTJ"},"content":" Parser Parser \u003d new Parser(userInput);","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"cheahTJ"},"content":" if (userInput.equals(\"bye\")) {","lastModifiedDate":"2024-01-21"},{"lineNumber":29,"author":{"gitId":"cheahTJ"},"content":" System.out.println(\"\\n\" + exitMsg);","lastModifiedDate":"2024-01-21"},{"lineNumber":30,"author":{"gitId":"cheahTJ"},"content":" break;","lastModifiedDate":"2024-01-21"},{"lineNumber":31,"author":{"gitId":"cheahTJ"},"content":" } else if (userInput.equals(\"list\")) {","lastModifiedDate":"2024-01-21"},{"lineNumber":32,"author":{"gitId":"cheahTJ"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"cheahTJ"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"cheahTJ"},"content":" if (tasks.get(i) \u003d\u003d null) {","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"cheahTJ"},"content":" break;","lastModifiedDate":"2024-01-21"},{"lineNumber":36,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":37,"author":{"gitId":"cheahTJ"},"content":" int taskNumber \u003d i + 1;","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"cheahTJ"},"content":" System.out.println(taskNumber + \".\" + tasks.get(i).toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":40,"author":{"gitId":"cheahTJ"},"content":" } else if (words[0].equals(\"mark\")) {","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"cheahTJ"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"cheahTJ"},"content":" int taskNumber \u003d Parser.markParser(tasks.size());","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"cheahTJ"},"content":" if (tasks.get(taskNumber).getStatusIcon().equals(\"X\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(\"You cannot mark task which has not been completed!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"cheahTJ"},"content":" tasks.get(taskNumber).markAsDone();","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"cheahTJ"},"content":" fs.updateFile(tasks);","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"cheahTJ"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-22"},{"lineNumber":49,"author":{"gitId":"cheahTJ"},"content":" System.out.println(\" \" + tasks.get(taskNumber).toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"cheahTJ"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"cheahTJ"},"content":" System.out.println(\"I\u0027m not sure which task you wish to mark. Please specify and try again!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":52,"author":{"gitId":"cheahTJ"},"content":" } catch (myBotException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":53,"author":{"gitId":"cheahTJ"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-23"},{"lineNumber":54,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":55,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":56,"author":{"gitId":"cheahTJ"},"content":" } else if (words[0].equals(\"unmark\")) {","lastModifiedDate":"2024-01-22"},{"lineNumber":57,"author":{"gitId":"cheahTJ"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":58,"author":{"gitId":"cheahTJ"},"content":" int taskNum \u003d Parser.unmarkParser(tasks.size());","lastModifiedDate":"2024-01-23"},{"lineNumber":59,"author":{"gitId":"cheahTJ"},"content":" // Ensuring that user can only un-mark tasks that are marked as completed","lastModifiedDate":"2024-01-23"},{"lineNumber":60,"author":{"gitId":"cheahTJ"},"content":" if (tasks.get(taskNum).getStatusIcon().equals(\" \")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":61,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(\"You cannot un-mark task which has not been marked!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":62,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":63,"author":{"gitId":"cheahTJ"},"content":" tasks.get(taskNum).uncheckingTask();","lastModifiedDate":"2024-01-23"},{"lineNumber":64,"author":{"gitId":"cheahTJ"},"content":" fs.updateFile(tasks);","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"cheahTJ"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-22"},{"lineNumber":66,"author":{"gitId":"cheahTJ"},"content":" System.out.println(\" \" + tasks.get(taskNum).toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":67,"author":{"gitId":"cheahTJ"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":68,"author":{"gitId":"cheahTJ"},"content":" System.out.println(\"I\u0027m not sure which task you wish to un-mark. Please specify and try again!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":69,"author":{"gitId":"cheahTJ"},"content":" } catch (myBotException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":70,"author":{"gitId":"cheahTJ"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-23"},{"lineNumber":71,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":72,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":73,"author":{"gitId":"cheahTJ"},"content":" } else if (words[0].equals(\"todo\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":74,"author":{"gitId":"cheahTJ"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":75,"author":{"gitId":"cheahTJ"},"content":" ToDos todo \u003d Parser.todoParser();","lastModifiedDate":"2024-01-22"},{"lineNumber":76,"author":{"gitId":"cheahTJ"},"content":" tasks.add(todo);","lastModifiedDate":"2024-01-23"},{"lineNumber":77,"author":{"gitId":"cheahTJ"},"content":" fs.updateFile(tasks);","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"cheahTJ"},"content":" System.out.println(\"\\n\" + \"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":79,"author":{"gitId":"cheahTJ"},"content":" System.out.println(\" \" + todo.toString());","lastModifiedDate":"2024-01-22"},{"lineNumber":80,"author":{"gitId":"cheahTJ"},"content":" System.out.println(\"Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":81,"author":{"gitId":"cheahTJ"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":82,"author":{"gitId":"cheahTJ"},"content":" System.out.println(\"OOPS! The command is incomplete. Please provide a task description!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":83,"author":{"gitId":"cheahTJ"},"content":" } catch (myBotException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"cheahTJ"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":86,"author":{"gitId":"cheahTJ"},"content":" } else if (words[0].equals(\"deadline\")) {","lastModifiedDate":"2024-01-22"},{"lineNumber":87,"author":{"gitId":"cheahTJ"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":88,"author":{"gitId":"cheahTJ"},"content":" Deadline deadlineTask \u003d Parser.deadlineParser();","lastModifiedDate":"2024-01-22"},{"lineNumber":89,"author":{"gitId":"cheahTJ"},"content":" tasks.add(deadlineTask);","lastModifiedDate":"2024-01-23"},{"lineNumber":90,"author":{"gitId":"cheahTJ"},"content":" fs.updateFile(tasks);","lastModifiedDate":"2024-01-28"},{"lineNumber":91,"author":{"gitId":"cheahTJ"},"content":" System.out.println(\"\\n\" + \"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":92,"author":{"gitId":"cheahTJ"},"content":" System.out.println(\" \" + deadlineTask.toString());","lastModifiedDate":"2024-01-22"},{"lineNumber":93,"author":{"gitId":"cheahTJ"},"content":" System.out.println(\"Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":94,"author":{"gitId":"cheahTJ"},"content":" } catch (myBotException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":95,"author":{"gitId":"cheahTJ"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-23"},{"lineNumber":96,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":97,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":98,"author":{"gitId":"cheahTJ"},"content":" } else if (words[0].equals(\"event\")){","lastModifiedDate":"2024-01-22"},{"lineNumber":99,"author":{"gitId":"cheahTJ"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":100,"author":{"gitId":"cheahTJ"},"content":" Events events \u003d Parser.eventsParser();","lastModifiedDate":"2024-01-22"},{"lineNumber":101,"author":{"gitId":"cheahTJ"},"content":" tasks.add(events);","lastModifiedDate":"2024-01-23"},{"lineNumber":102,"author":{"gitId":"cheahTJ"},"content":" fs.updateFile(tasks);","lastModifiedDate":"2024-01-28"},{"lineNumber":103,"author":{"gitId":"cheahTJ"},"content":" System.out.println(\"\\n\" + \"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":104,"author":{"gitId":"cheahTJ"},"content":" System.out.println(\" \" + events.toString());","lastModifiedDate":"2024-01-22"},{"lineNumber":105,"author":{"gitId":"cheahTJ"},"content":" System.out.println(\"Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":106,"author":{"gitId":"cheahTJ"},"content":" } catch (myBotException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":107,"author":{"gitId":"cheahTJ"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-23"},{"lineNumber":108,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":109,"author":{"gitId":"cheahTJ"},"content":" } else if (words[0].equals(\"delete\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":110,"author":{"gitId":"cheahTJ"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":111,"author":{"gitId":"cheahTJ"},"content":" int taskNumber \u003d Parser.deleteParser(tasks.size());","lastModifiedDate":"2024-01-23"},{"lineNumber":112,"author":{"gitId":"cheahTJ"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":113,"author":{"gitId":"cheahTJ"},"content":" System.out.println(\" \" + tasks.get(taskNumber).toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":114,"author":{"gitId":"cheahTJ"},"content":" tasks.remove(taskNumber);","lastModifiedDate":"2024-01-23"},{"lineNumber":115,"author":{"gitId":"cheahTJ"},"content":" fs.updateFile(tasks);","lastModifiedDate":"2024-01-28"},{"lineNumber":116,"author":{"gitId":"cheahTJ"},"content":" System.out.println(\"Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":117,"author":{"gitId":"cheahTJ"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":118,"author":{"gitId":"cheahTJ"},"content":" System.out.println(\"I\u0027m not sure which task you wish to delete. Please specify and try again!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":119,"author":{"gitId":"cheahTJ"},"content":" } catch (myBotException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":120,"author":{"gitId":"cheahTJ"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-23"},{"lineNumber":121,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":122,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":123,"author":{"gitId":"cheahTJ"},"content":" else {","lastModifiedDate":"2024-01-23"},{"lineNumber":124,"author":{"gitId":"cheahTJ"},"content":" System.out.println(\"OOPS! I\u0027m sorry, but I don\u0027t know what that means :\u0027(\");","lastModifiedDate":"2024-01-23"},{"lineNumber":125,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":126,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":128,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"cheahTJ":124,"-":4}},{"path":"src/main/java/Events.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cheahTJ"},"content":"public class Events extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"cheahTJ"},"content":" protected String start;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"cheahTJ"},"content":" protected String end;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"cheahTJ"},"content":" public Events(String description, String start, String end) {","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"cheahTJ"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"cheahTJ"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"cheahTJ"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"cheahTJ"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"cheahTJ"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"cheahTJ"},"content":" return \"[E]\" + super.toString() + \" (from:\" + start + \" to:\" + end + \")\";","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"cheahTJ"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"cheahTJ":14}},{"path":"src/main/java/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cheahTJ"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"cheahTJ"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"cheahTJ"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"cheahTJ"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"cheahTJ"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"cheahTJ"},"content":"public class Parser {","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"cheahTJ"},"content":" protected String userInput;","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"cheahTJ"},"content":" protected ArrayList\u003cString\u003e words;","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"cheahTJ"},"content":" public Parser (String userInput) {","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"cheahTJ"},"content":" this.userInput \u003d userInput;","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"cheahTJ"},"content":" this.words \u003d new ArrayList\u003c\u003e(Arrays.asList(userInput.split(\" \")));}","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"cheahTJ"},"content":" /*","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"cheahTJ"},"content":" * Returns a todo object with the task description","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"cheahTJ"},"content":" * Handles errors where user fails to include task description","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"cheahTJ"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"cheahTJ"},"content":" public ToDos todoParser() throws IndexOutOfBoundsException {","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"cheahTJ"},"content":" if (!this.words.get(1).isEmpty()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"cheahTJ"},"content":" StringBuilder description \u003d new StringBuilder(this.words.get(1));","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"cheahTJ"},"content":" for (int i \u003d 2; i \u003c words.size(); i++) {","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"cheahTJ"},"content":" description.append(\" \").append(this.words.get(i));","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"cheahTJ"},"content":" return new ToDos(description.toString());","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"cheahTJ"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"cheahTJ"},"content":" throw new IndexOutOfBoundsException();","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"cheahTJ"},"content":" /*","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"cheahTJ"},"content":" * Return a deadline object with task description and date/time to complete the task","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"cheahTJ"},"content":" * Handles error where user forgets to include task description, a deadline,","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"cheahTJ"},"content":" * or when there is an incorrect syntax (e.g. never include /by)","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"cheahTJ"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"cheahTJ"},"content":" public Deadline deadlineParser() throws myBotException {","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"cheahTJ"},"content":" StringBuilder description \u003d new StringBuilder();","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"cheahTJ"},"content":" StringBuilder by \u003d new StringBuilder();","lastModifiedDate":"2024-01-22"},{"lineNumber":40,"author":{"gitId":"cheahTJ"},"content":" int index \u003d this.words.indexOf(\"/by\");","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"cheahTJ"},"content":" if (index !\u003d -1) {","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"cheahTJ"},"content":" if (index !\u003d 1) {","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"cheahTJ"},"content":" // This is to ensure that /by would not become part of the description field","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"cheahTJ"},"content":" // if the user forgets to include description field","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"cheahTJ"},"content":" description \u003d new StringBuilder(this.words.get(1));","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"cheahTJ"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(\"I don\u0027t understand your command. Try writing: deadline (task description) /by (d/m/yyyy HHmm format)\");","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":51,"author":{"gitId":"cheahTJ"},"content":" for (int i \u003d 2; i \u003c words.size(); i++) {","lastModifiedDate":"2024-01-22"},{"lineNumber":52,"author":{"gitId":"cheahTJ"},"content":" if (i \u003c index) {","lastModifiedDate":"2024-01-22"},{"lineNumber":53,"author":{"gitId":"cheahTJ"},"content":" description.append(\" \").append(words.get(i));","lastModifiedDate":"2024-01-22"},{"lineNumber":54,"author":{"gitId":"cheahTJ"},"content":" } else if (i \u003e index) {","lastModifiedDate":"2024-01-22"},{"lineNumber":55,"author":{"gitId":"cheahTJ"},"content":" by.append(\" \").append(words.get(i));","lastModifiedDate":"2024-01-22"},{"lineNumber":56,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":57,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":58,"author":{"gitId":"cheahTJ"},"content":" if (!(by.toString().isEmpty() || description.toString().isEmpty())) {","lastModifiedDate":"2024-01-23"},{"lineNumber":59,"author":{"gitId":"cheahTJ"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"cheahTJ"},"content":" LocalDateTime parsedDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"cheahTJ"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"cheahTJ"},"content":" parsedDateTime \u003d LocalDateTime.parse(by.toString().trim(), formatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"cheahTJ"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(\"I don\u0027t understand your command. Try writing: deadline (task description) /by (d/m/yyyy HHmm format)\");","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"cheahTJ"},"content":" return new Deadline(description.toString(), parsedDateTime);","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"cheahTJ"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":68,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(\"You have missing fields! You need a task description \u0026 a deadline to finish your task, try again!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":69,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":70,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":71,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":73,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":74,"author":{"gitId":"cheahTJ"},"content":" /*","lastModifiedDate":"2024-01-23"},{"lineNumber":75,"author":{"gitId":"cheahTJ"},"content":" * Returns an event object with task description, a from and to date/time","lastModifiedDate":"2024-01-23"},{"lineNumber":76,"author":{"gitId":"cheahTJ"},"content":" * Handles errors where users forget to include task description, a from or to date/time or","lastModifiedDate":"2024-01-23"},{"lineNumber":77,"author":{"gitId":"cheahTJ"},"content":" * incorrect syntax (e.g. never include /from, /to)","lastModifiedDate":"2024-01-23"},{"lineNumber":78,"author":{"gitId":"cheahTJ"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":79,"author":{"gitId":"cheahTJ"},"content":" public Events eventsParser() throws myBotException {","lastModifiedDate":"2024-01-23"},{"lineNumber":80,"author":{"gitId":"cheahTJ"},"content":" StringBuilder description \u003d new StringBuilder();","lastModifiedDate":"2024-01-23"},{"lineNumber":81,"author":{"gitId":"cheahTJ"},"content":" StringBuilder start \u003d new StringBuilder();","lastModifiedDate":"2024-01-22"},{"lineNumber":82,"author":{"gitId":"cheahTJ"},"content":" StringBuilder end \u003d new StringBuilder();","lastModifiedDate":"2024-01-22"},{"lineNumber":83,"author":{"gitId":"cheahTJ"},"content":" int indexOfFrom \u003d this.words.indexOf(\"/from\");","lastModifiedDate":"2024-01-22"},{"lineNumber":84,"author":{"gitId":"cheahTJ"},"content":" int indexOfTo \u003d this.words.indexOf(\"/to\");","lastModifiedDate":"2024-01-22"},{"lineNumber":85,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":86,"author":{"gitId":"cheahTJ"},"content":" if (indexOfFrom \u003d\u003d -1 || indexOfTo \u003d\u003d -1) {","lastModifiedDate":"2024-01-23"},{"lineNumber":87,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(\"I don\u0027t understand your command. Try writing: event (task description) /from (date/time) /to (date/time)\");","lastModifiedDate":"2024-01-23"},{"lineNumber":88,"author":{"gitId":"cheahTJ"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":89,"author":{"gitId":"cheahTJ"},"content":" if (indexOfFrom \u003d\u003d 1 || indexOfTo \u003d\u003d 1) {} else {","lastModifiedDate":"2024-01-23"},{"lineNumber":90,"author":{"gitId":"cheahTJ"},"content":" description \u003d new StringBuilder(this.words.get(1));","lastModifiedDate":"2024-01-23"},{"lineNumber":91,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":92,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":93,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":94,"author":{"gitId":"cheahTJ"},"content":" for (int i \u003d 2; i \u003c words.size(); i++) {","lastModifiedDate":"2024-01-22"},{"lineNumber":95,"author":{"gitId":"cheahTJ"},"content":" if (i \u003c indexOfFrom) {","lastModifiedDate":"2024-01-22"},{"lineNumber":96,"author":{"gitId":"cheahTJ"},"content":" description.append(\" \").append(words.get(i));","lastModifiedDate":"2024-01-22"},{"lineNumber":97,"author":{"gitId":"cheahTJ"},"content":" } else if (i \u003e indexOfFrom \u0026\u0026 i \u003c indexOfTo) {","lastModifiedDate":"2024-01-22"},{"lineNumber":98,"author":{"gitId":"cheahTJ"},"content":" start.append(\" \").append(words.get(i));","lastModifiedDate":"2024-01-22"},{"lineNumber":99,"author":{"gitId":"cheahTJ"},"content":" } else if (i \u003e indexOfTo){","lastModifiedDate":"2024-01-22"},{"lineNumber":100,"author":{"gitId":"cheahTJ"},"content":" end.append(\" \").append(words.get(i));","lastModifiedDate":"2024-01-22"},{"lineNumber":101,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":102,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":103,"author":{"gitId":"cheahTJ"},"content":" if (description.toString().isEmpty() || start.toString().isEmpty() || end.toString().isEmpty()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":104,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(\"You having missing fields! You need a task description, start and end date/time for your task, try again!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":105,"author":{"gitId":"cheahTJ"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":106,"author":{"gitId":"cheahTJ"},"content":" return new Events(description.toString(), start.toString(), end.toString());","lastModifiedDate":"2024-01-22"},{"lineNumber":107,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":108,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":109,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":110,"author":{"gitId":"cheahTJ"},"content":" /*","lastModifiedDate":"2024-01-23"},{"lineNumber":111,"author":{"gitId":"cheahTJ"},"content":" * Returns an integer to know which task the user wishes to mark","lastModifiedDate":"2024-01-23"},{"lineNumber":112,"author":{"gitId":"cheahTJ"},"content":" * Deals with error when the user accidentally tries to mark a task which does not belong in the list of task","lastModifiedDate":"2024-01-23"},{"lineNumber":113,"author":{"gitId":"cheahTJ"},"content":" * or when the user fails to include which task they want to mark as completed","lastModifiedDate":"2024-01-23"},{"lineNumber":114,"author":{"gitId":"cheahTJ"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":115,"author":{"gitId":"cheahTJ"},"content":" public int markParser(int currentNumOfTask) throws IndexOutOfBoundsException, myBotException {","lastModifiedDate":"2024-01-23"},{"lineNumber":116,"author":{"gitId":"cheahTJ"},"content":" if (!this.words.get(1).isEmpty()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":117,"author":{"gitId":"cheahTJ"},"content":" if (Integer.parseInt(this.words.get(1)) \u003e currentNumOfTask || Integer.parseInt(this.words.get(1)) \u003c\u003d 0) {","lastModifiedDate":"2024-01-23"},{"lineNumber":118,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(\"You have currently \" + currentNumOfTask + \" tasks. You cannot mark task larger or smaller than this!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":119,"author":{"gitId":"cheahTJ"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":120,"author":{"gitId":"cheahTJ"},"content":" return Integer.parseInt(this.words.get(1)) - 1;","lastModifiedDate":"2024-01-22"},{"lineNumber":121,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":122,"author":{"gitId":"cheahTJ"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":123,"author":{"gitId":"cheahTJ"},"content":" throw new IndexOutOfBoundsException();","lastModifiedDate":"2024-01-23"},{"lineNumber":124,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":125,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":126,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":127,"author":{"gitId":"cheahTJ"},"content":" /*","lastModifiedDate":"2024-01-23"},{"lineNumber":128,"author":{"gitId":"cheahTJ"},"content":" * Returns an integer to know which task the user wishes to un-mark","lastModifiedDate":"2024-01-23"},{"lineNumber":129,"author":{"gitId":"cheahTJ"},"content":" * Deals with error when the user accidentally tries to un-mark a task which does not belong in the list of task","lastModifiedDate":"2024-01-23"},{"lineNumber":130,"author":{"gitId":"cheahTJ"},"content":" * or when the user fails to include which task they want to un-mark","lastModifiedDate":"2024-01-23"},{"lineNumber":131,"author":{"gitId":"cheahTJ"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":132,"author":{"gitId":"cheahTJ"},"content":" public int unmarkParser(int currentNumOfTask) throws IndexOutOfBoundsException, myBotException {","lastModifiedDate":"2024-01-23"},{"lineNumber":133,"author":{"gitId":"cheahTJ"},"content":" if (!this.words.get(1).isEmpty()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":134,"author":{"gitId":"cheahTJ"},"content":" if (Integer.parseInt(this.words.get(1)) \u003e currentNumOfTask || Integer.parseInt(this.words.get(1)) \u003c\u003d 0) {","lastModifiedDate":"2024-01-23"},{"lineNumber":135,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(\"You have currently \" + currentNumOfTask + \" tasks. You cannot un-mark task larger or smaller than this!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":136,"author":{"gitId":"cheahTJ"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":137,"author":{"gitId":"cheahTJ"},"content":" return Integer.parseInt(this.words.get(1)) - 1;","lastModifiedDate":"2024-01-22"},{"lineNumber":138,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":139,"author":{"gitId":"cheahTJ"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":140,"author":{"gitId":"cheahTJ"},"content":" throw new IndexOutOfBoundsException();","lastModifiedDate":"2024-01-23"},{"lineNumber":141,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":142,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":143,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":144,"author":{"gitId":"cheahTJ"},"content":" /*","lastModifiedDate":"2024-01-23"},{"lineNumber":145,"author":{"gitId":"cheahTJ"},"content":" * Returns an integer to know which task the user wishes to delete","lastModifiedDate":"2024-01-23"},{"lineNumber":146,"author":{"gitId":"cheahTJ"},"content":" * Deals with error when the user accidentally tries to delete a task which does not belong in the list of task","lastModifiedDate":"2024-01-23"},{"lineNumber":147,"author":{"gitId":"cheahTJ"},"content":" * or when the user fails to include which task they want to delete","lastModifiedDate":"2024-01-23"},{"lineNumber":148,"author":{"gitId":"cheahTJ"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":149,"author":{"gitId":"cheahTJ"},"content":" public int deleteParser(int currentNumOfTask) throws IndexOutOfBoundsException, myBotException {","lastModifiedDate":"2024-01-23"},{"lineNumber":150,"author":{"gitId":"cheahTJ"},"content":" if (!this.words.get(1).isEmpty()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":151,"author":{"gitId":"cheahTJ"},"content":" if (Integer.parseInt(this.words.get(1)) \u003e currentNumOfTask || Integer.parseInt(this.words.get(1)) \u003c\u003d 0) {","lastModifiedDate":"2024-01-23"},{"lineNumber":152,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(\"You have currently \" + currentNumOfTask + \" tasks. You cannot delete task larger or smaller than this!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":153,"author":{"gitId":"cheahTJ"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":154,"author":{"gitId":"cheahTJ"},"content":" return Integer.parseInt(this.words.get(1)) - 1;","lastModifiedDate":"2024-01-23"},{"lineNumber":155,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":156,"author":{"gitId":"cheahTJ"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":157,"author":{"gitId":"cheahTJ"},"content":" throw new IndexOutOfBoundsException();","lastModifiedDate":"2024-01-23"},{"lineNumber":158,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":159,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":160,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":161,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":162,"author":{"gitId":"cheahTJ"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"cheahTJ":162}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cheahTJ"},"content":"public class Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"cheahTJ"},"content":" protected String description;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"cheahTJ"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"cheahTJ"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"cheahTJ"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"cheahTJ"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"cheahTJ"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"cheahTJ"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"cheahTJ"},"content":" // When a user wishes to mark a task as completed","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"cheahTJ"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"cheahTJ"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"cheahTJ"},"content":" // When user wishes to un-mark a certain task","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"cheahTJ"},"content":" public void uncheckingTask() {","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"cheahTJ"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"cheahTJ"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"cheahTJ"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"cheahTJ"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"cheahTJ"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"cheahTJ":27}},{"path":"src/main/java/ToDos.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cheahTJ"},"content":"public class ToDos extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"cheahTJ"},"content":" public ToDos(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"cheahTJ"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"cheahTJ"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"cheahTJ"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"cheahTJ"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"cheahTJ"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"cheahTJ":10}},{"path":"src/main/java/fileStorage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cheahTJ"},"content":"import java.io.File;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"cheahTJ"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"cheahTJ"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"cheahTJ"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"cheahTJ"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"cheahTJ"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"cheahTJ"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"cheahTJ"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"cheahTJ"},"content":"public class fileStorage {","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"cheahTJ"},"content":" protected File myFile;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"cheahTJ"},"content":" protected String filePath;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"cheahTJ"},"content":" public fileStorage(String filePath) throws myBotException {","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"cheahTJ"},"content":" this.myFile \u003d new File(filePath);","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"cheahTJ"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"cheahTJ"},"content":" if (!myFile.exists()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"cheahTJ"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"cheahTJ"},"content":" if (this.myFile.getParentFile().mkdirs()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"cheahTJ"},"content":" System.out.println(\"Directory has been successfully created\");","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"cheahTJ"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"cheahTJ"},"content":" System.out.println(\"Error creating directory...\");","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"cheahTJ"},"content":" if (this.myFile.createNewFile()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"cheahTJ"},"content":" System.out.println(\"File has been successfully created\");","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"cheahTJ"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"cheahTJ"},"content":" System.out.println(\"Error creating file...\");","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"cheahTJ"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"cheahTJ"},"content":" public ArrayList\u003cTask\u003e bootingUp() throws myBotException {","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"cheahTJ"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"cheahTJ"},"content":" if (this.myFile.length() \u003d\u003d 0) {","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"cheahTJ"},"content":" tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"cheahTJ"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"cheahTJ"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"cheahTJ"},"content":" Scanner sc \u003d new Scanner(this.myFile);","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"cheahTJ"},"content":" while (sc.hasNextLine()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"cheahTJ"},"content":" String text \u003d sc.nextLine();","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"cheahTJ"},"content":" String[] segmentedText \u003d text.split(\"\\\\|\");","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"cheahTJ"},"content":" if (segmentedText[0].trim().equals(\"todo\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"cheahTJ"},"content":" // Format for Todo: T | 1/0 | read book","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"cheahTJ"},"content":" int isTaskCompleted \u003d Integer.parseInt(segmentedText[1].trim());","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"cheahTJ"},"content":" String description \u003d segmentedText[2].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"cheahTJ"},"content":" ToDos todo \u003d new ToDos(description);","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"cheahTJ"},"content":" if (isTaskCompleted \u003d\u003d 1) {","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"cheahTJ"},"content":" todo.markAsDone();","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"cheahTJ"},"content":" tasks.add(todo);","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"cheahTJ"},"content":" } else if (segmentedText[0].trim().equals(\"deadline\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"cheahTJ"},"content":" // Format for Deadline: D | 1/0 | read book | Date/Time","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"cheahTJ"},"content":" int isTaskCompleted \u003d Integer.parseInt(segmentedText[1].trim());","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"cheahTJ"},"content":" String description \u003d segmentedText[2].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"cheahTJ"},"content":" String deadlineTime \u003d segmentedText[3].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"cheahTJ"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy HHmm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"cheahTJ"},"content":" LocalDateTime parsedDateTime \u003d LocalDateTime.parse(deadlineTime, formatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"cheahTJ"},"content":" Deadline deadline \u003d new Deadline(description, parsedDateTime);","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"cheahTJ"},"content":" if (isTaskCompleted \u003d\u003d 1) {","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"cheahTJ"},"content":" deadline.markAsDone();","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"cheahTJ"},"content":" tasks.add(deadline);","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"cheahTJ"},"content":" } else if (segmentedText[0].trim().equals(\"event\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"cheahTJ"},"content":" // Format for Event: E | 1/0 | read book | Date/Time(from) | Date/Time(To)","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"cheahTJ"},"content":" int isTaskCompleted \u003d Integer.parseInt(segmentedText[1].trim());","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"cheahTJ"},"content":" String description \u003d segmentedText[2].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"cheahTJ"},"content":" String from \u003d \" \" + segmentedText[3].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"cheahTJ"},"content":" String to \u003d \" \" + segmentedText[4].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"cheahTJ"},"content":" Events event \u003d new Events(description,from,to);","lastModifiedDate":"2024-01-28"},{"lineNumber":79,"author":{"gitId":"cheahTJ"},"content":" if (isTaskCompleted \u003d\u003d 1) {","lastModifiedDate":"2024-01-28"},{"lineNumber":80,"author":{"gitId":"cheahTJ"},"content":" event.markAsDone();","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"cheahTJ"},"content":" tasks.add(event);","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"cheahTJ"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(\"Weird expression found!\");","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":90,"author":{"gitId":"cheahTJ"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":91,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":92,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":93,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":94,"author":{"gitId":"cheahTJ"},"content":" return tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":95,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":96,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":97,"author":{"gitId":"cheahTJ"},"content":" public void updateFile(ArrayList\u003cTask\u003e tasks) throws myBotException {","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"cheahTJ"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":99,"author":{"gitId":"cheahTJ"},"content":" FileWriter fw \u003d new FileWriter(this.filePath);","lastModifiedDate":"2024-01-28"},{"lineNumber":100,"author":{"gitId":"cheahTJ"},"content":" for (Task t : tasks) {","lastModifiedDate":"2024-01-28"},{"lineNumber":101,"author":{"gitId":"cheahTJ"},"content":" int isCompleted \u003d t.isDone ? 1 : 0;","lastModifiedDate":"2024-01-28"},{"lineNumber":102,"author":{"gitId":"cheahTJ"},"content":" if (t instanceof ToDos) {","lastModifiedDate":"2024-01-28"},{"lineNumber":103,"author":{"gitId":"cheahTJ"},"content":" String toWrite \u003d \"todo | \" + isCompleted + \" | \" + t.description;","lastModifiedDate":"2024-01-28"},{"lineNumber":104,"author":{"gitId":"cheahTJ"},"content":" fw.write(toWrite + System.lineSeparator());","lastModifiedDate":"2024-01-28"},{"lineNumber":105,"author":{"gitId":"cheahTJ"},"content":" } else if (t instanceof Deadline) {","lastModifiedDate":"2024-01-28"},{"lineNumber":106,"author":{"gitId":"cheahTJ"},"content":" String toWrite \u003d \"deadline | \" + isCompleted + \" | \" + t.description + \" | \" + ((Deadline) t).by.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy HHmm\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":107,"author":{"gitId":"cheahTJ"},"content":" fw.write(toWrite + System.lineSeparator());","lastModifiedDate":"2024-01-28"},{"lineNumber":108,"author":{"gitId":"cheahTJ"},"content":" } else if (t instanceof Events) {","lastModifiedDate":"2024-01-28"},{"lineNumber":109,"author":{"gitId":"cheahTJ"},"content":" String toWrite \u003d \"event | \" + isCompleted + \" | \" + t.description + \" | \" + ((Events) t).start + \" | \" + ((Events) t).end;","lastModifiedDate":"2024-01-28"},{"lineNumber":110,"author":{"gitId":"cheahTJ"},"content":" fw.write(toWrite + System.lineSeparator());","lastModifiedDate":"2024-01-28"},{"lineNumber":111,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":112,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":113,"author":{"gitId":"cheahTJ"},"content":" fw.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":114,"author":{"gitId":"cheahTJ"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":115,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(\"There is not file to be updated!\");","lastModifiedDate":"2024-01-28"},{"lineNumber":116,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":117,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":118,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":119,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":120,"author":{"gitId":"cheahTJ"},"content":"}","lastModifiedDate":"2024-01-28"},{"lineNumber":121,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":122,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"cheahTJ":122}},{"path":"src/main/java/myBotException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cheahTJ"},"content":"public class myBotException extends Exception {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"cheahTJ"},"content":" protected String message;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"cheahTJ"},"content":" public myBotException(String message) {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"cheahTJ"},"content":" super(message);","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"cheahTJ"},"content":" this.message \u003d message;","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"cheahTJ"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"cheahTJ":7}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"cheahTJ"},"content":"todo borrow book","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"cheahTJ"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"cheahTJ"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"cheahTJ"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"cheahTJ"},"content":"mark 2","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"cheahTJ"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"cheahTJ"},"content":"unmark 2","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"cheahTJ"},"content":"list","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"cheahTJ":8}}] +[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cheahTJ"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"cheahTJ"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"cheahTJ"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"cheahTJ"},"content":" protected LocalDateTime by;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"cheahTJ"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"cheahTJ"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"cheahTJ"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"cheahTJ"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"cheahTJ"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"cheahTJ"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.by.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy, HHmm\")) + \")\";","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"cheahTJ"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"cheahTJ":16}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":2,"author":{"gitId":"cheahTJ"},"content":" private fileStorage storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"cheahTJ"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"cheahTJ"},"content":" private UI ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"cheahTJ"},"content":" private Parser parser;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"cheahTJ"},"content":" public Duke(String filePath) {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"cheahTJ"},"content":" this.ui \u003d new UI();","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"cheahTJ"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"cheahTJ"},"content":" this.storage \u003d new fileStorage(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"cheahTJ"},"content":" this.tasks \u003d new TaskList(storage.bootingUp());","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"cheahTJ"},"content":" } catch (myBotException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"cheahTJ"},"content":" this.tasks \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"cheahTJ"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":18,"author":{"gitId":"cheahTJ"},"content":" public void run() {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"cheahTJ"},"content":" ui.showWelcome();","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"cheahTJ"},"content":" while (true) {","lastModifiedDate":"2024-01-21"},{"lineNumber":21,"author":{"gitId":"cheahTJ"},"content":" String userInput \u003d ui.readCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"cheahTJ"},"content":" String[] words \u003d userInput.split(\" \");","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"cheahTJ"},"content":" parser \u003d new Parser(userInput);","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"cheahTJ"},"content":" if (userInput.equals(\"bye\")) {","lastModifiedDate":"2024-01-21"},{"lineNumber":26,"author":{"gitId":"cheahTJ"},"content":" ui.sayGoodbye();","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"cheahTJ"},"content":" break;","lastModifiedDate":"2024-01-21"},{"lineNumber":28,"author":{"gitId":"cheahTJ"},"content":" } else if (userInput.equals(\"list\")) {","lastModifiedDate":"2024-01-21"},{"lineNumber":29,"author":{"gitId":"cheahTJ"},"content":" ui.listText();","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"cheahTJ"},"content":" tasks.listTask();","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"cheahTJ"},"content":" } else if (words[0].equals(\"mark\")) {","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"cheahTJ"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"cheahTJ"},"content":" int taskNumber \u003d parser.markParser(tasks.getTaskSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"cheahTJ"},"content":" tasks.updateTaskToStorage(this.storage);","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"cheahTJ"},"content":" ui.markTaskText(taskNumber, this.tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"cheahTJ"},"content":" } catch (myBotException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"cheahTJ"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"cheahTJ"},"content":" } else if (words[0].equals(\"unmark\")) {","lastModifiedDate":"2024-01-22"},{"lineNumber":40,"author":{"gitId":"cheahTJ"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"cheahTJ"},"content":" int taskNum \u003d parser.unmarkParser(tasks.getTaskSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"cheahTJ"},"content":" tasks.updateTaskToStorage(this.storage);","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"cheahTJ"},"content":" ui.unmarkTaskText(taskNum, this.tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"cheahTJ"},"content":" } catch (myBotException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"cheahTJ"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"cheahTJ"},"content":" } else if (words[0].equals(\"todo\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"cheahTJ"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"cheahTJ"},"content":" ToDos todo \u003d parser.todoParser();","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"cheahTJ"},"content":" tasks.addTask(todo);","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"cheahTJ"},"content":" tasks.updateTaskToStorage(this.storage);","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"cheahTJ"},"content":" ui.additionToTasksText(todo, this.tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"cheahTJ"},"content":" } catch (myBotException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"cheahTJ"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":56,"author":{"gitId":"cheahTJ"},"content":" } else if (words[0].equals(\"deadline\")) {","lastModifiedDate":"2024-01-22"},{"lineNumber":57,"author":{"gitId":"cheahTJ"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":58,"author":{"gitId":"cheahTJ"},"content":" Deadline deadlineTask \u003d parser.deadlineParser();","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"cheahTJ"},"content":" tasks.addTask(deadlineTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"cheahTJ"},"content":" tasks.updateTaskToStorage(this.storage);","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"cheahTJ"},"content":" ui.additionToTasksText(deadlineTask, this.tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"cheahTJ"},"content":" } catch (myBotException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":63,"author":{"gitId":"cheahTJ"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":65,"author":{"gitId":"cheahTJ"},"content":" } else if (words[0].equals(\"event\")) {","lastModifiedDate":"2024-01-22"},{"lineNumber":66,"author":{"gitId":"cheahTJ"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":67,"author":{"gitId":"cheahTJ"},"content":" Events events \u003d parser.eventsParser();","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"cheahTJ"},"content":" tasks.addTask(events);","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"cheahTJ"},"content":" tasks.updateTaskToStorage(this.storage);","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"cheahTJ"},"content":" ui.additionToTasksText(events, this.tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"cheahTJ"},"content":" } catch (myBotException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":72,"author":{"gitId":"cheahTJ"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":74,"author":{"gitId":"cheahTJ"},"content":" } else if (words[0].equals(\"delete\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":75,"author":{"gitId":"cheahTJ"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":76,"author":{"gitId":"cheahTJ"},"content":" int taskNumber \u003d parser.deleteParser(tasks.getTaskSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"cheahTJ"},"content":" ui.deletionToTasksText(taskNumber, this.tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"cheahTJ"},"content":" tasks.updateTaskToStorage(this.storage);","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"cheahTJ"},"content":" } catch (myBotException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":80,"author":{"gitId":"cheahTJ"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":82,"author":{"gitId":"cheahTJ"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"cheahTJ"},"content":" ui.showError(\"OOPS! I\u0027m sorry, but I don\u0027t know what that means :\u0027(\");","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":85,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":86,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":87,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"cheahTJ"},"content":" new Duke(\"./data/dukeData.txt\").run();","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"cheahTJ":87,"-":4}},{"path":"src/main/java/Events.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cheahTJ"},"content":"public class Events extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"cheahTJ"},"content":" protected String start;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"cheahTJ"},"content":" protected String end;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"cheahTJ"},"content":" public Events(String description, String start, String end) {","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"cheahTJ"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"cheahTJ"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"cheahTJ"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"cheahTJ"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"cheahTJ"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"cheahTJ"},"content":" return \"[E]\" + super.toString() + \" (from:\" + start + \" to:\" + end + \")\";","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"cheahTJ"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"cheahTJ":14}},{"path":"src/main/java/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cheahTJ"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"cheahTJ"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"cheahTJ"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"cheahTJ"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"cheahTJ"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"cheahTJ"},"content":"public class Parser {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"cheahTJ"},"content":" protected String userInput;","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"cheahTJ"},"content":" protected ArrayList\u003cString\u003e words;","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"cheahTJ"},"content":" public Parser (String userInput) {","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"cheahTJ"},"content":" this.userInput \u003d userInput;","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"cheahTJ"},"content":" this.words \u003d new ArrayList\u003c\u003e(Arrays.asList(userInput.split(\" \")));}","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"cheahTJ"},"content":" /*","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"cheahTJ"},"content":" * Returns a todo object with the task description","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"cheahTJ"},"content":" * Handles errors where user fails to include task description","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"cheahTJ"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"cheahTJ"},"content":" public ToDos todoParser() throws myBotException {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"cheahTJ"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"cheahTJ"},"content":" if (!this.words.get(1).isEmpty()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"cheahTJ"},"content":" StringBuilder description \u003d new StringBuilder(this.words.get(1));","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"cheahTJ"},"content":" for (int i \u003d 2; i \u003c words.size(); i++) {","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"cheahTJ"},"content":" description.append(\" \").append(this.words.get(i));","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"cheahTJ"},"content":" return new ToDos(description.toString());","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"cheahTJ"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"cheahTJ"},"content":" throw new IndexOutOfBoundsException();","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"cheahTJ"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(\"OOPS! The command is incomplete. Please provide a task description!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"cheahTJ"},"content":" /*","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"cheahTJ"},"content":" * Return a deadline object with task description and date/time to complete the task","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"cheahTJ"},"content":" * Handles error where user forgets to include task description, a deadline,","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"cheahTJ"},"content":" * or when there is an incorrect syntax (e.g. never include /by)","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"cheahTJ"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"cheahTJ"},"content":" public Deadline deadlineParser() throws myBotException {","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"cheahTJ"},"content":" StringBuilder description \u003d new StringBuilder();","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"cheahTJ"},"content":" StringBuilder by \u003d new StringBuilder();","lastModifiedDate":"2024-01-22"},{"lineNumber":44,"author":{"gitId":"cheahTJ"},"content":" int index \u003d this.words.indexOf(\"/by\");","lastModifiedDate":"2024-01-22"},{"lineNumber":45,"author":{"gitId":"cheahTJ"},"content":" if (index !\u003d -1) {","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"cheahTJ"},"content":" if (index !\u003d 1) {","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"cheahTJ"},"content":" // This is to ensure that /by would not become part of the description field","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"cheahTJ"},"content":" // if the user forgets to include description field","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"cheahTJ"},"content":" description \u003d new StringBuilder(this.words.get(1));","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"cheahTJ"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":52,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(\"I don\u0027t understand your command. Try writing: deadline (task description) /by (d/m/yyyy HHmm format)\");","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":54,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":55,"author":{"gitId":"cheahTJ"},"content":" for (int i \u003d 2; i \u003c words.size(); i++) {","lastModifiedDate":"2024-01-22"},{"lineNumber":56,"author":{"gitId":"cheahTJ"},"content":" if (i \u003c index) {","lastModifiedDate":"2024-01-22"},{"lineNumber":57,"author":{"gitId":"cheahTJ"},"content":" description.append(\" \").append(words.get(i));","lastModifiedDate":"2024-01-22"},{"lineNumber":58,"author":{"gitId":"cheahTJ"},"content":" } else if (i \u003e index) {","lastModifiedDate":"2024-01-22"},{"lineNumber":59,"author":{"gitId":"cheahTJ"},"content":" by.append(\" \").append(words.get(i));","lastModifiedDate":"2024-01-22"},{"lineNumber":60,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":61,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":62,"author":{"gitId":"cheahTJ"},"content":" if (!(by.toString().isEmpty() || description.toString().isEmpty())) {","lastModifiedDate":"2024-01-23"},{"lineNumber":63,"author":{"gitId":"cheahTJ"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"cheahTJ"},"content":" LocalDateTime parsedDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"cheahTJ"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"cheahTJ"},"content":" parsedDateTime \u003d LocalDateTime.parse(by.toString().trim(), formatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"cheahTJ"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(\"I don\u0027t understand your command. Try writing: deadline (task description) /by (d/m/yyyy HHmm format)\");","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"cheahTJ"},"content":" return new Deadline(description.toString(), parsedDateTime);","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"cheahTJ"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":72,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(\"You have missing fields! You need a task description \u0026 a deadline to finish your task, try again!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":73,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":74,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":75,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":77,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":78,"author":{"gitId":"cheahTJ"},"content":" /*","lastModifiedDate":"2024-01-23"},{"lineNumber":79,"author":{"gitId":"cheahTJ"},"content":" * Returns an event object with task description, a from and to date/time","lastModifiedDate":"2024-01-23"},{"lineNumber":80,"author":{"gitId":"cheahTJ"},"content":" * Handles errors where users forget to include task description, a from or to date/time or","lastModifiedDate":"2024-01-23"},{"lineNumber":81,"author":{"gitId":"cheahTJ"},"content":" * incorrect syntax (e.g. never include /from, /to)","lastModifiedDate":"2024-01-23"},{"lineNumber":82,"author":{"gitId":"cheahTJ"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":83,"author":{"gitId":"cheahTJ"},"content":" public Events eventsParser() throws myBotException {","lastModifiedDate":"2024-01-23"},{"lineNumber":84,"author":{"gitId":"cheahTJ"},"content":" StringBuilder description \u003d new StringBuilder();","lastModifiedDate":"2024-01-23"},{"lineNumber":85,"author":{"gitId":"cheahTJ"},"content":" StringBuilder start \u003d new StringBuilder();","lastModifiedDate":"2024-01-22"},{"lineNumber":86,"author":{"gitId":"cheahTJ"},"content":" StringBuilder end \u003d new StringBuilder();","lastModifiedDate":"2024-01-22"},{"lineNumber":87,"author":{"gitId":"cheahTJ"},"content":" int indexOfFrom \u003d this.words.indexOf(\"/from\");","lastModifiedDate":"2024-01-22"},{"lineNumber":88,"author":{"gitId":"cheahTJ"},"content":" int indexOfTo \u003d this.words.indexOf(\"/to\");","lastModifiedDate":"2024-01-22"},{"lineNumber":89,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":90,"author":{"gitId":"cheahTJ"},"content":" if (indexOfFrom \u003d\u003d -1 || indexOfTo \u003d\u003d -1) {","lastModifiedDate":"2024-01-23"},{"lineNumber":91,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(\"I don\u0027t understand your command. Try writing: event (task description) /from (date/time) /to (date/time)\");","lastModifiedDate":"2024-01-23"},{"lineNumber":92,"author":{"gitId":"cheahTJ"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":93,"author":{"gitId":"cheahTJ"},"content":" if (indexOfFrom \u003d\u003d 1 || indexOfTo \u003d\u003d 1) {} else {","lastModifiedDate":"2024-01-23"},{"lineNumber":94,"author":{"gitId":"cheahTJ"},"content":" description \u003d new StringBuilder(this.words.get(1));","lastModifiedDate":"2024-01-23"},{"lineNumber":95,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":96,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":97,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":98,"author":{"gitId":"cheahTJ"},"content":" for (int i \u003d 2; i \u003c words.size(); i++) {","lastModifiedDate":"2024-01-22"},{"lineNumber":99,"author":{"gitId":"cheahTJ"},"content":" if (i \u003c indexOfFrom) {","lastModifiedDate":"2024-01-22"},{"lineNumber":100,"author":{"gitId":"cheahTJ"},"content":" description.append(\" \").append(words.get(i));","lastModifiedDate":"2024-01-22"},{"lineNumber":101,"author":{"gitId":"cheahTJ"},"content":" } else if (i \u003e indexOfFrom \u0026\u0026 i \u003c indexOfTo) {","lastModifiedDate":"2024-01-22"},{"lineNumber":102,"author":{"gitId":"cheahTJ"},"content":" start.append(\" \").append(words.get(i));","lastModifiedDate":"2024-01-22"},{"lineNumber":103,"author":{"gitId":"cheahTJ"},"content":" } else if (i \u003e indexOfTo){","lastModifiedDate":"2024-01-22"},{"lineNumber":104,"author":{"gitId":"cheahTJ"},"content":" end.append(\" \").append(words.get(i));","lastModifiedDate":"2024-01-22"},{"lineNumber":105,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":106,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":107,"author":{"gitId":"cheahTJ"},"content":" if (description.toString().isEmpty() || start.toString().isEmpty() || end.toString().isEmpty()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":108,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(\"You having missing fields! You need a task description, start and end date/time for your task, try again!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":109,"author":{"gitId":"cheahTJ"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":110,"author":{"gitId":"cheahTJ"},"content":" return new Events(description.toString(), start.toString(), end.toString());","lastModifiedDate":"2024-01-22"},{"lineNumber":111,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":112,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":113,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":114,"author":{"gitId":"cheahTJ"},"content":" /*","lastModifiedDate":"2024-01-23"},{"lineNumber":115,"author":{"gitId":"cheahTJ"},"content":" * Returns an integer to know which task the user wishes to mark","lastModifiedDate":"2024-01-23"},{"lineNumber":116,"author":{"gitId":"cheahTJ"},"content":" * Deals with error when the user accidentally tries to mark a task which does not belong in the list of task","lastModifiedDate":"2024-01-23"},{"lineNumber":117,"author":{"gitId":"cheahTJ"},"content":" * or when the user fails to include which task they want to mark as completed","lastModifiedDate":"2024-01-23"},{"lineNumber":118,"author":{"gitId":"cheahTJ"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":119,"author":{"gitId":"cheahTJ"},"content":" public int markParser(int currentNumOfTask) throws myBotException {","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"cheahTJ"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"cheahTJ"},"content":" if (!this.words.get(1).isEmpty()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":122,"author":{"gitId":"cheahTJ"},"content":" if (Integer.parseInt(this.words.get(1)) \u003e currentNumOfTask || Integer.parseInt(this.words.get(1)) \u003c\u003d 0) {","lastModifiedDate":"2024-01-23"},{"lineNumber":123,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(\"You have currently \" + currentNumOfTask + \" tasks. You cannot mark task larger or smaller than this!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":124,"author":{"gitId":"cheahTJ"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":125,"author":{"gitId":"cheahTJ"},"content":" return Integer.parseInt(this.words.get(1)) - 1;","lastModifiedDate":"2024-01-22"},{"lineNumber":126,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":127,"author":{"gitId":"cheahTJ"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":128,"author":{"gitId":"cheahTJ"},"content":" throw new IndexOutOfBoundsException();","lastModifiedDate":"2024-01-23"},{"lineNumber":129,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":130,"author":{"gitId":"cheahTJ"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":131,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(\"I\u0027m not sure which task you wish to mark. Please specify the task you wish to mark and try again!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":133,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":134,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":135,"author":{"gitId":"cheahTJ"},"content":" /*","lastModifiedDate":"2024-01-23"},{"lineNumber":136,"author":{"gitId":"cheahTJ"},"content":" * Returns an integer to know which task the user wishes to un-mark","lastModifiedDate":"2024-01-23"},{"lineNumber":137,"author":{"gitId":"cheahTJ"},"content":" * Deals with error when the user accidentally tries to un-mark a task which does not belong in the list of task","lastModifiedDate":"2024-01-23"},{"lineNumber":138,"author":{"gitId":"cheahTJ"},"content":" * or when the user fails to include which task they want to un-mark","lastModifiedDate":"2024-01-23"},{"lineNumber":139,"author":{"gitId":"cheahTJ"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":140,"author":{"gitId":"cheahTJ"},"content":" public int unmarkParser(int currentNumOfTask) throws myBotException {","lastModifiedDate":"2024-01-30"},{"lineNumber":141,"author":{"gitId":"cheahTJ"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"cheahTJ"},"content":" if (!this.words.get(1).isEmpty()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":143,"author":{"gitId":"cheahTJ"},"content":" if (Integer.parseInt(this.words.get(1)) \u003e currentNumOfTask || Integer.parseInt(this.words.get(1)) \u003c\u003d 0) {","lastModifiedDate":"2024-01-23"},{"lineNumber":144,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(\"You have currently \" + currentNumOfTask + \" tasks. You cannot un-mark task larger or smaller than this!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":145,"author":{"gitId":"cheahTJ"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":146,"author":{"gitId":"cheahTJ"},"content":" return Integer.parseInt(this.words.get(1)) - 1;","lastModifiedDate":"2024-01-22"},{"lineNumber":147,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":148,"author":{"gitId":"cheahTJ"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":149,"author":{"gitId":"cheahTJ"},"content":" throw new IndexOutOfBoundsException();","lastModifiedDate":"2024-01-23"},{"lineNumber":150,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":151,"author":{"gitId":"cheahTJ"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":152,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(\"I\u0027m not sure which task you wish to un-mark. Please specify the task you wish to un-mark and try again!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":153,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":154,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":155,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":156,"author":{"gitId":"cheahTJ"},"content":" /*","lastModifiedDate":"2024-01-23"},{"lineNumber":157,"author":{"gitId":"cheahTJ"},"content":" * Returns an integer to know which task the user wishes to delete","lastModifiedDate":"2024-01-23"},{"lineNumber":158,"author":{"gitId":"cheahTJ"},"content":" * Deals with error when the user accidentally tries to delete a task which does not belong in the list of task","lastModifiedDate":"2024-01-23"},{"lineNumber":159,"author":{"gitId":"cheahTJ"},"content":" * or when the user fails to include which task they want to delete","lastModifiedDate":"2024-01-23"},{"lineNumber":160,"author":{"gitId":"cheahTJ"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":161,"author":{"gitId":"cheahTJ"},"content":" public int deleteParser(int currentNumOfTask) throws myBotException {","lastModifiedDate":"2024-01-30"},{"lineNumber":162,"author":{"gitId":"cheahTJ"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":163,"author":{"gitId":"cheahTJ"},"content":" if (!this.words.get(1).isEmpty()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":164,"author":{"gitId":"cheahTJ"},"content":" if (Integer.parseInt(this.words.get(1)) \u003e currentNumOfTask || Integer.parseInt(this.words.get(1)) \u003c\u003d 0) {","lastModifiedDate":"2024-01-23"},{"lineNumber":165,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(\"You have currently \" + currentNumOfTask + \" tasks. You cannot delete task larger or smaller than this!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":166,"author":{"gitId":"cheahTJ"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":167,"author":{"gitId":"cheahTJ"},"content":" return Integer.parseInt(this.words.get(1)) - 1;","lastModifiedDate":"2024-01-23"},{"lineNumber":168,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":169,"author":{"gitId":"cheahTJ"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":170,"author":{"gitId":"cheahTJ"},"content":" throw new IndexOutOfBoundsException();","lastModifiedDate":"2024-01-23"},{"lineNumber":171,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":172,"author":{"gitId":"cheahTJ"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":173,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(\"I\u0027m not sure which task you wish to delete. Please specify the task you want to delete and try again!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":174,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":175,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":176,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":177,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":178,"author":{"gitId":"cheahTJ"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"cheahTJ":178}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cheahTJ"},"content":"public class Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"cheahTJ"},"content":" protected String description;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"cheahTJ"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"cheahTJ"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"cheahTJ"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"cheahTJ"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"cheahTJ"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"cheahTJ"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"cheahTJ"},"content":" // When a user wishes to mark a task as completed","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"cheahTJ"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"cheahTJ"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"cheahTJ"},"content":" // When user wishes to un-mark a certain task","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"cheahTJ"},"content":" public void uncheckingTask() {","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"cheahTJ"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"cheahTJ"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"cheahTJ"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"cheahTJ"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"cheahTJ"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"cheahTJ":27}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cheahTJ"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"cheahTJ"},"content":"public class TaskList {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"cheahTJ"},"content":" ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"cheahTJ"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"cheahTJ"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"cheahTJ"},"content":" public TaskList() {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"cheahTJ"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"cheahTJ"},"content":" public int getTaskSize() {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"cheahTJ"},"content":" return this.tasks.size();","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"cheahTJ"},"content":" public void updateTaskToStorage(fileStorage fs) throws myBotException {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"cheahTJ"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"cheahTJ"},"content":" fs.updateFile(this.tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"cheahTJ"},"content":" } catch (myBotException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"cheahTJ"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"cheahTJ"},"content":" this.tasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"cheahTJ"},"content":" public void removeTask(int taskNumber) {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"cheahTJ"},"content":" this.tasks.remove(taskNumber);","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"cheahTJ"},"content":" public String taskToString(int taskNumber) {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"cheahTJ"},"content":" return this.tasks.get(taskNumber).toString();","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"cheahTJ"},"content":" public String taskStatusIcon(int taskNumber) {","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"cheahTJ"},"content":" return this.tasks.get(taskNumber).getStatusIcon();","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"cheahTJ"},"content":" public void taskMarkAsDone(int taskNumber) {","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"cheahTJ"},"content":" this.tasks.get(taskNumber).markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"cheahTJ"},"content":" public void taskUncheckTask(int taskNumber) {","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"cheahTJ"},"content":" this.tasks.get(taskNumber).uncheckingTask();","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"cheahTJ"},"content":" public void listTask() {","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"cheahTJ"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"cheahTJ"},"content":" if (tasks.get(i) \u003d\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"cheahTJ"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"cheahTJ"},"content":" int taskNumber \u003d i + 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"cheahTJ"},"content":" System.out.println(taskNumber + \".\" + tasks.get(i).toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"cheahTJ"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"cheahTJ":58}},{"path":"src/main/java/ToDos.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cheahTJ"},"content":"public class ToDos extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"cheahTJ"},"content":" public ToDos(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"cheahTJ"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"cheahTJ"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"cheahTJ"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"cheahTJ"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"cheahTJ"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"cheahTJ":10}},{"path":"src/main/java/UI.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cheahTJ"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"cheahTJ"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"cheahTJ"},"content":"public class UI {","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"cheahTJ"},"content":" private final Scanner sc;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"cheahTJ"},"content":" public UI() {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"cheahTJ"},"content":" this.sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"cheahTJ"},"content":" public void showWelcome() {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"cheahTJ"},"content":" String greetingMsg \u003d \"Hello! I\u0027m PingMeBot\\n\" + \"What can I do for you?\";","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"cheahTJ"},"content":" System.out.println(greetingMsg);","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"cheahTJ"},"content":" public void sayGoodbye() {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"cheahTJ"},"content":" String exitMsg \u003d \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"cheahTJ"},"content":" System.out.println(\"\\n\" + exitMsg);","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"cheahTJ"},"content":" public void listText() {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"cheahTJ"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"cheahTJ"},"content":" public String readCommand() {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"cheahTJ"},"content":" return this.sc.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"cheahTJ"},"content":" public void additionToTasksText(Task task, TaskList allTasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"cheahTJ"},"content":" String toUserUponAddition \u003d \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"cheahTJ"},"content":" toUserUponAddition +\u003d (\"\\n\" + \"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"cheahTJ"},"content":" toUserUponAddition +\u003d \"\\n\" + \" \" + task.toString();","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"cheahTJ"},"content":" toUserUponAddition +\u003d \"\\n\" + \"Now you have \" + allTasks.getTaskSize() + \" tasks in the list.\";","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"cheahTJ"},"content":" System.out.println(toUserUponAddition);","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"cheahTJ"},"content":" public void deletionToTasksText(int taskNumber, TaskList allTasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"cheahTJ"},"content":" String toUserUponDeletion \u003d \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"cheahTJ"},"content":" toUserUponDeletion +\u003d \"Noted. I\u0027ve removed this task:\";","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"cheahTJ"},"content":" toUserUponDeletion +\u003d \"\\n\" + \" \" + allTasks.taskToString(taskNumber);","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"cheahTJ"},"content":" allTasks.removeTask(taskNumber);","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"cheahTJ"},"content":" toUserUponDeletion +\u003d \"\\n\" + \"Now you have \" + allTasks.getTaskSize() + \" tasks in the list.\";","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"cheahTJ"},"content":" System.out.println(toUserUponDeletion);","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"cheahTJ"},"content":" public void markTaskText(int taskNum, TaskList allTasks) throws myBotException {","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"cheahTJ"},"content":" String toUserUponMarkingTask \u003d \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"cheahTJ"},"content":" if (allTasks.taskStatusIcon(taskNum).equals(\"X\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(\"You cannot mark task again which has been completed!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"cheahTJ"},"content":" allTasks.taskMarkAsDone(taskNum);","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"cheahTJ"},"content":" toUserUponMarkingTask +\u003d \"Nice! I\u0027ve marked this task as done:\";","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"cheahTJ"},"content":" toUserUponMarkingTask +\u003d \"\\n\" + \" \" + allTasks.taskToString(taskNum);","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"cheahTJ"},"content":" System.out.println(toUserUponMarkingTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"cheahTJ"},"content":" public void unmarkTaskText(int taskNum, TaskList allTasks) throws myBotException {","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"cheahTJ"},"content":" String toUserUponUnmarkingTask \u003d \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"cheahTJ"},"content":" if (allTasks.taskStatusIcon(taskNum).equals(\" \")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(\"You cannot un-mark task which has not been marked!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"cheahTJ"},"content":" allTasks.taskUncheckTask(taskNum);","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"cheahTJ"},"content":" toUserUponUnmarkingTask +\u003d \"OK, I\u0027ve marked this task as not done yet:\";","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"cheahTJ"},"content":" toUserUponUnmarkingTask +\u003d \"\\n\" + \" \" + allTasks.taskToString(taskNum);","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"cheahTJ"},"content":" System.out.println(toUserUponUnmarkingTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"cheahTJ"},"content":" public void showError(String errorMessage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"cheahTJ"},"content":" System.out.println(errorMessage);","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"cheahTJ"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"cheahTJ":76}},{"path":"src/main/java/fileStorage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cheahTJ"},"content":"import java.io.File;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"cheahTJ"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"cheahTJ"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"cheahTJ"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"cheahTJ"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"cheahTJ"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"cheahTJ"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"cheahTJ"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"cheahTJ"},"content":"public class fileStorage {","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"cheahTJ"},"content":" protected File myFile;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"cheahTJ"},"content":" protected String filePath;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"cheahTJ"},"content":" public fileStorage(String filePath) throws myBotException {","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"cheahTJ"},"content":" this.myFile \u003d new File(filePath);","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"cheahTJ"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"cheahTJ"},"content":" if (!myFile.exists()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"cheahTJ"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"cheahTJ"},"content":" if (this.myFile.getParentFile().mkdirs()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"cheahTJ"},"content":" System.out.println(\"Directory has been successfully created\");","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"cheahTJ"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"cheahTJ"},"content":" System.out.println(\"Error creating directory...\");","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"cheahTJ"},"content":" if (this.myFile.createNewFile()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"cheahTJ"},"content":" System.out.println(\"File has been successfully created\");","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"cheahTJ"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"cheahTJ"},"content":" System.out.println(\"Error creating file...\");","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"cheahTJ"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"cheahTJ"},"content":" public ArrayList\u003cTask\u003e bootingUp() throws myBotException {","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"cheahTJ"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"cheahTJ"},"content":" if (this.myFile.length() \u003d\u003d 0) {","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"cheahTJ"},"content":" tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"cheahTJ"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"cheahTJ"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"cheahTJ"},"content":" Scanner sc \u003d new Scanner(this.myFile);","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"cheahTJ"},"content":" while (sc.hasNextLine()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"cheahTJ"},"content":" String text \u003d sc.nextLine();","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"cheahTJ"},"content":" String[] segmentedText \u003d text.split(\"\\\\|\");","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"cheahTJ"},"content":" if (segmentedText[0].trim().equals(\"todo\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"cheahTJ"},"content":" // Format for Todo: T | 1/0 | read book","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"cheahTJ"},"content":" int isTaskCompleted \u003d Integer.parseInt(segmentedText[1].trim());","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"cheahTJ"},"content":" String description \u003d segmentedText[2].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"cheahTJ"},"content":" ToDos todo \u003d new ToDos(description);","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"cheahTJ"},"content":" if (isTaskCompleted \u003d\u003d 1) {","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"cheahTJ"},"content":" todo.markAsDone();","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"cheahTJ"},"content":" tasks.add(todo);","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"cheahTJ"},"content":" } else if (segmentedText[0].trim().equals(\"deadline\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"cheahTJ"},"content":" // Format for Deadline: D | 1/0 | read book | Date/Time","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"cheahTJ"},"content":" int isTaskCompleted \u003d Integer.parseInt(segmentedText[1].trim());","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"cheahTJ"},"content":" String description \u003d segmentedText[2].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"cheahTJ"},"content":" String deadlineTime \u003d segmentedText[3].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"cheahTJ"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy HHmm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"cheahTJ"},"content":" LocalDateTime parsedDateTime \u003d LocalDateTime.parse(deadlineTime, formatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"cheahTJ"},"content":" Deadline deadline \u003d new Deadline(description, parsedDateTime);","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"cheahTJ"},"content":" if (isTaskCompleted \u003d\u003d 1) {","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"cheahTJ"},"content":" deadline.markAsDone();","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"cheahTJ"},"content":" tasks.add(deadline);","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"cheahTJ"},"content":" } else if (segmentedText[0].trim().equals(\"event\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"cheahTJ"},"content":" // Format for Event: E | 1/0 | read book | Date/Time(from) | Date/Time(To)","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"cheahTJ"},"content":" int isTaskCompleted \u003d Integer.parseInt(segmentedText[1].trim());","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"cheahTJ"},"content":" String description \u003d segmentedText[2].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"cheahTJ"},"content":" String from \u003d \" \" + segmentedText[3].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"cheahTJ"},"content":" String to \u003d \" \" + segmentedText[4].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"cheahTJ"},"content":" Events event \u003d new Events(description,from,to);","lastModifiedDate":"2024-01-28"},{"lineNumber":79,"author":{"gitId":"cheahTJ"},"content":" if (isTaskCompleted \u003d\u003d 1) {","lastModifiedDate":"2024-01-28"},{"lineNumber":80,"author":{"gitId":"cheahTJ"},"content":" event.markAsDone();","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"cheahTJ"},"content":" tasks.add(event);","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"cheahTJ"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(\"Weird expression found!\");","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":90,"author":{"gitId":"cheahTJ"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":91,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":92,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":93,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":94,"author":{"gitId":"cheahTJ"},"content":" return tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":95,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":96,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":97,"author":{"gitId":"cheahTJ"},"content":" public void updateFile(ArrayList\u003cTask\u003e tasks) throws myBotException {","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"cheahTJ"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":99,"author":{"gitId":"cheahTJ"},"content":" FileWriter fw \u003d new FileWriter(this.filePath);","lastModifiedDate":"2024-01-28"},{"lineNumber":100,"author":{"gitId":"cheahTJ"},"content":" for (Task t : tasks) {","lastModifiedDate":"2024-01-28"},{"lineNumber":101,"author":{"gitId":"cheahTJ"},"content":" int isCompleted \u003d t.isDone ? 1 : 0;","lastModifiedDate":"2024-01-28"},{"lineNumber":102,"author":{"gitId":"cheahTJ"},"content":" if (t instanceof ToDos) {","lastModifiedDate":"2024-01-28"},{"lineNumber":103,"author":{"gitId":"cheahTJ"},"content":" String toWrite \u003d \"todo | \" + isCompleted + \" | \" + t.description;","lastModifiedDate":"2024-01-28"},{"lineNumber":104,"author":{"gitId":"cheahTJ"},"content":" fw.write(toWrite + System.lineSeparator());","lastModifiedDate":"2024-01-28"},{"lineNumber":105,"author":{"gitId":"cheahTJ"},"content":" } else if (t instanceof Deadline) {","lastModifiedDate":"2024-01-28"},{"lineNumber":106,"author":{"gitId":"cheahTJ"},"content":" String toWrite \u003d \"deadline | \" + isCompleted + \" | \" + t.description + \" | \" + ((Deadline) t).by.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy HHmm\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":107,"author":{"gitId":"cheahTJ"},"content":" fw.write(toWrite + System.lineSeparator());","lastModifiedDate":"2024-01-28"},{"lineNumber":108,"author":{"gitId":"cheahTJ"},"content":" } else if (t instanceof Events) {","lastModifiedDate":"2024-01-28"},{"lineNumber":109,"author":{"gitId":"cheahTJ"},"content":" String toWrite \u003d \"event | \" + isCompleted + \" | \" + t.description + \" | \" + ((Events) t).start + \" | \" + ((Events) t).end;","lastModifiedDate":"2024-01-28"},{"lineNumber":110,"author":{"gitId":"cheahTJ"},"content":" fw.write(toWrite + System.lineSeparator());","lastModifiedDate":"2024-01-28"},{"lineNumber":111,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":112,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":113,"author":{"gitId":"cheahTJ"},"content":" fw.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":114,"author":{"gitId":"cheahTJ"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":115,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(\"There is not file to be updated!\");","lastModifiedDate":"2024-01-28"},{"lineNumber":116,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":117,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":118,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":119,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":120,"author":{"gitId":"cheahTJ"},"content":"}","lastModifiedDate":"2024-01-28"},{"lineNumber":121,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":122,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"cheahTJ":122}},{"path":"src/main/java/myBotException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cheahTJ"},"content":"public class myBotException extends Exception {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"cheahTJ"},"content":" protected String message;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"cheahTJ"},"content":" public myBotException(String message) {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"cheahTJ"},"content":" super(message);","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"cheahTJ"},"content":" this.message \u003d message;","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"cheahTJ"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"cheahTJ":7}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"cheahTJ"},"content":"todo borrow book","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"cheahTJ"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"cheahTJ"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"cheahTJ"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"cheahTJ"},"content":"mark 2","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"cheahTJ"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"cheahTJ"},"content":"unmark 2","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"cheahTJ"},"content":"list","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"cheahTJ":8}}] diff --git a/cheahTJ_ip_master/commits.json b/cheahTJ_ip_master/commits.json index c17fcc31..7a13a90d 100644 --- a/cheahTJ_ip_master/commits.json +++ b/cheahTJ_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"cheahTJ":[{"date":"2024-01-21","commitResults":[{"hash":"a5fa7a09aac34a6e0959092167f9b9ea3919754e","isMergeCommit":false,"messageTitle":"Renamed bot, added greeting and exit msgs","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":6}}},{"hash":"760c2753cd626dc800b05b9ea5276f802594afa7","isMergeCommit":false,"messageTitle":"Added echoing feature","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":1}}},{"hash":"867a5a216af01e9684fecbad78bf882af0e4ec30","isMergeCommit":false,"messageTitle":"Added storage of tasks","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":3}}}]},{"date":"2024-01-22","commitResults":[{"hash":"8f0bbe3c49d53357c70be67b866ec8b36127f62d","isMergeCommit":false,"messageTitle":"Added Task class and the ability to mark/unmark tasks","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":50,"deletions":6}}},{"hash":"a000bc20212b52cc16cc611f6547e777dd48e475","isMergeCommit":false,"messageTitle":"Added ToDo, Events, Deadlines classes. Also added parser class to deal with user inputs","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":122,"deletions":5}}}]},{"date":"2024-01-23","commitResults":[{"hash":"e04d704cd9ac2bfc54c2c40b8c574773154be374","isMergeCommit":false,"messageTitle":"Added input and expected output for TextUiTesting","messageBody":"","tags":["Level-A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0}}},{"hash":"650312a57346c9353d5e61688ff2d9d167354216","isMergeCommit":false,"messageTitle":"Added a custom exception class and also handling all sorts of user incorrect/incomplete inputs","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":148,"deletions":35}}},{"hash":"f0949e0afb491475332597386190992cebe7105f","isMergeCommit":false,"messageTitle":"Added the delete feature, and deal with its corresponding possible error from user","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":59,"deletions":31}}}]},{"date":"2024-01-28","commitResults":[{"hash":"7bfe55323fde9880fd16660ab6d7691f7bfda796","isMergeCommit":false,"messageTitle":"Save and load data from the hard disk","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":138,"deletions":6}}},{"hash":"63b25f96897bdd625364068fda6da87cb2a1057b","isMergeCommit":false,"messageTitle":"Make Deadline object take in and output formatted DateTime object","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":8}}}]}]},"authorFileTypeContributionMap":{"cheahTJ":{"java":482,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":8}},"authorContributionVariance":{"cheahTJ":9955.439},"authorDisplayNameMap":{"cheahTJ":"CS2103T-T15-2 CHEA..JUEN"}} +{"authorDailyContributionsMap":{"cheahTJ":[{"date":"2024-01-21","commitResults":[{"hash":"a5fa7a09aac34a6e0959092167f9b9ea3919754e","isMergeCommit":false,"messageTitle":"Renamed bot, added greeting and exit msgs","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":6}}},{"hash":"760c2753cd626dc800b05b9ea5276f802594afa7","isMergeCommit":false,"messageTitle":"Added echoing feature","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":1}}},{"hash":"867a5a216af01e9684fecbad78bf882af0e4ec30","isMergeCommit":false,"messageTitle":"Added storage of tasks","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":3}}}]},{"date":"2024-01-22","commitResults":[{"hash":"8f0bbe3c49d53357c70be67b866ec8b36127f62d","isMergeCommit":false,"messageTitle":"Added Task class and the ability to mark/unmark tasks","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":50,"deletions":6}}},{"hash":"a000bc20212b52cc16cc611f6547e777dd48e475","isMergeCommit":false,"messageTitle":"Added ToDo, Events, Deadlines classes. Also added parser class to deal with user inputs","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":122,"deletions":5}}}]},{"date":"2024-01-23","commitResults":[{"hash":"e04d704cd9ac2bfc54c2c40b8c574773154be374","isMergeCommit":false,"messageTitle":"Added input and expected output for TextUiTesting","messageBody":"","tags":["Level-A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0}}},{"hash":"650312a57346c9353d5e61688ff2d9d167354216","isMergeCommit":false,"messageTitle":"Added a custom exception class and also handling all sorts of user incorrect/incomplete inputs","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":148,"deletions":35}}},{"hash":"f0949e0afb491475332597386190992cebe7105f","isMergeCommit":false,"messageTitle":"Added the delete feature, and deal with its corresponding possible error from user","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":59,"deletions":31}}}]},{"date":"2024-01-28","commitResults":[{"hash":"7bfe55323fde9880fd16660ab6d7691f7bfda796","isMergeCommit":false,"messageTitle":"Save and load data from the hard disk","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":138,"deletions":6}}},{"hash":"63b25f96897bdd625364068fda6da87cb2a1057b","isMergeCommit":false,"messageTitle":"Make Deadline object take in and output formatted DateTime object","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":8}}}]},{"date":"2024-01-30","commitResults":[{"hash":"6917d00abeded7bdb9ec8eca72dcd3cc2da1a594","isMergeCommit":false,"messageTitle":"Introduce more classes to OOP the app","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":232,"deletions":119}}}]}]},"authorFileTypeContributionMap":{"cheahTJ":{"java":595,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":8}},"authorContributionVariance":{"cheahTJ":15016.742},"authorDisplayNameMap":{"cheahTJ":"CS2103T-T15-2 CHEA..JUEN"}} diff --git a/cyqjoseph_ip_master/authorship.json b/cyqjoseph_ip_master/authorship.json index 75282636..0e3a6c03 100644 --- a/cyqjoseph_ip_master/authorship.json +++ b/cyqjoseph_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"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":"cyqjoseph"},"content":" mainClass.set(\"Duke\")","lastModifiedDate":"2024-01-26"},{"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":{"cyqjoseph":1,"-":41}},{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"T | 0 | test1","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"T | 1 | test2","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"T | 0 | Have Dinner","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"E | 0 | lunch meeting | 2023-01-05T12:00 to 2023-01-05T14:00","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"E | 0 | project meeting | 2023-05-23T00:00 to 2024-07-01T00:00","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"E | 0 | project meeting | 2023-05-23T00:00 to 2025-07-01T00:00","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"cyqjoseph":6}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":" RoeBot bot \u003d new RoeBot();","lastModifiedDate":"2024-01-19"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":" bot.start();","lastModifiedDate":"2024-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"cyqjoseph":2,"-":4}},{"path":"src/main/java/RoeBot.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"import commands.Command;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"import services.parser.Parser;","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import services.Storage;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import services.TaskList;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import services.UI;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":" * Represents a RoeBot.","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":"public class RoeBot {","lastModifiedDate":"2024-01-19"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" private Storage storage;","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" private TaskList taskList;","lastModifiedDate":"2024-01-19"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" private UI ui;","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" private Parser parser;","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" public RoeBot() {","lastModifiedDate":"2024-01-19"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" this.storage \u003d new Storage();","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" this.taskList \u003d new TaskList();","lastModifiedDate":"2024-01-19"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" this.ui \u003d new UI();","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" this.parser \u003d new Parser();","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" public void start() {","lastModifiedDate":"2024-01-19"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" storage.loadTasks(this.taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"FIX THIS ERROR\");","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":" this.ui.printIntroMessage();","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":" String userInput;","lastModifiedDate":"2024-01-19"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":" do {","lastModifiedDate":"2024-01-19"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":" userInput \u003d this.ui.nextCommand();","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"cyqjoseph"},"content":" Command c \u003d this.parser.parseCommand(userInput);","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"cyqjoseph"},"content":" c.execute(taskList, ui, storage);","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"cyqjoseph"},"content":" ui.printHorizontalLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"cyqjoseph"},"content":" } while (!userInput.equals(\"bye\"));","lastModifiedDate":"2024-01-19"},{"lineNumber":39,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":40,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":41,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-19"}],"authorContributionMap":{"cyqjoseph":41}},{"path":"src/main/java/commands/AddDeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package commands;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import services.Storage;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import services.TaskList;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import services.UI;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"import tasks.Deadline;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" * Add Deadline to task list command.","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":"public class AddDeadlineCommand extends Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" private String name;","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" private LocalDateTime by;","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" public AddDeadlineCommand(String name, LocalDateTime by) {","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" public void execute(TaskList taskList, UI ui, Storage storage) {","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" Deadline deadline \u003d new Deadline(this.name, this.by);","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" taskList.addTask(deadline);","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" storage.saveTasks(taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"cyqjoseph":27}},{"path":"src/main/java/commands/AddEventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package commands;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import services.Storage;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import services.TaskList;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import services.UI;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"import tasks.Event;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" * Add Event to task list command.","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":"public class AddEventCommand extends Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" private String name;","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" private LocalDateTime start;","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" private LocalDateTime end;","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" public AddEventCommand(String name, LocalDateTime start, LocalDateTime end) {","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" public void execute(TaskList taskList, UI ui, Storage storage) {","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" Event event \u003d new Event(this.name, this.start, this.end);","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" taskList.addTask(event);","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" storage.saveTasks(taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"cyqjoseph":31}},{"path":"src/main/java/commands/AddTodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package commands;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import services.Storage;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import services.TaskList;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import services.UI;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"import tasks.ToDo;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":" * Add Todo to task list command.","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":"public class AddTodoCommand extends Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" private String name;","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" public AddTodoCommand(String name) {","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" public void execute(TaskList taskList, UI ui, Storage storage) {","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" ToDo todo \u003d new ToDo(this.name);","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" taskList.addTask(todo);","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" storage.saveTasks(taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"cyqjoseph":23}},{"path":"src/main/java/commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package commands;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import services.Storage;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import services.TaskList;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import services.UI;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":" * Represents an executable command as an abstract class.","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"public abstract class Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" public abstract void execute(TaskList taskList, UI ui, Storage storage);","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"cyqjoseph":13}},{"path":"src/main/java/commands/DeleteTaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package commands;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import commands.Command;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import exceptions.DukeException;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import services.Storage;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"import services.TaskList;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"import services.UI;","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":" * Deletes a task from the task list.","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":"public class DeleteTaskCommand extends Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" int index;","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" public DeleteTaskCommand(int index) {","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" public void execute(TaskList taskList, UI ui, Storage storage) {","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" taskList.deleteTask(this.index);","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" storage.saveTasks(taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\tIndex out of range!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"cyqjoseph":27}},{"path":"src/main/java/commands/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package commands;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import commands.Command;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import services.Storage;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import services.TaskList;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"import services.UI;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":" * Exits the program.","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" public void execute(TaskList taskList, UI ui, Storage storage) {","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" ui.printExitMessage();","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"cyqjoseph":17}},{"path":"src/main/java/commands/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package commands;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import exceptions.DukeException;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import services.Storage;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import services.TaskList;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"import services.UI;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":" * Finds a task from the task list.","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" private String name;","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" public FindCommand(String name) {","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" public void execute(TaskList taskList, UI ui, Storage storage) {","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" taskList.findTasks(this.name);","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\tNo task with \" + this.name + \" found\");","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"cyqjoseph":27}},{"path":"src/main/java/commands/InvalidCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package commands;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import commands.Command;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import services.Storage;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import services.TaskList;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"import services.UI;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":" * Represents an invalid command.","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":"public class InvalidCommand extends Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" public String message;","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" public InvalidCommand(String message) {","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" this.message \u003d message;","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" public void execute(TaskList taskList, UI ui, Storage storage) {","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" ui.printMessage(this.message);","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"cyqjoseph":21}},{"path":"src/main/java/commands/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package commands;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import commands.Command;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import services.Storage;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import services.TaskList;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"import services.UI;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":" * List task list command.","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" public void execute(TaskList taskList, UI ui, Storage storage) {","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" taskList.listTasks();","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"cyqjoseph":17}},{"path":"src/main/java/commands/MarkTaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package commands;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import exceptions.DukeException;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import services.Storage;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"import services.TaskList;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"import services.UI;","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":" * Marks task as done command.","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":"public class MarkTaskCommand extends Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" int index;","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" public MarkTaskCommand(int index) {","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" public void execute(TaskList taskList, UI ui, Storage storage) {","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" taskList.markTask(this.index);","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" storage.saveTasks(taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\tList index out of range\");","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"cyqjoseph":26}},{"path":"src/main/java/commands/UnmarkTaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package commands;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import commands.Command;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import exceptions.DukeException;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import services.Storage;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"import services.TaskList;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"import services.UI;","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":" * Marks tasks as undone command.","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":"public class UnmarkTaskCommand extends Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" int index;","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" public UnmarkTaskCommand(int index) {","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" public void execute(TaskList taskList, UI ui, Storage storage) {","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" taskList.unmarkTask(this.index);","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" storage.saveTasks(taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\tList index out of range\");","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"cyqjoseph":26}},{"path":"src/main/java/exceptions/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package exceptions;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-19"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-19"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":" super(\"\\t\" + message);","lastModifiedDate":"2024-01-19"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-19"}],"authorContributionMap":{"cyqjoseph":7}},{"path":"src/main/java/services/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package services;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import exceptions.DukeException;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import tasks.Task;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import services.parser.Parser;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"import java.io.File;","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":"import java.util.List;","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" * The Storage class is responsible for handling the loading and saving of tasks to a file.","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":"public class Storage {","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" private static final String FILE_PATH \u003d \"./data/duke.txt\";","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" public Storage() {};","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" * Loads tasks from the file at FILE_PATH and adds them to the provided TaskList.","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" * @param taskList The TaskList to which tasks are to be added.","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" * @throws IOException If an error occurs during file reading.","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" public void loadTasks(TaskList taskList) throws IOException {","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" File file \u003d new File(FILE_PATH);","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":" Scanner scanner \u003d new Scanner(file);","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":" while (scanner.hasNext()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"cyqjoseph"},"content":" String taskString \u003d scanner.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"cyqjoseph"},"content":" Task task \u003d Parser.parseTaskFromString(taskString);","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"cyqjoseph"},"content":" // MONKEY FIX","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"cyqjoseph"},"content":" taskList.getTasks().add(task);","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"cyqjoseph"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"Error occurred when writing to file\");","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"cyqjoseph"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"Error occurred when parsing file\");","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"cyqjoseph"},"content":" * Saves tasks from the provided TaskList to the file at FILE_PATH.","lastModifiedDate":"2024-01-26"},{"lineNumber":48,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":49,"author":{"gitId":"cyqjoseph"},"content":" * @param taskList The TaskList whose tasks are to be saved.","lastModifiedDate":"2024-01-26"},{"lineNumber":50,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":51,"author":{"gitId":"cyqjoseph"},"content":" public void saveTasks(TaskList taskList) {","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"cyqjoseph"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"cyqjoseph"},"content":" File file \u003d new File(FILE_PATH);","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"cyqjoseph"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"cyqjoseph"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"cyqjoseph"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"cyqjoseph"},"content":" FileWriter fileWriter \u003d new FileWriter(file);","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"cyqjoseph"},"content":" for (Task task: taskList.getTasks()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"cyqjoseph"},"content":" fileWriter.write(task.fileString() + \"\\n\");","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"cyqjoseph"},"content":" fileWriter.close();","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"cyqjoseph"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"Error occurred when writing to file\");","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"cyqjoseph":67}},{"path":"src/main/java/services/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package services;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import exceptions.DukeException;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import tasks.Task;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import services.parser.Parser;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-19"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"import java.util.List;","lastModifiedDate":"2024-01-19"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"import java.io.File;","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" * The TaskList class manages a list of tasks, allowing for adding, deleting, marking, and unmarking tasks.","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":"public class TaskList {","lastModifiedDate":"2024-01-19"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" private static final int MAX_ITEMS \u003d 100;","lastModifiedDate":"2024-01-19"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" private List\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-19"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" private final String FILE_PATH \u003d \"./data/duke.txt\";","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" * Constructs a new TaskList.","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" public TaskList() {","lastModifiedDate":"2024-01-19"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-19"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":" * Returns the list of tasks.","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"cyqjoseph"},"content":" * @return List of tasks.","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"cyqjoseph"},"content":" public List\u003cTask\u003e getTasks() {","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"cyqjoseph"},"content":" return this.tasks;","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":40,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":41,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"cyqjoseph"},"content":" * Adds a task to the task list.","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"cyqjoseph"},"content":" * @param task The task to be added.","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"cyqjoseph"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"cyqjoseph"},"content":" this.tasks.add(task);","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\tGot it. I\u0027ve added this task: \");","lastModifiedDate":"2024-01-19"},{"lineNumber":49,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\t\" + this.tasks.get(this.tasks.size() - 1));","lastModifiedDate":"2024-01-19"},{"lineNumber":50,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(","lastModifiedDate":"2024-01-19"},{"lineNumber":51,"author":{"gitId":"cyqjoseph"},"content":" \"\\tNow you have \" + this.tasks.size() + \" task\" +","lastModifiedDate":"2024-01-19"},{"lineNumber":52,"author":{"gitId":"cyqjoseph"},"content":" (this.tasks.size() \u003d\u003d 1 ? \"\" : \"s\") + \" in the list\");","lastModifiedDate":"2024-01-19"},{"lineNumber":53,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":54,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":55,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":56,"author":{"gitId":"cyqjoseph"},"content":" * Deletes a task from the task list based on its index.","lastModifiedDate":"2024-01-26"},{"lineNumber":57,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":58,"author":{"gitId":"cyqjoseph"},"content":" * @param index The index of the task to be deleted.","lastModifiedDate":"2024-01-26"},{"lineNumber":59,"author":{"gitId":"cyqjoseph"},"content":" * @throws DukeException If the index is out of range.","lastModifiedDate":"2024-01-26"},{"lineNumber":60,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":61,"author":{"gitId":"cyqjoseph"},"content":" public void deleteTask(int index) throws DukeException {","lastModifiedDate":"2024-01-19"},{"lineNumber":62,"author":{"gitId":"cyqjoseph"},"content":" if (this.tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-19"},{"lineNumber":63,"author":{"gitId":"cyqjoseph"},"content":" throw new DukeException(\"Task index is out of range.\");","lastModifiedDate":"2024-01-26"},{"lineNumber":64,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":65,"author":{"gitId":"cyqjoseph"},"content":" if (index \u003c\u003d 0 || index \u003e this.tasks.size()) {","lastModifiedDate":"2024-01-19"},{"lineNumber":66,"author":{"gitId":"cyqjoseph"},"content":" throw new DukeException(\"Index out of range\");","lastModifiedDate":"2024-01-19"},{"lineNumber":67,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":68,"author":{"gitId":"cyqjoseph"},"content":" Task deletedTask \u003d this.tasks.remove(index - 1);","lastModifiedDate":"2024-01-19"},{"lineNumber":69,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\tNoted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-19"},{"lineNumber":70,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\t\" + deletedTask.toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(","lastModifiedDate":"2024-01-19"},{"lineNumber":72,"author":{"gitId":"cyqjoseph"},"content":" \"\\tNow you have \" + this.tasks.size() + \" task\" +","lastModifiedDate":"2024-01-19"},{"lineNumber":73,"author":{"gitId":"cyqjoseph"},"content":" (this.tasks.size() \u003d\u003d 1 ? \"\" : \"s\") + \" in the list\");","lastModifiedDate":"2024-01-19"},{"lineNumber":74,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":75,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":76,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":77,"author":{"gitId":"cyqjoseph"},"content":" * Marks a task as done based on its index.","lastModifiedDate":"2024-01-26"},{"lineNumber":78,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":79,"author":{"gitId":"cyqjoseph"},"content":" * @param index The index of the task to be marked as done.","lastModifiedDate":"2024-01-26"},{"lineNumber":80,"author":{"gitId":"cyqjoseph"},"content":" * @throws DukeException If the index is out of range.","lastModifiedDate":"2024-01-26"},{"lineNumber":81,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":82,"author":{"gitId":"cyqjoseph"},"content":" public void markTask(int index) throws DukeException {","lastModifiedDate":"2024-01-19"},{"lineNumber":83,"author":{"gitId":"cyqjoseph"},"content":" if (index \u003c\u003d 0 || index \u003e this.tasks.size()) {","lastModifiedDate":"2024-01-19"},{"lineNumber":84,"author":{"gitId":"cyqjoseph"},"content":" throw new DukeException(\"Task index is out of range.\");","lastModifiedDate":"2024-01-26"},{"lineNumber":85,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":86,"author":{"gitId":"cyqjoseph"},"content":" Task currTask \u003d this.tasks.get(index - 1);","lastModifiedDate":"2024-01-19"},{"lineNumber":87,"author":{"gitId":"cyqjoseph"},"content":" currTask.markAsDone();","lastModifiedDate":"2024-01-19"},{"lineNumber":88,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\tNice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-19"},{"lineNumber":89,"author":{"gitId":"cyqjoseph"},"content":" currTask.toString();","lastModifiedDate":"2024-01-19"},{"lineNumber":90,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":91,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":92,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":93,"author":{"gitId":"cyqjoseph"},"content":" * Unmarks a task (marks as not done) based on its index.","lastModifiedDate":"2024-01-26"},{"lineNumber":94,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":95,"author":{"gitId":"cyqjoseph"},"content":" * @param index The index of the task to be unmarked.","lastModifiedDate":"2024-01-26"},{"lineNumber":96,"author":{"gitId":"cyqjoseph"},"content":" * @throws DukeException If the index is out of range.","lastModifiedDate":"2024-01-26"},{"lineNumber":97,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":98,"author":{"gitId":"cyqjoseph"},"content":" public void unmarkTask(int index) throws DukeException {","lastModifiedDate":"2024-01-19"},{"lineNumber":99,"author":{"gitId":"cyqjoseph"},"content":" if (index \u003c\u003d 0 || index \u003e this.tasks.size()) {","lastModifiedDate":"2024-01-19"},{"lineNumber":100,"author":{"gitId":"cyqjoseph"},"content":" throw new DukeException(\"Task index is out of range.\");","lastModifiedDate":"2024-01-26"},{"lineNumber":101,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":102,"author":{"gitId":"cyqjoseph"},"content":" Task currTask \u003d this.tasks.get(index - 1);","lastModifiedDate":"2024-01-19"},{"lineNumber":103,"author":{"gitId":"cyqjoseph"},"content":" currTask.markAsUndone();","lastModifiedDate":"2024-01-19"},{"lineNumber":104,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\tOK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-19"},{"lineNumber":105,"author":{"gitId":"cyqjoseph"},"content":" currTask.toString();","lastModifiedDate":"2024-01-19"},{"lineNumber":106,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":107,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":108,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":109,"author":{"gitId":"cyqjoseph"},"content":" * Lists all tasks in the task list.","lastModifiedDate":"2024-01-26"},{"lineNumber":110,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":111,"author":{"gitId":"cyqjoseph"},"content":" public void listTasks() {","lastModifiedDate":"2024-01-19"},{"lineNumber":112,"author":{"gitId":"cyqjoseph"},"content":" if (this.tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-19"},{"lineNumber":113,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\tThe task list is empty.\");","lastModifiedDate":"2024-01-19"},{"lineNumber":114,"author":{"gitId":"cyqjoseph"},"content":" } else {","lastModifiedDate":"2024-01-19"},{"lineNumber":115,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\tHere are the tasks in your list: \");","lastModifiedDate":"2024-01-19"},{"lineNumber":116,"author":{"gitId":"cyqjoseph"},"content":" for (int i \u003d 0; i \u003c this.tasks.size(); i++) {","lastModifiedDate":"2024-01-19"},{"lineNumber":117,"author":{"gitId":"cyqjoseph"},"content":" Task currTask \u003d this.tasks.get(i);","lastModifiedDate":"2024-01-19"},{"lineNumber":118,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\t\" + (i + 1) + \".\" + currTask.toString());","lastModifiedDate":"2024-01-19"},{"lineNumber":119,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":120,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":121,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":122,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":123,"author":{"gitId":"cyqjoseph"},"content":" public List\u003cTask\u003e findTasks(String word) throws DukeException {","lastModifiedDate":"2024-01-26"},{"lineNumber":124,"author":{"gitId":"cyqjoseph"},"content":" Pattern pattern \u003d Pattern.compile(Pattern.quote(word), Pattern.CASE_INSENSITIVE);","lastModifiedDate":"2024-01-26"},{"lineNumber":125,"author":{"gitId":"cyqjoseph"},"content":" List\u003cTask\u003e foundTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-26"},{"lineNumber":126,"author":{"gitId":"cyqjoseph"},"content":" for (Task task : this.tasks) {","lastModifiedDate":"2024-01-24"},{"lineNumber":127,"author":{"gitId":"cyqjoseph"},"content":" Matcher matcher \u003d pattern.matcher(task.getName());","lastModifiedDate":"2024-01-26"},{"lineNumber":128,"author":{"gitId":"cyqjoseph"},"content":" if (matcher.find()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":129,"author":{"gitId":"cyqjoseph"},"content":" foundTasks.add(task);","lastModifiedDate":"2024-01-26"},{"lineNumber":130,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":131,"author":{"gitId":"cyqjoseph"},"content":"\u003c\u003c\u003c\u003c\u003c\u003c\u003c HEAD","lastModifiedDate":"2024-01-26"},{"lineNumber":132,"author":{"gitId":"cyqjoseph"},"content":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-01-26"},{"lineNumber":133,"author":{"gitId":"cyqjoseph"},"content":" Scanner scanner \u003d new Scanner(file);","lastModifiedDate":"2024-01-24"},{"lineNumber":134,"author":{"gitId":"cyqjoseph"},"content":" while (scanner.hasNext()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":135,"author":{"gitId":"cyqjoseph"},"content":" String taskString \u003d scanner.nextLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":136,"author":{"gitId":"cyqjoseph"},"content":" Task currTask \u003d Parser.parseTaskFromString(taskString);","lastModifiedDate":"2024-01-25"},{"lineNumber":137,"author":{"gitId":"cyqjoseph"},"content":" this.tasks.add(currTask);","lastModifiedDate":"2024-01-25"},{"lineNumber":138,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":139,"author":{"gitId":"cyqjoseph"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":140,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"Error occurred when writing to file\");","lastModifiedDate":"2024-01-24"},{"lineNumber":141,"author":{"gitId":"cyqjoseph"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":142,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"Error occurred when parsing file\");","lastModifiedDate":"2024-01-24"},{"lineNumber":143,"author":{"gitId":"cyqjoseph"},"content":"\u003e\u003e\u003e\u003e\u003e\u003e\u003e branch-A-CodingStandard","lastModifiedDate":"2024-01-26"},{"lineNumber":144,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":145,"author":{"gitId":"cyqjoseph"},"content":" if (foundTasks.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-26"},{"lineNumber":146,"author":{"gitId":"cyqjoseph"},"content":" throw new DukeException(\"No tasks with \" + word + \" found\");","lastModifiedDate":"2024-01-26"},{"lineNumber":147,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":148,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":149,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\tHere are the matching tasks in your list: \");","lastModifiedDate":"2024-01-26"},{"lineNumber":150,"author":{"gitId":"cyqjoseph"},"content":" for (int i \u003d 0; i \u003c foundTasks.size(); i++) {","lastModifiedDate":"2024-01-26"},{"lineNumber":151,"author":{"gitId":"cyqjoseph"},"content":" Task currTask \u003d foundTasks.get(i);","lastModifiedDate":"2024-01-26"},{"lineNumber":152,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\t\" + (i + 1) + \".\" + currTask.toString());","lastModifiedDate":"2024-01-26"},{"lineNumber":153,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":154,"author":{"gitId":"cyqjoseph"},"content":" return foundTasks;","lastModifiedDate":"2024-01-26"},{"lineNumber":155,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":156,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-19"}],"authorContributionMap":{"cyqjoseph":156}},{"path":"src/main/java/services/UI.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package services;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"public class UI {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":" private final Scanner scanner;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":" public UI() {","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" public String nextCommand() {","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" return this.scanner.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" public void printIntroMessage() {","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" printHorizontalLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\tHello! I\u0027m RoeBot!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\tWhat can I do for you?\");","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" printHorizontalLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" public void printExitMessage() {","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\tBye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" this.scanner.close();","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" public void printMessage(String message) {","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\t\" + message);","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":" public void printHorizontalLine() {","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\t_________________________________________________\");","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"cyqjoseph":33}},{"path":"src/main/java/services/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package services.parser;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import commands.*;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import exceptions.DukeException;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import tasks.Deadline;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"import tasks.*;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":"import java.util.List;","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" * The Parser class is responsible for interpreting user inputs and converting them into commands.","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" * It handles various types of commands including adding tasks, marking tasks as done or undone,","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" * deleting tasks, and exiting the program.","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":"public class Parser {","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" * Parses the user input to determine the type of command to be executed.","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" * @param userInput The user\u0027s input as a string.","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" * @return Command The command corresponding to the user\u0027s input.","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" public Command parseCommand(String userInput) {","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" String[] parsed \u003d userInput.split(\" \", 2);","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" String initialCommand \u003d parsed[0].toUpperCase();","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":" switch (initialCommand) {","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":" case \"EVENT\":","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":" return parseAddEvent(userInput);","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":" case \"DEADLINE\":","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":" return parseAddDeadline(userInput);","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"cyqjoseph"},"content":" case \"TODO\":","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"cyqjoseph"},"content":" return parseAddTodo(userInput);","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"cyqjoseph"},"content":" case \"MARK\":","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"cyqjoseph"},"content":" return parseMark(userInput);","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"cyqjoseph"},"content":" case \"UNMARK\":","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"cyqjoseph"},"content":" return parseUnmark(userInput);","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"cyqjoseph"},"content":" case \"DELETE\":","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"cyqjoseph"},"content":" return parseDelete(userInput);","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"cyqjoseph"},"content":" case \"FIND\":","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"cyqjoseph"},"content":" return parseFind(userInput);","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"cyqjoseph"},"content":" case \"LIST\":","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"cyqjoseph"},"content":" return new ListCommand();","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"cyqjoseph"},"content":" case \"BYE\":","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"cyqjoseph"},"content":" return new ExitCommand();","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"cyqjoseph"},"content":" default:","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"cyqjoseph"},"content":" // return new HelpCommand();","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"cyqjoseph"},"content":" return new InvalidCommand(\"INVALID\");","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":55,"author":{"gitId":"cyqjoseph"},"content":" * Parses the user input to create an AddEventCommand.","lastModifiedDate":"2024-01-26"},{"lineNumber":56,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":57,"author":{"gitId":"cyqjoseph"},"content":" * @param userInput The user\u0027s input as a string.","lastModifiedDate":"2024-01-26"},{"lineNumber":58,"author":{"gitId":"cyqjoseph"},"content":" * @return Command An AddEventCommand if input is valid, otherwise an InvalidCommand.","lastModifiedDate":"2024-01-26"},{"lineNumber":59,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":60,"author":{"gitId":"cyqjoseph"},"content":" public Command parseAddEvent(String userInput) {","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"cyqjoseph"},"content":" String[] parsed \u003d userInput.split(\" \", 2);","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"cyqjoseph"},"content":" if (parsed.length \u003c\u003d 1 || parsed[1].isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"cyqjoseph"},"content":" return new InvalidCommand(\"OOPS! Please enter a task name\");","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"cyqjoseph"},"content":" String taskDesc \u003d parsed[1];","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"cyqjoseph"},"content":" String[] parsedEvent \u003d taskDesc.split(\" /from | /to \");","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"cyqjoseph"},"content":" if (parsedEvent.length \u003c\u003d 2) {","lastModifiedDate":"2024-01-25"},{"lineNumber":68,"author":{"gitId":"cyqjoseph"},"content":" return new InvalidCommand(\"Please enter valid event format\");","lastModifiedDate":"2024-01-25"},{"lineNumber":69,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"cyqjoseph"},"content":" String eventName \u003d parsedEvent[0];","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"cyqjoseph"},"content":" LocalDateTime start \u003d null;","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"cyqjoseph"},"content":" LocalDateTime end \u003d null;","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"cyqjoseph"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"cyqjoseph"},"content":" start \u003d parseDate(parsedEvent[1]);","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"cyqjoseph"},"content":" end \u003d parseDate(parsedEvent[2]);","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"cyqjoseph"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"cyqjoseph"},"content":" return new InvalidCommand(\"Invalid date format\");","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":79,"author":{"gitId":"cyqjoseph"},"content":" return new AddEventCommand(eventName, start, end);","lastModifiedDate":"2024-01-25"},{"lineNumber":80,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":82,"author":{"gitId":"cyqjoseph"},"content":" * Parses the user input to create an AddDeadlineCommand.","lastModifiedDate":"2024-01-26"},{"lineNumber":83,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":84,"author":{"gitId":"cyqjoseph"},"content":" * @param userInput The user\u0027s input as a string.","lastModifiedDate":"2024-01-26"},{"lineNumber":85,"author":{"gitId":"cyqjoseph"},"content":" * @return Command An AddDeadlineCommand if input is valid, otherwise an InvalidCommand.","lastModifiedDate":"2024-01-26"},{"lineNumber":86,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":87,"author":{"gitId":"cyqjoseph"},"content":" public Command parseAddDeadline(String userInput) {","lastModifiedDate":"2024-01-25"},{"lineNumber":88,"author":{"gitId":"cyqjoseph"},"content":" String[] parsed \u003d userInput.split(\" \", 2);","lastModifiedDate":"2024-01-25"},{"lineNumber":89,"author":{"gitId":"cyqjoseph"},"content":" if (parsed.length \u003c\u003d 1 || parsed[1].isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":90,"author":{"gitId":"cyqjoseph"},"content":" return new InvalidCommand(\"OOPS! Please enter a task name\");","lastModifiedDate":"2024-01-25"},{"lineNumber":91,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":92,"author":{"gitId":"cyqjoseph"},"content":" String taskDesc \u003d parsed[1];","lastModifiedDate":"2024-01-25"},{"lineNumber":93,"author":{"gitId":"cyqjoseph"},"content":" String[] parsedDeadline \u003d taskDesc.split(\" /by \");","lastModifiedDate":"2024-01-25"},{"lineNumber":94,"author":{"gitId":"cyqjoseph"},"content":" if (parsedDeadline.length \u003c\u003d 1) {","lastModifiedDate":"2024-01-25"},{"lineNumber":95,"author":{"gitId":"cyqjoseph"},"content":" return new InvalidCommand(\"Please enter a valid deadline format\");","lastModifiedDate":"2024-01-25"},{"lineNumber":96,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":97,"author":{"gitId":"cyqjoseph"},"content":" String deadlineName \u003d parsedDeadline[0];","lastModifiedDate":"2024-01-25"},{"lineNumber":98,"author":{"gitId":"cyqjoseph"},"content":" LocalDateTime by;","lastModifiedDate":"2024-01-25"},{"lineNumber":99,"author":{"gitId":"cyqjoseph"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":100,"author":{"gitId":"cyqjoseph"},"content":" by \u003d parseDate(parsedDeadline[1]);","lastModifiedDate":"2024-01-25"},{"lineNumber":101,"author":{"gitId":"cyqjoseph"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":102,"author":{"gitId":"cyqjoseph"},"content":" return new InvalidCommand(\"Please enter a valid deadline format!!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":103,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":104,"author":{"gitId":"cyqjoseph"},"content":" return new AddDeadlineCommand(deadlineName, by);","lastModifiedDate":"2024-01-25"},{"lineNumber":105,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":106,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":107,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":108,"author":{"gitId":"cyqjoseph"},"content":" * Parses the user input to create an AddTodoCommand.","lastModifiedDate":"2024-01-26"},{"lineNumber":109,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":110,"author":{"gitId":"cyqjoseph"},"content":" * @param userInput The user\u0027s input as a string.","lastModifiedDate":"2024-01-26"},{"lineNumber":111,"author":{"gitId":"cyqjoseph"},"content":" * @return Command An AddTodoCommand if input is valid, otherwise an InvalidCommand.","lastModifiedDate":"2024-01-26"},{"lineNumber":112,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":113,"author":{"gitId":"cyqjoseph"},"content":" public Command parseAddTodo(String userInput) {","lastModifiedDate":"2024-01-25"},{"lineNumber":114,"author":{"gitId":"cyqjoseph"},"content":" String[] parsed \u003d userInput.split(\" \", 2);","lastModifiedDate":"2024-01-25"},{"lineNumber":115,"author":{"gitId":"cyqjoseph"},"content":" if (parsed.length \u003c\u003d 1 || parsed[1].isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":116,"author":{"gitId":"cyqjoseph"},"content":" return new InvalidCommand(\"OOPS! Please enter a task name\");","lastModifiedDate":"2024-01-25"},{"lineNumber":117,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":118,"author":{"gitId":"cyqjoseph"},"content":" String taskDesc \u003d parsed[1];","lastModifiedDate":"2024-01-25"},{"lineNumber":119,"author":{"gitId":"cyqjoseph"},"content":" return new AddTodoCommand(taskDesc);","lastModifiedDate":"2024-01-25"},{"lineNumber":120,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":121,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":122,"author":{"gitId":"cyqjoseph"},"content":" * Parses the user input to create a DeleteTaskCommand.","lastModifiedDate":"2024-01-26"},{"lineNumber":123,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":124,"author":{"gitId":"cyqjoseph"},"content":" * @param userInput The user\u0027s input as a string.","lastModifiedDate":"2024-01-26"},{"lineNumber":125,"author":{"gitId":"cyqjoseph"},"content":" * @return Command A DeleteTaskCommand if input is valid, otherwise an InvalidCommand.","lastModifiedDate":"2024-01-26"},{"lineNumber":126,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":127,"author":{"gitId":"cyqjoseph"},"content":" public Command parseDelete(String userInput) {","lastModifiedDate":"2024-01-25"},{"lineNumber":128,"author":{"gitId":"cyqjoseph"},"content":" String[] parsed \u003d userInput.split(\" \", 2);","lastModifiedDate":"2024-01-25"},{"lineNumber":129,"author":{"gitId":"cyqjoseph"},"content":" if (parsed.length \u003c\u003d 1 || parsed[1].isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":130,"author":{"gitId":"cyqjoseph"},"content":" return new InvalidCommand(\"OOPS! Please enter an index\");","lastModifiedDate":"2024-01-25"},{"lineNumber":131,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":132,"author":{"gitId":"cyqjoseph"},"content":" int index \u003d Integer.parseInt(parsed[1]);","lastModifiedDate":"2024-01-25"},{"lineNumber":133,"author":{"gitId":"cyqjoseph"},"content":" return new DeleteTaskCommand(index);","lastModifiedDate":"2024-01-25"},{"lineNumber":134,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":135,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":136,"author":{"gitId":"cyqjoseph"},"content":" * Parses the user input to create a UnmarkTaskCommand.","lastModifiedDate":"2024-01-26"},{"lineNumber":137,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":138,"author":{"gitId":"cyqjoseph"},"content":" * @param userInput The user\u0027s input as a string.","lastModifiedDate":"2024-01-26"},{"lineNumber":139,"author":{"gitId":"cyqjoseph"},"content":" * @return Command A UnmarkTaskCommand if input is valid, otherwise an InvalidCommand.","lastModifiedDate":"2024-01-26"},{"lineNumber":140,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":141,"author":{"gitId":"cyqjoseph"},"content":" public Command parseUnmark(String userInput) {","lastModifiedDate":"2024-01-26"},{"lineNumber":142,"author":{"gitId":"cyqjoseph"},"content":" String[] parsed \u003d userInput.split(\" \", 2);","lastModifiedDate":"2024-01-25"},{"lineNumber":143,"author":{"gitId":"cyqjoseph"},"content":" if (parsed.length \u003c\u003d 1 || parsed[1].isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":144,"author":{"gitId":"cyqjoseph"},"content":" return new InvalidCommand(\"OOPS! Please enter an index\");","lastModifiedDate":"2024-01-25"},{"lineNumber":145,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":146,"author":{"gitId":"cyqjoseph"},"content":" int index \u003d Integer.parseInt(parsed[1]);","lastModifiedDate":"2024-01-25"},{"lineNumber":147,"author":{"gitId":"cyqjoseph"},"content":" return new UnmarkTaskCommand(index);","lastModifiedDate":"2024-01-25"},{"lineNumber":148,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":149,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":150,"author":{"gitId":"cyqjoseph"},"content":" * Parses the user input to create a MarkTaskCommand.","lastModifiedDate":"2024-01-26"},{"lineNumber":151,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":152,"author":{"gitId":"cyqjoseph"},"content":" * @param userInput The user\u0027s input as a string.","lastModifiedDate":"2024-01-26"},{"lineNumber":153,"author":{"gitId":"cyqjoseph"},"content":" * @return Command A MarkTaskCommand if input is valid, otherwise an InvalidCommand.","lastModifiedDate":"2024-01-26"},{"lineNumber":154,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":155,"author":{"gitId":"cyqjoseph"},"content":" public Command parseMark(String userInput) {","lastModifiedDate":"2024-01-26"},{"lineNumber":156,"author":{"gitId":"cyqjoseph"},"content":" String[] parsed \u003d userInput.split(\" \", 2);","lastModifiedDate":"2024-01-25"},{"lineNumber":157,"author":{"gitId":"cyqjoseph"},"content":" if (parsed.length \u003c\u003d 1 || parsed[1].isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":158,"author":{"gitId":"cyqjoseph"},"content":" return new InvalidCommand(\"OOPS! Please enter an index\");","lastModifiedDate":"2024-01-25"},{"lineNumber":159,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":160,"author":{"gitId":"cyqjoseph"},"content":" int index \u003d Integer.parseInt(parsed[1]);","lastModifiedDate":"2024-01-25"},{"lineNumber":161,"author":{"gitId":"cyqjoseph"},"content":" return new MarkTaskCommand(index);","lastModifiedDate":"2024-01-25"},{"lineNumber":162,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":163,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":164,"author":{"gitId":"cyqjoseph"},"content":" * Parses the user input to create an FindCommand.","lastModifiedDate":"2024-01-26"},{"lineNumber":165,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":166,"author":{"gitId":"cyqjoseph"},"content":" * @param userInput The user\u0027s input as a string.","lastModifiedDate":"2024-01-26"},{"lineNumber":167,"author":{"gitId":"cyqjoseph"},"content":" * @return Command A FindCommand if input is valid, otherwise an InvalidCommand.","lastModifiedDate":"2024-01-26"},{"lineNumber":168,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":169,"author":{"gitId":"cyqjoseph"},"content":" public Command parseFind(String userInput) {","lastModifiedDate":"2024-01-26"},{"lineNumber":170,"author":{"gitId":"cyqjoseph"},"content":" String[] parsed \u003d userInput.split(\" \", 2);","lastModifiedDate":"2024-01-26"},{"lineNumber":171,"author":{"gitId":"cyqjoseph"},"content":" if (parsed.length \u003c\u003d 1 || parsed[1].isEmpty()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":172,"author":{"gitId":"cyqjoseph"},"content":" return new InvalidCommand(\"OOPS! Please enter an task to find\");","lastModifiedDate":"2024-01-26"},{"lineNumber":173,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":174,"author":{"gitId":"cyqjoseph"},"content":" return new FindCommand(parsed[1]);","lastModifiedDate":"2024-01-26"},{"lineNumber":175,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":176,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":177,"author":{"gitId":"cyqjoseph"},"content":" ","lastModifiedDate":"2024-01-25"},{"lineNumber":178,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":179,"author":{"gitId":"cyqjoseph"},"content":" * Parses a date string into a LocalDateTime object.","lastModifiedDate":"2024-01-26"},{"lineNumber":180,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":181,"author":{"gitId":"cyqjoseph"},"content":" * @param dateString The date string to parse.","lastModifiedDate":"2024-01-26"},{"lineNumber":182,"author":{"gitId":"cyqjoseph"},"content":" * @return LocalDateTime The parsed LocalDateTime object.","lastModifiedDate":"2024-01-26"},{"lineNumber":183,"author":{"gitId":"cyqjoseph"},"content":" * @throws DukeException If the date string cannot be parsed into a valid date and time.","lastModifiedDate":"2024-01-26"},{"lineNumber":184,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":185,"author":{"gitId":"cyqjoseph"},"content":" public LocalDateTime parseDate(String dateString) throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":186,"author":{"gitId":"cyqjoseph"},"content":" List\u003cDateTimeFormatter\u003e dateTimeFormatters \u003d Arrays.asList(","lastModifiedDate":"2024-01-25"},{"lineNumber":187,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":188,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"d-M-yyyy HHmm\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":189,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"yyyy-M-d HHmm\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":190,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"d/M/yyyy HH:mm\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":191,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"M/d/yyyy h:mm a\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":192,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"yyyy-M-d HHmm\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":193,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"d MMM yyyy h:mma\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":194,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"MMM d, yyyy HH:mm\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":195,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"yyyyMMdd h:mm a\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":196,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"d-M-yyyy HH:mm\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":197,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"yyyy/M/d h:mma\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":198,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"d MMMM yyyy HHmm\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":199,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"yyyy-M-d h:mm a\")","lastModifiedDate":"2024-01-25"},{"lineNumber":200,"author":{"gitId":"cyqjoseph"},"content":" );","lastModifiedDate":"2024-01-25"},{"lineNumber":201,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":202,"author":{"gitId":"cyqjoseph"},"content":" List\u003cDateTimeFormatter\u003e dateFormatters \u003d Arrays.asList(","lastModifiedDate":"2024-01-25"},{"lineNumber":203,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"d/M/yyyy\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":204,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"M/d/yyyy\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":205,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"yyyy/M/d\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":206,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"d-M-yyyy\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":207,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"M-d-yyyy\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":208,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"yyyy-M-d\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":209,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"d MMM yyyy\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":210,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"MMM d, yyyy\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":211,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"d MMMM yyyy\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":212,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"yyyyMMdd\")","lastModifiedDate":"2024-01-25"},{"lineNumber":213,"author":{"gitId":"cyqjoseph"},"content":" );","lastModifiedDate":"2024-01-25"},{"lineNumber":214,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":215,"author":{"gitId":"cyqjoseph"},"content":" for (DateTimeFormatter formatter : dateTimeFormatters) {","lastModifiedDate":"2024-01-25"},{"lineNumber":216,"author":{"gitId":"cyqjoseph"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":217,"author":{"gitId":"cyqjoseph"},"content":" return LocalDateTime.parse(dateString, formatter);","lastModifiedDate":"2024-01-25"},{"lineNumber":218,"author":{"gitId":"cyqjoseph"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":219,"author":{"gitId":"cyqjoseph"},"content":" // Continue to try the next format","lastModifiedDate":"2024-01-25"},{"lineNumber":220,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":221,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":222,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":223,"author":{"gitId":"cyqjoseph"},"content":" for (DateTimeFormatter formatter : dateFormatters) {","lastModifiedDate":"2024-01-25"},{"lineNumber":224,"author":{"gitId":"cyqjoseph"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":225,"author":{"gitId":"cyqjoseph"},"content":" return LocalDate.parse(dateString, formatter).atStartOfDay();","lastModifiedDate":"2024-01-25"},{"lineNumber":226,"author":{"gitId":"cyqjoseph"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":227,"author":{"gitId":"cyqjoseph"},"content":" // Continue to try the next format","lastModifiedDate":"2024-01-25"},{"lineNumber":228,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":229,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":230,"author":{"gitId":"cyqjoseph"},"content":" throw new DukeException(\"Invalid Date and time format\");","lastModifiedDate":"2024-01-25"},{"lineNumber":231,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":232,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":233,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":234,"author":{"gitId":"cyqjoseph"},"content":" * Parses a task string representation from a file into a Task object.","lastModifiedDate":"2024-01-26"},{"lineNumber":235,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":236,"author":{"gitId":"cyqjoseph"},"content":" * @param taskString The string representation of the task.","lastModifiedDate":"2024-01-26"},{"lineNumber":237,"author":{"gitId":"cyqjoseph"},"content":" * @return Task The Task object parsed from the string.","lastModifiedDate":"2024-01-26"},{"lineNumber":238,"author":{"gitId":"cyqjoseph"},"content":" * @throws DukeException If the task string cannot be parsed into a valid task.","lastModifiedDate":"2024-01-26"},{"lineNumber":239,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":240,"author":{"gitId":"cyqjoseph"},"content":" public static Task parseTaskFromString(String taskString) throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":241,"author":{"gitId":"cyqjoseph"},"content":" String[] parts \u003d taskString.split(\" \\\\| \");","lastModifiedDate":"2024-01-25"},{"lineNumber":242,"author":{"gitId":"cyqjoseph"},"content":" String taskType \u003d parts[0];","lastModifiedDate":"2024-01-25"},{"lineNumber":243,"author":{"gitId":"cyqjoseph"},"content":" boolean isDone \u003d parts[1].trim().equals(\"1\");","lastModifiedDate":"2024-01-25"},{"lineNumber":244,"author":{"gitId":"cyqjoseph"},"content":" String description \u003d parts[2].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":245,"author":{"gitId":"cyqjoseph"},"content":" String additionalInfo \u003d parts.length \u003e 3 ? parts[3].trim() : null;","lastModifiedDate":"2024-01-25"},{"lineNumber":246,"author":{"gitId":"cyqjoseph"},"content":" switch (taskType) {","lastModifiedDate":"2024-01-25"},{"lineNumber":247,"author":{"gitId":"cyqjoseph"},"content":" case \"T\":","lastModifiedDate":"2024-01-25"},{"lineNumber":248,"author":{"gitId":"cyqjoseph"},"content":" ToDo todo \u003d new ToDo(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":249,"author":{"gitId":"cyqjoseph"},"content":" if (isDone) {","lastModifiedDate":"2024-01-26"},{"lineNumber":250,"author":{"gitId":"cyqjoseph"},"content":" todo.markAsDone();","lastModifiedDate":"2024-01-26"},{"lineNumber":251,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":252,"author":{"gitId":"cyqjoseph"},"content":" return todo;","lastModifiedDate":"2024-01-25"},{"lineNumber":253,"author":{"gitId":"cyqjoseph"},"content":" case \"D\":","lastModifiedDate":"2024-01-25"},{"lineNumber":254,"author":{"gitId":"cyqjoseph"},"content":" if (additionalInfo \u003d\u003d null) {","lastModifiedDate":"2024-01-25"},{"lineNumber":255,"author":{"gitId":"cyqjoseph"},"content":" throw new DukeException(\"Invalid tasks.Deadline format in file\");","lastModifiedDate":"2024-01-25"},{"lineNumber":256,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":257,"author":{"gitId":"cyqjoseph"},"content":" LocalDateTime by \u003d LocalDateTime.parse(additionalInfo);","lastModifiedDate":"2024-01-25"},{"lineNumber":258,"author":{"gitId":"cyqjoseph"},"content":" Deadline deadline \u003d new Deadline(description, by);","lastModifiedDate":"2024-01-25"},{"lineNumber":259,"author":{"gitId":"cyqjoseph"},"content":" if (isDone) {","lastModifiedDate":"2024-01-26"},{"lineNumber":260,"author":{"gitId":"cyqjoseph"},"content":" deadline.markAsDone();","lastModifiedDate":"2024-01-26"},{"lineNumber":261,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":262,"author":{"gitId":"cyqjoseph"},"content":" return deadline;","lastModifiedDate":"2024-01-25"},{"lineNumber":263,"author":{"gitId":"cyqjoseph"},"content":" case \"E\":","lastModifiedDate":"2024-01-25"},{"lineNumber":264,"author":{"gitId":"cyqjoseph"},"content":" String[] times \u003d additionalInfo.split(\" to \");","lastModifiedDate":"2024-01-25"},{"lineNumber":265,"author":{"gitId":"cyqjoseph"},"content":" if (times.length \u003c 2) {","lastModifiedDate":"2024-01-25"},{"lineNumber":266,"author":{"gitId":"cyqjoseph"},"content":" throw new DukeException(\"Invalid tasks.Event time format in file.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":267,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":268,"author":{"gitId":"cyqjoseph"},"content":" LocalDateTime start \u003d LocalDateTime.parse(times[0].trim());","lastModifiedDate":"2024-01-25"},{"lineNumber":269,"author":{"gitId":"cyqjoseph"},"content":" LocalDateTime end \u003d LocalDateTime.parse(times[1].trim());","lastModifiedDate":"2024-01-25"},{"lineNumber":270,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":271,"author":{"gitId":"cyqjoseph"},"content":" Event event \u003d new Event(description, start, end);","lastModifiedDate":"2024-01-25"},{"lineNumber":272,"author":{"gitId":"cyqjoseph"},"content":" if (isDone) event.markAsDone();","lastModifiedDate":"2024-01-25"},{"lineNumber":273,"author":{"gitId":"cyqjoseph"},"content":" return event;","lastModifiedDate":"2024-01-25"},{"lineNumber":274,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":275,"author":{"gitId":"cyqjoseph"},"content":" default:","lastModifiedDate":"2024-01-25"},{"lineNumber":276,"author":{"gitId":"cyqjoseph"},"content":" return null;","lastModifiedDate":"2024-01-25"},{"lineNumber":277,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":278,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":279,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"cyqjoseph":279}},{"path":"src/main/java/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package tasks;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":" * Represents a Deadline, inherits from Task.","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-19"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":" protected LocalDateTime by;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" public Deadline(String name, LocalDateTime by) {","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" super(name);","lastModifiedDate":"2024-01-19"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-19"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" public String formatBy() {","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" return this.by.format(DateTimeFormatter.ofPattern(\"MMM d yyyy hh:mm a\"));","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-19"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" public String toString() {","lastModifiedDate":"2024-01-19"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" return \"[D]\" + super.toString() + \" (by: \" + formatBy() + \")\";","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" public String fileString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" return \"D \" + super.fileString() + \" | \" + this.by;","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-19"}],"authorContributionMap":{"cyqjoseph":30}},{"path":"src/main/java/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package tasks;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":" * Represents an Event, inherits from Task.","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-19"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":" protected LocalDateTime start;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" protected LocalDateTime end;","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" public Event(String name, LocalDateTime start, LocalDateTime end) {","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" super(name);","lastModifiedDate":"2024-01-19"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-19"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-19"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" public String formatDate(LocalDateTime startEnd) {","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" return startEnd.format(DateTimeFormatter.ofPattern(\"MMM d yyyy hh:mm a\"));","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-19"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" public String toString() {","lastModifiedDate":"2024-01-19"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" return \"[E]\" + super.toString() + \" (from: \" + formatDate(this.start) + \" to: \" + formatDate(this.end) + \")\";","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" public String fileString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":" return \"E \" + super.fileString() + \" | \" + this.start + \" to \" + this.end;","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-19"}],"authorContributionMap":{"cyqjoseph":33}},{"path":"src/main/java/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package tasks;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":" * Represents a Task.","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"public class Task {","lastModifiedDate":"2024-01-19"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-19"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":" private String name;","lastModifiedDate":"2024-01-19"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" public Task(String name) {","lastModifiedDate":"2024-01-19"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-19"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-19"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" public String getName() {","lastModifiedDate":"2024-01-19"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" return this.name;","lastModifiedDate":"2024-01-19"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" public String getStatus() {","lastModifiedDate":"2024-01-19"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" return (this.isDone ? \"X\": \" \");","lastModifiedDate":"2024-01-19"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-19"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-19"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" public void markAsUndone() {","lastModifiedDate":"2024-01-19"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-19"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-19"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":" public String toString() {","lastModifiedDate":"2024-01-19"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":" return \"[\" + getStatus() + \"] \" + this.name;","lastModifiedDate":"2024-01-19"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":35,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"cyqjoseph"},"content":" public String fileString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"cyqjoseph"},"content":" return \"| \" + (this.isDone ? \"1\": \"0\") + \" | \" + this.name;","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-19"}],"authorContributionMap":{"cyqjoseph":39}},{"path":"src/main/java/tasks/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package tasks;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import tasks.Task;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":" * Represents a Todo, inherits from Task.","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-19"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":" public ToDo(String name) {","lastModifiedDate":"2024-01-19"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":" super(name);","lastModifiedDate":"2024-01-19"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-19"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" public String toString() {","lastModifiedDate":"2024-01-19"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-19"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" public String fileString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" return \"T \" + super.fileString();","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-19"}],"authorContributionMap":{"cyqjoseph":22}},{"path":"src/test/java/commands/AddEventCommandTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package commands;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import tasks.Event;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"import tasks.ToDo;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":"public class AddEventCommandTest {","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" public void toString_savedInTaskList_correct() {","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" Event event \u003d new Event(\"Have Dinner\", LocalDateTime.of(2024, 1, 25, 8, 0), LocalDateTime.of(2024, 1, 25, 9, 30));","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" assertEquals(\"[E][ ] Have Dinner (from: Jan 25 2024 08:00 AM to: Jan 25 2024 09:30 AM)\", event.toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" public void fileString_savedInHardDisk_correct() {","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" Event event \u003d new Event(\"Borrow books\", LocalDateTime.of(1999, 1, 25, 8, 0), LocalDateTime.of(2099, 1, 25, 9, 30));","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" assertEquals(\"E | 0 | Borrow books | 1999-01-25T08:00 to 2099-01-25T09:30\", event.fileString());","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" public void markAsDone_toString_savedInTaskList_correct() {","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" Event event \u003d new Event(\"Play Bridge\", LocalDateTime.of(2024, 1, 10, 8, 0), LocalDateTime.of(2024, 1, 12, 10, 45));","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" event.markAsDone();","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" assertEquals(\"[E][X] Play Bridge (from: Jan 10 2024 08:00 AM to: Jan 12 2024 10:45 AM)\", event.toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":" public void markAsDone_fileString_savedInHardDisk_correct() {","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":" Event event \u003d new Event(\"Play Baccarat\", LocalDateTime.of(2024, 1, 22, 23, 0), LocalDateTime.of(2024, 1, 23, 7, 00));","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":" event.markAsDone();","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"cyqjoseph"},"content":" assertEquals(\"E | 1 | Play Baccarat | 2024-01-22T23:00 to 2024-01-23T07:00\", event.fileString());","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"cyqjoseph":37}},{"path":"src/test/java/commands/AddTodoCommandTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package commands;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import tasks.ToDo;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"public class AddTodoCommandTest {","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" public void toString_savedInTaskList_correct() {","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" ToDo todo \u003d new ToDo(\"Have Dinner\");","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" assertEquals(\"[T][ ] Have Dinner\", todo.toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" public void fileString_savedInHardDisk_correct() {","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" ToDo todo \u003d new ToDo(\"Borrow books\");","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" assertEquals(\"T | 0 | Borrow books\", todo.fileString());","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" public void markAsDone_toString_savedInTaskList_correct() {","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" ToDo todo \u003d new ToDo(\"Have Breakfast\");","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" todo.markAsDone();","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" assertEquals(\"[T][X] Have Breakfast\", todo.toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" public void markAsDone_fileString_savedInHardDisk_correct() {","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":" ToDo todo \u003d new ToDo(\"Return Books\");","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":" todo.markAsDone();","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":" assertEquals(\"T | 1 | Return Books\", todo.fileString());","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"cyqjoseph":35}},{"path":"text-ui-test/data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"T | 0 | borrow book","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"E | 0 | lunch meeting | 2023-01-05T12:00 to 2023-01-05T14:00","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"cyqjoseph":2}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"todo borrow book","lastModifiedDate":"2024-01-19"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"deadline return book /by 2020-05-13","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"list","lastModifiedDate":"2024-01-19"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"event project meeting /from 05/23/2023 /to 01/07/2024","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"list","lastModifiedDate":"2024-01-19"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"mark 2","lastModifiedDate":"2024-01-19"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"mark 1","lastModifiedDate":"2024-01-19"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"list","lastModifiedDate":"2024-01-19"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"unmark 1","lastModifiedDate":"2024-01-19"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"list","lastModifiedDate":"2024-01-19"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":"event lunch meeting /from 05/01/2023 1200 /to 05/01/2023 1400","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":"find lunch","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":"delete 2","lastModifiedDate":"2024-01-19"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":"list","lastModifiedDate":"2024-01-19"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":"event","lastModifiedDate":"2024-01-19"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":"event hello","lastModifiedDate":"2024-01-19"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":"unmark -1","lastModifiedDate":"2024-01-19"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":"unmark 5","lastModifiedDate":"2024-01-19"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":"deadline /by Tuesday","lastModifiedDate":"2024-01-19"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":"delete 0","lastModifiedDate":"2024-01-19"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":"delete 2","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":"event lunch meeting /from 05/01/2023 1200 /to 05/01/2023 2500","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":"unmark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":"bye","lastModifiedDate":"2024-01-19"}],"authorContributionMap":{"cyqjoseph":25}}] +[{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":"checkstyle {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"cyqjoseph"},"content":" mainClass.set(\"Duke\")","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"cyqjoseph":6,"-":41}},{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"T | 0 | test1","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"T | 1 | test2","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"T | 0 | Have Dinner","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"E | 0 | lunch meeting | 2023-01-05T12:00 to 2023-01-05T14:00","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"E | 0 | project meeting | 2023-05-23T00:00 to 2024-07-01T00:00","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"E | 0 | project meeting | 2023-05-23T00:00 to 2025-07-01T00:00","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"cyqjoseph":6}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":" * Starter Duke Class.","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":5,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":" RoeBot bot \u003d new RoeBot();","lastModifiedDate":"2024-01-19"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":" bot.start();","lastModifiedDate":"2024-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"cyqjoseph":5,"-":4}},{"path":"src/main/java/RoeBot.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"import commands.Command;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"import services.TaskList;","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import services.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import services.UI;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import services.parser.Parser;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":" * Represents a RoeBot.","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":"public class RoeBot {","lastModifiedDate":"2024-01-19"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" private Storage storage;","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" private TaskList taskList;","lastModifiedDate":"2024-01-19"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" private UI ui;","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" private Parser parser;","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" public RoeBot() {","lastModifiedDate":"2024-01-19"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" this.storage \u003d new Storage();","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" this.taskList \u003d new TaskList();","lastModifiedDate":"2024-01-19"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" this.ui \u003d new UI();","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" this.parser \u003d new Parser();","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" public void start() {","lastModifiedDate":"2024-01-19"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" storage.loadTasks(this.taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"FIX THIS ERROR\");","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":" this.ui.printIntroMessage();","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":" String userInput;","lastModifiedDate":"2024-01-19"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":" do {","lastModifiedDate":"2024-01-19"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":" userInput \u003d this.ui.nextCommand();","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":" Command c \u003d this.parser.parseCommand(userInput);","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"cyqjoseph"},"content":" c.execute(taskList, ui, storage);","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"cyqjoseph"},"content":" ui.printHorizontalLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"cyqjoseph"},"content":" } while (!userInput.equals(\"bye\"));","lastModifiedDate":"2024-01-19"},{"lineNumber":38,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":39,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":40,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-19"}],"authorContributionMap":{"cyqjoseph":40}},{"path":"src/main/java/commands/AddDeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package commands;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import services.Storage;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import services.TaskList;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import services.UI;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"import tasks.Deadline;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" * Add Deadline to task list command.","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":"public class AddDeadlineCommand extends Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" private String name;","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" private LocalDateTime by;","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" public AddDeadlineCommand(String name, LocalDateTime by) {","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" public void execute(TaskList taskList, UI ui, Storage storage) {","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" Deadline deadline \u003d new Deadline(this.name, this.by);","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" taskList.addTask(deadline);","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" storage.saveTasks(taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"cyqjoseph":27}},{"path":"src/main/java/commands/AddEventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package commands;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import services.Storage;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import services.TaskList;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import services.UI;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"import tasks.Event;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" * Add Event to task list command.","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":"public class AddEventCommand extends Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" private String name;","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" private LocalDateTime start;","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" private LocalDateTime end;","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" public AddEventCommand(String name, LocalDateTime start, LocalDateTime end) {","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" public void execute(TaskList taskList, UI ui, Storage storage) {","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" Event event \u003d new Event(this.name, this.start, this.end);","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" taskList.addTask(event);","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" storage.saveTasks(taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"cyqjoseph":30}},{"path":"src/main/java/commands/AddTodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package commands;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import services.Storage;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import services.TaskList;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import services.UI;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"import tasks.ToDo;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":" * Add Todo to task list command.","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":"public class AddTodoCommand extends Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" private String name;","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" public AddTodoCommand(String name) {","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" public void execute(TaskList taskList, UI ui, Storage storage) {","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" ToDo todo \u003d new ToDo(this.name);","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" taskList.addTask(todo);","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" storage.saveTasks(taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"cyqjoseph":23}},{"path":"src/main/java/commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package commands;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import services.Storage;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import services.TaskList;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import services.UI;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":" * Represents an executable command as an abstract class.","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"public abstract class Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" public abstract void execute(TaskList taskList, UI ui, Storage storage);","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"cyqjoseph":13}},{"path":"src/main/java/commands/DeleteTaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package commands;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import exceptions.DukeException;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import services.Storage;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import services.TaskList;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"import services.UI;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":" * Deletes a task from the task list.","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":"public class DeleteTaskCommand extends Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" private int index;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" public DeleteTaskCommand(int index) {","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" public void execute(TaskList taskList, UI ui, Storage storage) {","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" taskList.deleteTask(this.index);","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" storage.saveTasks(taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\tIndex out of range!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"cyqjoseph":27}},{"path":"src/main/java/commands/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package commands;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import services.Storage;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import services.TaskList;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import services.UI;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":" * Exits the program.","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" public void execute(TaskList taskList, UI ui, Storage storage) {","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" ui.printExitMessage();","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"cyqjoseph":16}},{"path":"src/main/java/commands/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package commands;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import exceptions.DukeException;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import services.Storage;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import services.TaskList;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"import services.UI;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":" * Finds a task from the task list.","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" private String name;","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" public FindCommand(String name) {","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" public void execute(TaskList taskList, UI ui, Storage storage) {","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" taskList.findTasks(this.name);","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\tNo task with \" + this.name + \" found\");","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"cyqjoseph":26}},{"path":"src/main/java/commands/InvalidCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package commands;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import services.Storage;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import services.TaskList;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import services.UI;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":" * Represents an invalid command.","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"public class InvalidCommand extends Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" private String message;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" public InvalidCommand(String message) {","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" this.message \u003d message;","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" public void execute(TaskList taskList, UI ui, Storage storage) {","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" ui.printMessage(this.message);","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"cyqjoseph":20}},{"path":"src/main/java/commands/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package commands;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import services.Storage;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import services.TaskList;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import services.UI;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":" * List task list command.","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" public void execute(TaskList taskList, UI ui, Storage storage) {","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" taskList.listTasks();","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"cyqjoseph":16}},{"path":"src/main/java/commands/MarkTaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package commands;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import exceptions.DukeException;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import services.Storage;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"import services.TaskList;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"import services.UI;","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":" * Marks task as done command.","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":"public class MarkTaskCommand extends Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" private int index;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" public MarkTaskCommand(int index) {","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" public void execute(TaskList taskList, UI ui, Storage storage) {","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" taskList.markTask(this.index);","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" storage.saveTasks(taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\tList index out of range\");","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"cyqjoseph":26}},{"path":"src/main/java/commands/UnmarkTaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package commands;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import exceptions.DukeException;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import services.Storage;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import services.TaskList;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"import services.UI;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":" * Marks tasks as undone command.","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":"public class UnmarkTaskCommand extends Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" private int index;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" public UnmarkTaskCommand(int index) {","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" public void execute(TaskList taskList, UI ui, Storage storage) {","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" taskList.unmarkTask(this.index);","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" storage.saveTasks(taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\tList index out of range\");","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"cyqjoseph":25}},{"path":"src/main/java/exceptions/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package exceptions;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":" * Custom DukeException.","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-19"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-19"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":" super(\"\\t\" + message);","lastModifiedDate":"2024-01-19"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-19"}],"authorContributionMap":{"cyqjoseph":10}},{"path":"src/main/java/services/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package services;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import exceptions.DukeException;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import tasks.Task;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import services.parser.Parser;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"import java.io.File;","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" * The Storage class is responsible for handling the loading and saving of tasks to a file.","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":"public class Storage {","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" private static final String FILE_PATH \u003d \"./data/duke.txt\";","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" public Storage() {};","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" * Loads tasks from the file at FILE_PATH and adds them to the provided TaskList.","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" * @param taskList The TaskList to which tasks are to be added.","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" * @throws IOException If an error occurs during file reading.","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" public void loadTasks(TaskList taskList) throws IOException {","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" File file \u003d new File(FILE_PATH);","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":" Scanner scanner \u003d new Scanner(file);","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":" while (scanner.hasNext()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":" String taskString \u003d scanner.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":" Task task \u003d Parser.parseTaskFromString(taskString);","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"cyqjoseph"},"content":" // MONKEY FIX","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"cyqjoseph"},"content":" taskList.getTasks().add(task);","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"cyqjoseph"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"Error occurred when writing to file\");","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"cyqjoseph"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"Error occurred when parsing file\");","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"cyqjoseph"},"content":" * Saves tasks from the provided TaskList to the file at FILE_PATH.","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"cyqjoseph"},"content":" * @param taskList The TaskList whose tasks are to be saved.","lastModifiedDate":"2024-01-26"},{"lineNumber":48,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":49,"author":{"gitId":"cyqjoseph"},"content":" public void saveTasks(TaskList taskList) {","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"cyqjoseph"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"cyqjoseph"},"content":" File file \u003d new File(FILE_PATH);","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"cyqjoseph"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"cyqjoseph"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"cyqjoseph"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"cyqjoseph"},"content":" FileWriter fileWriter \u003d new FileWriter(file);","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"cyqjoseph"},"content":" for (Task task: taskList.getTasks()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"cyqjoseph"},"content":" fileWriter.write(task.fileString() + \"\\n\");","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"cyqjoseph"},"content":" fileWriter.close();","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"cyqjoseph"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"Error occurred when writing to file\");","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"cyqjoseph":65}},{"path":"src/main/java/services/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package services;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import exceptions.DukeException;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import tasks.Task;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-19"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"import java.util.List;","lastModifiedDate":"2024-01-19"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" * The TaskList class manages a list of tasks, allowing for adding, deleting, marking, and unmarking tasks.","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":"public class TaskList {","lastModifiedDate":"2024-01-19"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" private static final int MAX_ITEMS \u003d 100;","lastModifiedDate":"2024-01-19"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" private List\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-19"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" private final String FILE_PATH \u003d \"./data/duke.txt\";","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" * Constructs a new TaskList.","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" public TaskList() {","lastModifiedDate":"2024-01-19"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-19"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" * Returns the list of tasks.","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" * @return List of tasks.","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":" public List\u003cTask\u003e getTasks() {","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":" return this.tasks;","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"cyqjoseph"},"content":" * Adds a task to the task list.","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"cyqjoseph"},"content":" * @param task The task to be added.","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"cyqjoseph"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"cyqjoseph"},"content":" this.tasks.add(task);","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\tGot it. I\u0027ve added this task: \");","lastModifiedDate":"2024-01-19"},{"lineNumber":42,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\t\" + this.tasks.get(this.tasks.size() - 1));","lastModifiedDate":"2024-01-19"},{"lineNumber":43,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(","lastModifiedDate":"2024-01-19"},{"lineNumber":44,"author":{"gitId":"cyqjoseph"},"content":" \"\\tNow you have \" + this.tasks.size() + \" task\"","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"cyqjoseph"},"content":" + (this.tasks.size() \u003d\u003d 1 ? \"\" : \"s\") + \" in the list\");","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":47,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":48,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":49,"author":{"gitId":"cyqjoseph"},"content":" * Deletes a task from the task list based on its index.","lastModifiedDate":"2024-01-26"},{"lineNumber":50,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":51,"author":{"gitId":"cyqjoseph"},"content":" * @param index The index of the task to be deleted.","lastModifiedDate":"2024-01-26"},{"lineNumber":52,"author":{"gitId":"cyqjoseph"},"content":" * @throws DukeException If the index is out of range.","lastModifiedDate":"2024-01-26"},{"lineNumber":53,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":54,"author":{"gitId":"cyqjoseph"},"content":" public void deleteTask(int index) throws DukeException {","lastModifiedDate":"2024-01-19"},{"lineNumber":55,"author":{"gitId":"cyqjoseph"},"content":" if (this.tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-19"},{"lineNumber":56,"author":{"gitId":"cyqjoseph"},"content":" throw new DukeException(\"Task index is out of range.\");","lastModifiedDate":"2024-01-26"},{"lineNumber":57,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":58,"author":{"gitId":"cyqjoseph"},"content":" if (index \u003c\u003d 0 || index \u003e this.tasks.size()) {","lastModifiedDate":"2024-01-19"},{"lineNumber":59,"author":{"gitId":"cyqjoseph"},"content":" throw new DukeException(\"Index out of range\");","lastModifiedDate":"2024-01-19"},{"lineNumber":60,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":61,"author":{"gitId":"cyqjoseph"},"content":" Task deletedTask \u003d this.tasks.remove(index - 1);","lastModifiedDate":"2024-01-19"},{"lineNumber":62,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\tNoted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-19"},{"lineNumber":63,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\t\" + deletedTask.toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(","lastModifiedDate":"2024-01-19"},{"lineNumber":65,"author":{"gitId":"cyqjoseph"},"content":" \"\\tNow you have \" + this.tasks.size() + \" task\"","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"cyqjoseph"},"content":" + (this.tasks.size() \u003d\u003d 1 ? \"\" : \"s\") + \" in the list\");","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":68,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":69,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":70,"author":{"gitId":"cyqjoseph"},"content":" * Marks a task as done based on its index.","lastModifiedDate":"2024-01-26"},{"lineNumber":71,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":72,"author":{"gitId":"cyqjoseph"},"content":" * @param index The index of the task to be marked as done.","lastModifiedDate":"2024-01-26"},{"lineNumber":73,"author":{"gitId":"cyqjoseph"},"content":" * @throws DukeException If the index is out of range.","lastModifiedDate":"2024-01-26"},{"lineNumber":74,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":75,"author":{"gitId":"cyqjoseph"},"content":" public void markTask(int index) throws DukeException {","lastModifiedDate":"2024-01-19"},{"lineNumber":76,"author":{"gitId":"cyqjoseph"},"content":" if (index \u003c\u003d 0 || index \u003e this.tasks.size()) {","lastModifiedDate":"2024-01-19"},{"lineNumber":77,"author":{"gitId":"cyqjoseph"},"content":" throw new DukeException(\"Task index is out of range.\");","lastModifiedDate":"2024-01-26"},{"lineNumber":78,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":79,"author":{"gitId":"cyqjoseph"},"content":" Task currTask \u003d this.tasks.get(index - 1);","lastModifiedDate":"2024-01-19"},{"lineNumber":80,"author":{"gitId":"cyqjoseph"},"content":" currTask.markAsDone();","lastModifiedDate":"2024-01-19"},{"lineNumber":81,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\tNice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-19"},{"lineNumber":82,"author":{"gitId":"cyqjoseph"},"content":" currTask.toString();","lastModifiedDate":"2024-01-19"},{"lineNumber":83,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":84,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":85,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":86,"author":{"gitId":"cyqjoseph"},"content":" * Unmarks a task (marks as not done) based on its index.","lastModifiedDate":"2024-01-26"},{"lineNumber":87,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":88,"author":{"gitId":"cyqjoseph"},"content":" * @param index The index of the task to be unmarked.","lastModifiedDate":"2024-01-26"},{"lineNumber":89,"author":{"gitId":"cyqjoseph"},"content":" * @throws DukeException If the index is out of range.","lastModifiedDate":"2024-01-26"},{"lineNumber":90,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":91,"author":{"gitId":"cyqjoseph"},"content":" public void unmarkTask(int index) throws DukeException {","lastModifiedDate":"2024-01-19"},{"lineNumber":92,"author":{"gitId":"cyqjoseph"},"content":" if (index \u003c\u003d 0 || index \u003e this.tasks.size()) {","lastModifiedDate":"2024-01-19"},{"lineNumber":93,"author":{"gitId":"cyqjoseph"},"content":" throw new DukeException(\"Task index is out of range.\");","lastModifiedDate":"2024-01-26"},{"lineNumber":94,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":95,"author":{"gitId":"cyqjoseph"},"content":" Task currTask \u003d this.tasks.get(index - 1);","lastModifiedDate":"2024-01-19"},{"lineNumber":96,"author":{"gitId":"cyqjoseph"},"content":" currTask.markAsUndone();","lastModifiedDate":"2024-01-19"},{"lineNumber":97,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\tOK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-19"},{"lineNumber":98,"author":{"gitId":"cyqjoseph"},"content":" currTask.toString();","lastModifiedDate":"2024-01-19"},{"lineNumber":99,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":100,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":101,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":102,"author":{"gitId":"cyqjoseph"},"content":" * Lists all tasks in the task list.","lastModifiedDate":"2024-01-26"},{"lineNumber":103,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":104,"author":{"gitId":"cyqjoseph"},"content":" public void listTasks() {","lastModifiedDate":"2024-01-19"},{"lineNumber":105,"author":{"gitId":"cyqjoseph"},"content":" if (this.tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-19"},{"lineNumber":106,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\tThe task list is empty.\");","lastModifiedDate":"2024-01-19"},{"lineNumber":107,"author":{"gitId":"cyqjoseph"},"content":" } else {","lastModifiedDate":"2024-01-19"},{"lineNumber":108,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\tHere are the tasks in your list: \");","lastModifiedDate":"2024-01-19"},{"lineNumber":109,"author":{"gitId":"cyqjoseph"},"content":" for (int i \u003d 0; i \u003c this.tasks.size(); i++) {","lastModifiedDate":"2024-01-19"},{"lineNumber":110,"author":{"gitId":"cyqjoseph"},"content":" Task currTask \u003d this.tasks.get(i);","lastModifiedDate":"2024-01-19"},{"lineNumber":111,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\t\" + (i + 1) + \".\" + currTask.toString());","lastModifiedDate":"2024-01-19"},{"lineNumber":112,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":113,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":114,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":115,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":116,"author":{"gitId":"cyqjoseph"},"content":" public List\u003cTask\u003e findTasks(String word) throws DukeException {","lastModifiedDate":"2024-01-26"},{"lineNumber":117,"author":{"gitId":"cyqjoseph"},"content":" Pattern pattern \u003d Pattern.compile(Pattern.quote(word), Pattern.CASE_INSENSITIVE);","lastModifiedDate":"2024-01-26"},{"lineNumber":118,"author":{"gitId":"cyqjoseph"},"content":" List\u003cTask\u003e foundTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-26"},{"lineNumber":119,"author":{"gitId":"cyqjoseph"},"content":" for (Task task: this.tasks) {","lastModifiedDate":"2024-01-24"},{"lineNumber":120,"author":{"gitId":"cyqjoseph"},"content":" Matcher matcher \u003d pattern.matcher(task.getName());","lastModifiedDate":"2024-01-26"},{"lineNumber":121,"author":{"gitId":"cyqjoseph"},"content":" if (matcher.find()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":122,"author":{"gitId":"cyqjoseph"},"content":" foundTasks.add(task);","lastModifiedDate":"2024-01-26"},{"lineNumber":123,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":124,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":125,"author":{"gitId":"cyqjoseph"},"content":" if (foundTasks.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-26"},{"lineNumber":126,"author":{"gitId":"cyqjoseph"},"content":" throw new DukeException(\"No tasks with \" + word + \" found\");","lastModifiedDate":"2024-01-26"},{"lineNumber":127,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":128,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":129,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\tHere are the matching tasks in your list: \");","lastModifiedDate":"2024-01-26"},{"lineNumber":130,"author":{"gitId":"cyqjoseph"},"content":" for (int i \u003d 0; i \u003c foundTasks.size(); i++) {","lastModifiedDate":"2024-01-26"},{"lineNumber":131,"author":{"gitId":"cyqjoseph"},"content":" Task currTask \u003d foundTasks.get(i);","lastModifiedDate":"2024-01-26"},{"lineNumber":132,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\t\" + (i + 1) + \".\" + currTask.toString());","lastModifiedDate":"2024-01-26"},{"lineNumber":133,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":134,"author":{"gitId":"cyqjoseph"},"content":" return foundTasks;","lastModifiedDate":"2024-01-26"},{"lineNumber":135,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":136,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-19"}],"authorContributionMap":{"cyqjoseph":136}},{"path":"src/main/java/services/UI.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package services;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":" * The {@code UI} class handles the user interface for the application.","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":" * It provides methods to display messages to the user and to read user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"public class UI {","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":" private final Scanner scanner;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" * Constructs a new {@code UI} object.","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" * Initializes the scanner to read input from the standard input stream.","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" public UI() {","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" * Reads the next command from the user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" * @return A string representing the user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" public String nextCommand() {","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" return this.scanner.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":" * Prints the introductory message to the user.","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":" public void printIntroMessage() {","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":" printHorizontalLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\tHello! I\u0027m RoeBot!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\tWhat can I do for you?\");","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"cyqjoseph"},"content":" printHorizontalLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"cyqjoseph"},"content":" * Prints the exit message to the user and closes the scanner.","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"cyqjoseph"},"content":" public void printExitMessage() {","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\tBye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"cyqjoseph"},"content":" this.scanner.close();","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"cyqjoseph"},"content":" * Prints a given message to the user.","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"cyqjoseph"},"content":" * @param message The message to be printed.","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"cyqjoseph"},"content":" public void printMessage(String message) {","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\t\" + message);","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"cyqjoseph"},"content":" * Prints a horizontal line for UI separation.","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"cyqjoseph"},"content":" public void printHorizontalLine() {","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\t_________________________________________________\");","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"cyqjoseph":62}},{"path":"src/main/java/services/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package services.parser;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import commands.*;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import exceptions.DukeException;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import tasks.Deadline;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"import tasks.*;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":"import java.util.List;","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" * The Parser class is responsible for interpreting user inputs and converting them into commands.","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" * It handles various types of commands including adding tasks, marking tasks as done or undone,","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" * deleting tasks, and exiting the program.","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":"public class Parser {","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" * Parses the user input to determine the type of command to be executed.","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" * @param userInput The user\u0027s input as a string.","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" * @return Command The command corresponding to the user\u0027s input.","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" public Command parseCommand(String userInput) {","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" String[] parsed \u003d userInput.split(\" \", 2);","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" String initialCommand \u003d parsed[0].toUpperCase();","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":" switch (initialCommand) {","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":" case \"EVENT\":","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":" return parseAddEvent(userInput);","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":" case \"DEADLINE\":","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":" return parseAddDeadline(userInput);","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"cyqjoseph"},"content":" case \"TODO\":","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"cyqjoseph"},"content":" return parseAddTodo(userInput);","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"cyqjoseph"},"content":" case \"MARK\":","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"cyqjoseph"},"content":" return parseMark(userInput);","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"cyqjoseph"},"content":" case \"UNMARK\":","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"cyqjoseph"},"content":" return parseUnmark(userInput);","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"cyqjoseph"},"content":" case \"DELETE\":","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"cyqjoseph"},"content":" return parseDelete(userInput);","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"cyqjoseph"},"content":" case \"FIND\":","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"cyqjoseph"},"content":" return parseFind(userInput);","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"cyqjoseph"},"content":" case \"LIST\":","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"cyqjoseph"},"content":" return new ListCommand();","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"cyqjoseph"},"content":" case \"BYE\":","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"cyqjoseph"},"content":" return new ExitCommand();","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"cyqjoseph"},"content":" default:","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"cyqjoseph"},"content":" // return new HelpCommand();","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"cyqjoseph"},"content":" return new InvalidCommand(\"INVALID\");","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":55,"author":{"gitId":"cyqjoseph"},"content":" * Parses the user input to create an AddEventCommand.","lastModifiedDate":"2024-01-26"},{"lineNumber":56,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":57,"author":{"gitId":"cyqjoseph"},"content":" * @param userInput The user\u0027s input as a string.","lastModifiedDate":"2024-01-26"},{"lineNumber":58,"author":{"gitId":"cyqjoseph"},"content":" * @return Command An AddEventCommand if input is valid, otherwise an InvalidCommand.","lastModifiedDate":"2024-01-26"},{"lineNumber":59,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":60,"author":{"gitId":"cyqjoseph"},"content":" public Command parseAddEvent(String userInput) {","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"cyqjoseph"},"content":" String[] parsed \u003d userInput.split(\" \", 2);","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"cyqjoseph"},"content":" if (parsed.length \u003c\u003d 1 || parsed[1].isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"cyqjoseph"},"content":" return new InvalidCommand(\"OOPS! Please enter a task name\");","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"cyqjoseph"},"content":" String taskDesc \u003d parsed[1];","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"cyqjoseph"},"content":" String[] parsedEvent \u003d taskDesc.split(\" /from | /to \");","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"cyqjoseph"},"content":" if (parsedEvent.length \u003c\u003d 2) {","lastModifiedDate":"2024-01-25"},{"lineNumber":68,"author":{"gitId":"cyqjoseph"},"content":" return new InvalidCommand(\"Please enter valid event format\");","lastModifiedDate":"2024-01-25"},{"lineNumber":69,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"cyqjoseph"},"content":" String eventName \u003d parsedEvent[0];","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"cyqjoseph"},"content":" LocalDateTime start \u003d null;","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"cyqjoseph"},"content":" LocalDateTime end \u003d null;","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"cyqjoseph"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"cyqjoseph"},"content":" start \u003d parseDate(parsedEvent[1]);","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"cyqjoseph"},"content":" end \u003d parseDate(parsedEvent[2]);","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"cyqjoseph"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"cyqjoseph"},"content":" return new InvalidCommand(\"Invalid date format\");","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":79,"author":{"gitId":"cyqjoseph"},"content":" return new AddEventCommand(eventName, start, end);","lastModifiedDate":"2024-01-25"},{"lineNumber":80,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":82,"author":{"gitId":"cyqjoseph"},"content":" * Parses the user input to create an AddDeadlineCommand.","lastModifiedDate":"2024-01-26"},{"lineNumber":83,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":84,"author":{"gitId":"cyqjoseph"},"content":" * @param userInput The user\u0027s input as a string.","lastModifiedDate":"2024-01-26"},{"lineNumber":85,"author":{"gitId":"cyqjoseph"},"content":" * @return Command An AddDeadlineCommand if input is valid, otherwise an InvalidCommand.","lastModifiedDate":"2024-01-26"},{"lineNumber":86,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":87,"author":{"gitId":"cyqjoseph"},"content":" public Command parseAddDeadline(String userInput) {","lastModifiedDate":"2024-01-25"},{"lineNumber":88,"author":{"gitId":"cyqjoseph"},"content":" String[] parsed \u003d userInput.split(\" \", 2);","lastModifiedDate":"2024-01-25"},{"lineNumber":89,"author":{"gitId":"cyqjoseph"},"content":" if (parsed.length \u003c\u003d 1 || parsed[1].isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":90,"author":{"gitId":"cyqjoseph"},"content":" return new InvalidCommand(\"OOPS! Please enter a task name\");","lastModifiedDate":"2024-01-25"},{"lineNumber":91,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":92,"author":{"gitId":"cyqjoseph"},"content":" String taskDesc \u003d parsed[1];","lastModifiedDate":"2024-01-25"},{"lineNumber":93,"author":{"gitId":"cyqjoseph"},"content":" String[] parsedDeadline \u003d taskDesc.split(\" /by \");","lastModifiedDate":"2024-01-25"},{"lineNumber":94,"author":{"gitId":"cyqjoseph"},"content":" if (parsedDeadline.length \u003c\u003d 1) {","lastModifiedDate":"2024-01-25"},{"lineNumber":95,"author":{"gitId":"cyqjoseph"},"content":" return new InvalidCommand(\"Please enter a valid deadline format\");","lastModifiedDate":"2024-01-25"},{"lineNumber":96,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":97,"author":{"gitId":"cyqjoseph"},"content":" String deadlineName \u003d parsedDeadline[0];","lastModifiedDate":"2024-01-25"},{"lineNumber":98,"author":{"gitId":"cyqjoseph"},"content":" LocalDateTime by;","lastModifiedDate":"2024-01-25"},{"lineNumber":99,"author":{"gitId":"cyqjoseph"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":100,"author":{"gitId":"cyqjoseph"},"content":" by \u003d parseDate(parsedDeadline[1]);","lastModifiedDate":"2024-01-25"},{"lineNumber":101,"author":{"gitId":"cyqjoseph"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":102,"author":{"gitId":"cyqjoseph"},"content":" return new InvalidCommand(\"Please enter a valid deadline format!!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":103,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":104,"author":{"gitId":"cyqjoseph"},"content":" return new AddDeadlineCommand(deadlineName, by);","lastModifiedDate":"2024-01-25"},{"lineNumber":105,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":106,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":107,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":108,"author":{"gitId":"cyqjoseph"},"content":" * Parses the user input to create an AddTodoCommand.","lastModifiedDate":"2024-01-26"},{"lineNumber":109,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":110,"author":{"gitId":"cyqjoseph"},"content":" * @param userInput The user\u0027s input as a string.","lastModifiedDate":"2024-01-26"},{"lineNumber":111,"author":{"gitId":"cyqjoseph"},"content":" * @return Command An AddTodoCommand if input is valid, otherwise an InvalidCommand.","lastModifiedDate":"2024-01-26"},{"lineNumber":112,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":113,"author":{"gitId":"cyqjoseph"},"content":" public Command parseAddTodo(String userInput) {","lastModifiedDate":"2024-01-25"},{"lineNumber":114,"author":{"gitId":"cyqjoseph"},"content":" String[] parsed \u003d userInput.split(\" \", 2);","lastModifiedDate":"2024-01-25"},{"lineNumber":115,"author":{"gitId":"cyqjoseph"},"content":" if (parsed.length \u003c\u003d 1 || parsed[1].isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":116,"author":{"gitId":"cyqjoseph"},"content":" return new InvalidCommand(\"OOPS! Please enter a task name\");","lastModifiedDate":"2024-01-25"},{"lineNumber":117,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":118,"author":{"gitId":"cyqjoseph"},"content":" String taskDesc \u003d parsed[1];","lastModifiedDate":"2024-01-25"},{"lineNumber":119,"author":{"gitId":"cyqjoseph"},"content":" return new AddTodoCommand(taskDesc);","lastModifiedDate":"2024-01-25"},{"lineNumber":120,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":121,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":122,"author":{"gitId":"cyqjoseph"},"content":" * Parses the user input to create a DeleteTaskCommand.","lastModifiedDate":"2024-01-26"},{"lineNumber":123,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":124,"author":{"gitId":"cyqjoseph"},"content":" * @param userInput The user\u0027s input as a string.","lastModifiedDate":"2024-01-26"},{"lineNumber":125,"author":{"gitId":"cyqjoseph"},"content":" * @return Command A DeleteTaskCommand if input is valid, otherwise an InvalidCommand.","lastModifiedDate":"2024-01-26"},{"lineNumber":126,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":127,"author":{"gitId":"cyqjoseph"},"content":" public Command parseDelete(String userInput) {","lastModifiedDate":"2024-01-25"},{"lineNumber":128,"author":{"gitId":"cyqjoseph"},"content":" String[] parsed \u003d userInput.split(\" \", 2);","lastModifiedDate":"2024-01-25"},{"lineNumber":129,"author":{"gitId":"cyqjoseph"},"content":" if (parsed.length \u003c\u003d 1 || parsed[1].isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":130,"author":{"gitId":"cyqjoseph"},"content":" return new InvalidCommand(\"OOPS! Please enter an index\");","lastModifiedDate":"2024-01-25"},{"lineNumber":131,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":132,"author":{"gitId":"cyqjoseph"},"content":" int index \u003d Integer.parseInt(parsed[1]);","lastModifiedDate":"2024-01-25"},{"lineNumber":133,"author":{"gitId":"cyqjoseph"},"content":" return new DeleteTaskCommand(index);","lastModifiedDate":"2024-01-25"},{"lineNumber":134,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":135,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":136,"author":{"gitId":"cyqjoseph"},"content":" * Parses the user input to create a UnmarkTaskCommand.","lastModifiedDate":"2024-01-26"},{"lineNumber":137,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":138,"author":{"gitId":"cyqjoseph"},"content":" * @param userInput The user\u0027s input as a string.","lastModifiedDate":"2024-01-26"},{"lineNumber":139,"author":{"gitId":"cyqjoseph"},"content":" * @return Command A UnmarkTaskCommand if input is valid, otherwise an InvalidCommand.","lastModifiedDate":"2024-01-26"},{"lineNumber":140,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":141,"author":{"gitId":"cyqjoseph"},"content":" public Command parseUnmark(String userInput) {","lastModifiedDate":"2024-01-26"},{"lineNumber":142,"author":{"gitId":"cyqjoseph"},"content":" String[] parsed \u003d userInput.split(\" \", 2);","lastModifiedDate":"2024-01-25"},{"lineNumber":143,"author":{"gitId":"cyqjoseph"},"content":" if (parsed.length \u003c\u003d 1 || parsed[1].isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":144,"author":{"gitId":"cyqjoseph"},"content":" return new InvalidCommand(\"OOPS! Please enter an index\");","lastModifiedDate":"2024-01-25"},{"lineNumber":145,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":146,"author":{"gitId":"cyqjoseph"},"content":" int index \u003d Integer.parseInt(parsed[1]);","lastModifiedDate":"2024-01-25"},{"lineNumber":147,"author":{"gitId":"cyqjoseph"},"content":" return new UnmarkTaskCommand(index);","lastModifiedDate":"2024-01-25"},{"lineNumber":148,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":149,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":150,"author":{"gitId":"cyqjoseph"},"content":" * Parses the user input to create a MarkTaskCommand.","lastModifiedDate":"2024-01-26"},{"lineNumber":151,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":152,"author":{"gitId":"cyqjoseph"},"content":" * @param userInput The user\u0027s input as a string.","lastModifiedDate":"2024-01-26"},{"lineNumber":153,"author":{"gitId":"cyqjoseph"},"content":" * @return Command A MarkTaskCommand if input is valid, otherwise an InvalidCommand.","lastModifiedDate":"2024-01-26"},{"lineNumber":154,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":155,"author":{"gitId":"cyqjoseph"},"content":" public Command parseMark(String userInput) {","lastModifiedDate":"2024-01-26"},{"lineNumber":156,"author":{"gitId":"cyqjoseph"},"content":" String[] parsed \u003d userInput.split(\" \", 2);","lastModifiedDate":"2024-01-25"},{"lineNumber":157,"author":{"gitId":"cyqjoseph"},"content":" if (parsed.length \u003c\u003d 1 || parsed[1].isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":158,"author":{"gitId":"cyqjoseph"},"content":" return new InvalidCommand(\"OOPS! Please enter an index\");","lastModifiedDate":"2024-01-25"},{"lineNumber":159,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":160,"author":{"gitId":"cyqjoseph"},"content":" int index \u003d Integer.parseInt(parsed[1]);","lastModifiedDate":"2024-01-25"},{"lineNumber":161,"author":{"gitId":"cyqjoseph"},"content":" return new MarkTaskCommand(index);","lastModifiedDate":"2024-01-25"},{"lineNumber":162,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":163,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":164,"author":{"gitId":"cyqjoseph"},"content":" * Parses the user input to create an FindCommand.","lastModifiedDate":"2024-01-26"},{"lineNumber":165,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":166,"author":{"gitId":"cyqjoseph"},"content":" * @param userInput The user\u0027s input as a string.","lastModifiedDate":"2024-01-26"},{"lineNumber":167,"author":{"gitId":"cyqjoseph"},"content":" * @return Command A FindCommand if input is valid, otherwise an InvalidCommand.","lastModifiedDate":"2024-01-26"},{"lineNumber":168,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":169,"author":{"gitId":"cyqjoseph"},"content":" public Command parseFind(String userInput) {","lastModifiedDate":"2024-01-26"},{"lineNumber":170,"author":{"gitId":"cyqjoseph"},"content":" String[] parsed \u003d userInput.split(\" \", 2);","lastModifiedDate":"2024-01-26"},{"lineNumber":171,"author":{"gitId":"cyqjoseph"},"content":" if (parsed.length \u003c\u003d 1 || parsed[1].isEmpty()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":172,"author":{"gitId":"cyqjoseph"},"content":" return new InvalidCommand(\"OOPS! Please enter an task to find\");","lastModifiedDate":"2024-01-26"},{"lineNumber":173,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":174,"author":{"gitId":"cyqjoseph"},"content":" return new FindCommand(parsed[1]);","lastModifiedDate":"2024-01-26"},{"lineNumber":175,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":176,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":177,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":178,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":179,"author":{"gitId":"cyqjoseph"},"content":" * Parses a date string into a LocalDateTime object.","lastModifiedDate":"2024-01-26"},{"lineNumber":180,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":181,"author":{"gitId":"cyqjoseph"},"content":" * @param dateString The date string to parse.","lastModifiedDate":"2024-01-26"},{"lineNumber":182,"author":{"gitId":"cyqjoseph"},"content":" * @return LocalDateTime The parsed LocalDateTime object.","lastModifiedDate":"2024-01-26"},{"lineNumber":183,"author":{"gitId":"cyqjoseph"},"content":" * @throws DukeException If the date string cannot be parsed into a valid date and time.","lastModifiedDate":"2024-01-26"},{"lineNumber":184,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":185,"author":{"gitId":"cyqjoseph"},"content":" public LocalDateTime parseDate(String dateString) throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":186,"author":{"gitId":"cyqjoseph"},"content":" List\u003cDateTimeFormatter\u003e dateTimeFormatters \u003d Arrays.asList(","lastModifiedDate":"2024-01-25"},{"lineNumber":187,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":188,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"d-M-yyyy HHmm\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":189,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"yyyy-M-d HHmm\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":190,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"d/M/yyyy HH:mm\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":191,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"M/d/yyyy h:mm a\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":192,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"yyyy-M-d HHmm\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":193,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"d MMM yyyy h:mma\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":194,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"MMM d, yyyy HH:mm\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":195,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"yyyyMMdd h:mm a\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":196,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"d-M-yyyy HH:mm\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":197,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"yyyy/M/d h:mma\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":198,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"d MMMM yyyy HHmm\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":199,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"yyyy-M-d h:mm a\")","lastModifiedDate":"2024-01-25"},{"lineNumber":200,"author":{"gitId":"cyqjoseph"},"content":" );","lastModifiedDate":"2024-01-25"},{"lineNumber":201,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":202,"author":{"gitId":"cyqjoseph"},"content":" List\u003cDateTimeFormatter\u003e dateFormatters \u003d Arrays.asList(","lastModifiedDate":"2024-01-25"},{"lineNumber":203,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"d/M/yyyy\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":204,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"M/d/yyyy\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":205,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"yyyy/M/d\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":206,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"d-M-yyyy\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":207,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"M-d-yyyy\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":208,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"yyyy-M-d\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":209,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"d MMM yyyy\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":210,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"MMM d, yyyy\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":211,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"d MMMM yyyy\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":212,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"yyyyMMdd\")","lastModifiedDate":"2024-01-25"},{"lineNumber":213,"author":{"gitId":"cyqjoseph"},"content":" );","lastModifiedDate":"2024-01-25"},{"lineNumber":214,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":215,"author":{"gitId":"cyqjoseph"},"content":" for (DateTimeFormatter formatter : dateTimeFormatters) {","lastModifiedDate":"2024-01-25"},{"lineNumber":216,"author":{"gitId":"cyqjoseph"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":217,"author":{"gitId":"cyqjoseph"},"content":" return LocalDateTime.parse(dateString, formatter);","lastModifiedDate":"2024-01-25"},{"lineNumber":218,"author":{"gitId":"cyqjoseph"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":219,"author":{"gitId":"cyqjoseph"},"content":" // Continue to try the next format","lastModifiedDate":"2024-01-25"},{"lineNumber":220,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":221,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":222,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":223,"author":{"gitId":"cyqjoseph"},"content":" for (DateTimeFormatter formatter : dateFormatters) {","lastModifiedDate":"2024-01-25"},{"lineNumber":224,"author":{"gitId":"cyqjoseph"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":225,"author":{"gitId":"cyqjoseph"},"content":" return LocalDate.parse(dateString, formatter).atStartOfDay();","lastModifiedDate":"2024-01-25"},{"lineNumber":226,"author":{"gitId":"cyqjoseph"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":227,"author":{"gitId":"cyqjoseph"},"content":" // Continue to try the next format","lastModifiedDate":"2024-01-25"},{"lineNumber":228,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":229,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":230,"author":{"gitId":"cyqjoseph"},"content":" throw new DukeException(\"Invalid Date and time format\");","lastModifiedDate":"2024-01-25"},{"lineNumber":231,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":232,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":233,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":234,"author":{"gitId":"cyqjoseph"},"content":" * Parses a task string representation from a file into a Task object.","lastModifiedDate":"2024-01-26"},{"lineNumber":235,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":236,"author":{"gitId":"cyqjoseph"},"content":" * @param taskString The string representation of the task.","lastModifiedDate":"2024-01-26"},{"lineNumber":237,"author":{"gitId":"cyqjoseph"},"content":" * @return Task The Task object parsed from the string.","lastModifiedDate":"2024-01-26"},{"lineNumber":238,"author":{"gitId":"cyqjoseph"},"content":" * @throws DukeException If the task string cannot be parsed into a valid task.","lastModifiedDate":"2024-01-26"},{"lineNumber":239,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":240,"author":{"gitId":"cyqjoseph"},"content":" public static Task parseTaskFromString(String taskString) throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":241,"author":{"gitId":"cyqjoseph"},"content":" String[] parts \u003d taskString.split(\" \\\\| \");","lastModifiedDate":"2024-01-25"},{"lineNumber":242,"author":{"gitId":"cyqjoseph"},"content":" String taskType \u003d parts[0];","lastModifiedDate":"2024-01-25"},{"lineNumber":243,"author":{"gitId":"cyqjoseph"},"content":" boolean isDone \u003d parts[1].trim().equals(\"1\");","lastModifiedDate":"2024-01-25"},{"lineNumber":244,"author":{"gitId":"cyqjoseph"},"content":" String description \u003d parts[2].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":245,"author":{"gitId":"cyqjoseph"},"content":" String additionalInfo \u003d parts.length \u003e 3 ? parts[3].trim() : null;","lastModifiedDate":"2024-01-25"},{"lineNumber":246,"author":{"gitId":"cyqjoseph"},"content":" switch (taskType) {","lastModifiedDate":"2024-01-25"},{"lineNumber":247,"author":{"gitId":"cyqjoseph"},"content":" case \"T\":","lastModifiedDate":"2024-01-25"},{"lineNumber":248,"author":{"gitId":"cyqjoseph"},"content":" ToDo todo \u003d new ToDo(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":249,"author":{"gitId":"cyqjoseph"},"content":" if (isDone) {","lastModifiedDate":"2024-01-26"},{"lineNumber":250,"author":{"gitId":"cyqjoseph"},"content":" todo.markAsDone();","lastModifiedDate":"2024-01-26"},{"lineNumber":251,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":252,"author":{"gitId":"cyqjoseph"},"content":" return todo;","lastModifiedDate":"2024-01-25"},{"lineNumber":253,"author":{"gitId":"cyqjoseph"},"content":" case \"D\":","lastModifiedDate":"2024-01-25"},{"lineNumber":254,"author":{"gitId":"cyqjoseph"},"content":" if (additionalInfo \u003d\u003d null) {","lastModifiedDate":"2024-01-25"},{"lineNumber":255,"author":{"gitId":"cyqjoseph"},"content":" throw new DukeException(\"Invalid tasks.Deadline format in file\");","lastModifiedDate":"2024-01-25"},{"lineNumber":256,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":257,"author":{"gitId":"cyqjoseph"},"content":" LocalDateTime by \u003d LocalDateTime.parse(additionalInfo);","lastModifiedDate":"2024-01-25"},{"lineNumber":258,"author":{"gitId":"cyqjoseph"},"content":" Deadline deadline \u003d new Deadline(description, by);","lastModifiedDate":"2024-01-25"},{"lineNumber":259,"author":{"gitId":"cyqjoseph"},"content":" if (isDone) {","lastModifiedDate":"2024-01-26"},{"lineNumber":260,"author":{"gitId":"cyqjoseph"},"content":" deadline.markAsDone();","lastModifiedDate":"2024-01-26"},{"lineNumber":261,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":262,"author":{"gitId":"cyqjoseph"},"content":" return deadline;","lastModifiedDate":"2024-01-25"},{"lineNumber":263,"author":{"gitId":"cyqjoseph"},"content":" case \"E\":","lastModifiedDate":"2024-01-25"},{"lineNumber":264,"author":{"gitId":"cyqjoseph"},"content":" String[] times \u003d additionalInfo.split(\" to \");","lastModifiedDate":"2024-01-25"},{"lineNumber":265,"author":{"gitId":"cyqjoseph"},"content":" if (times.length \u003c 2) {","lastModifiedDate":"2024-01-25"},{"lineNumber":266,"author":{"gitId":"cyqjoseph"},"content":" throw new DukeException(\"Invalid tasks.Event time format in file.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":267,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":268,"author":{"gitId":"cyqjoseph"},"content":" LocalDateTime start \u003d LocalDateTime.parse(times[0].trim());","lastModifiedDate":"2024-01-25"},{"lineNumber":269,"author":{"gitId":"cyqjoseph"},"content":" LocalDateTime end \u003d LocalDateTime.parse(times[1].trim());","lastModifiedDate":"2024-01-25"},{"lineNumber":270,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":271,"author":{"gitId":"cyqjoseph"},"content":" Event event \u003d new Event(description, start, end);","lastModifiedDate":"2024-01-25"},{"lineNumber":272,"author":{"gitId":"cyqjoseph"},"content":" if (isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":273,"author":{"gitId":"cyqjoseph"},"content":" event.markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":274,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":275,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":276,"author":{"gitId":"cyqjoseph"},"content":" return event;","lastModifiedDate":"2024-01-25"},{"lineNumber":277,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":278,"author":{"gitId":"cyqjoseph"},"content":" default:","lastModifiedDate":"2024-01-25"},{"lineNumber":279,"author":{"gitId":"cyqjoseph"},"content":" return null;","lastModifiedDate":"2024-01-25"},{"lineNumber":280,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":281,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":282,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"cyqjoseph":282}},{"path":"src/main/java/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package tasks;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":" * Represents a Deadline, inherits from Task.","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-19"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":" protected LocalDateTime by;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" public Deadline(String name, LocalDateTime by) {","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" super(name);","lastModifiedDate":"2024-01-19"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-19"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" public String formatBy() {","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" return this.by.format(DateTimeFormatter.ofPattern(\"MMM d yyyy hh:mm a\"));","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-19"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" public String toString() {","lastModifiedDate":"2024-01-19"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" return \"[D]\" + super.toString() + \" (by: \" + formatBy() + \")\";","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" public String fileString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" return \"D \" + super.fileString() + \" | \" + this.by;","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-19"}],"authorContributionMap":{"cyqjoseph":30}},{"path":"src/main/java/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package tasks;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":" * Represents an Event, inherits from Task.","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-19"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":" protected LocalDateTime start;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" protected LocalDateTime end;","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" public Event(String name, LocalDateTime start, LocalDateTime end) {","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" super(name);","lastModifiedDate":"2024-01-19"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-19"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-19"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" public String formatDate(LocalDateTime startEnd) {","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" return startEnd.format(DateTimeFormatter.ofPattern(\"MMM d yyyy hh:mm a\"));","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-19"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" public String toString() {","lastModifiedDate":"2024-01-19"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" return \"[E]\" + super.toString() + \" (from: \" + formatDate(this.start) + \" to: \" + formatDate(this.end) + \")\";","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" public String fileString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":" return \"E \" + super.fileString() + \" | \" + this.start + \" to \" + this.end;","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-19"}],"authorContributionMap":{"cyqjoseph":33}},{"path":"src/main/java/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package tasks;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":" * Represents a Task.","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"public class Task {","lastModifiedDate":"2024-01-19"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-19"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":" private String name;","lastModifiedDate":"2024-01-19"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":" public Task(String name) {","lastModifiedDate":"2024-01-19"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-19"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-19"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" public String getName() {","lastModifiedDate":"2024-01-19"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" return this.name;","lastModifiedDate":"2024-01-19"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" public String getStatus() {","lastModifiedDate":"2024-01-19"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" return (this.isDone ? \"X\" : \" \");","lastModifiedDate":"2024-01-19"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-19"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-19"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" public void markAsUndone() {","lastModifiedDate":"2024-01-19"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-19"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-19"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":" public String toString() {","lastModifiedDate":"2024-01-19"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":" return \"[\" + getStatus() + \"] \" + this.name;","lastModifiedDate":"2024-01-19"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"cyqjoseph"},"content":" public String fileString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"cyqjoseph"},"content":" return \"| \" + (this.isDone ? \"1\" : \"0\") + \" | \" + this.name;","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-19"}],"authorContributionMap":{"cyqjoseph":38}},{"path":"src/main/java/tasks/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package tasks;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":" * Represents a Todo, inherits from Task.","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-19"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":" public ToDo(String name) {","lastModifiedDate":"2024-01-19"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":" super(name);","lastModifiedDate":"2024-01-19"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-19"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" public String toString() {","lastModifiedDate":"2024-01-19"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-19"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" public String fileString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" return \"T \" + super.fileString();","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-19"}],"authorContributionMap":{"cyqjoseph":20}},{"path":"src/test/java/commands/AddEventCommandTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package commands;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import tasks.Event;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"import tasks.ToDo;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":"public class AddEventCommandTest {","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" public void toString_savedInTaskList_correct() {","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" Event event \u003d new Event(\"Have Dinner\", LocalDateTime.of(2024, 1, 25, 8, 0), LocalDateTime.of(2024, 1, 25, 9, 30));","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" assertEquals(\"[E][ ] Have Dinner (from: Jan 25 2024 08:00 AM to: Jan 25 2024 09:30 AM)\", event.toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" public void fileString_savedInHardDisk_correct() {","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" Event event \u003d new Event(\"Borrow books\", LocalDateTime.of(1999, 1, 25, 8, 0), LocalDateTime.of(2099, 1, 25, 9, 30));","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" assertEquals(\"E | 0 | Borrow books | 1999-01-25T08:00 to 2099-01-25T09:30\", event.fileString());","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" public void markAsDone_toString_savedInTaskList_correct() {","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" Event event \u003d new Event(\"Play Bridge\", LocalDateTime.of(2024, 1, 10, 8, 0), LocalDateTime.of(2024, 1, 12, 10, 45));","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" event.markAsDone();","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" assertEquals(\"[E][X] Play Bridge (from: Jan 10 2024 08:00 AM to: Jan 12 2024 10:45 AM)\", event.toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":" public void markAsDone_fileString_savedInHardDisk_correct() {","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":" Event event \u003d new Event(\"Play Baccarat\", LocalDateTime.of(2024, 1, 22, 23, 0), LocalDateTime.of(2024, 1, 23, 7, 00));","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":" event.markAsDone();","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"cyqjoseph"},"content":" assertEquals(\"E | 1 | Play Baccarat | 2024-01-22T23:00 to 2024-01-23T07:00\", event.fileString());","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"cyqjoseph":37}},{"path":"src/test/java/commands/AddTodoCommandTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package commands;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import tasks.ToDo;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"public class AddTodoCommandTest {","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" public void toString_savedInTaskList_correct() {","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" ToDo todo \u003d new ToDo(\"Have Dinner\");","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" assertEquals(\"[T][ ] Have Dinner\", todo.toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" public void fileString_savedInHardDisk_correct() {","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" ToDo todo \u003d new ToDo(\"Borrow books\");","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" assertEquals(\"T | 0 | Borrow books\", todo.fileString());","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" public void markAsDone_toString_savedInTaskList_correct() {","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" ToDo todo \u003d new ToDo(\"Have Breakfast\");","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" todo.markAsDone();","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" assertEquals(\"[T][X] Have Breakfast\", todo.toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" public void markAsDone_fileString_savedInHardDisk_correct() {","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":" ToDo todo \u003d new ToDo(\"Return Books\");","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":" todo.markAsDone();","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":" assertEquals(\"T | 1 | Return Books\", todo.fileString());","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"cyqjoseph":35}},{"path":"text-ui-test/data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"T | 0 | borrow book","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"E | 0 | lunch meeting | 2023-01-05T12:00 to 2023-01-05T14:00","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"cyqjoseph":2}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"todo borrow book","lastModifiedDate":"2024-01-19"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"deadline return book /by 2020-05-13","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"list","lastModifiedDate":"2024-01-19"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"event project meeting /from 05/23/2023 /to 01/07/2024","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"list","lastModifiedDate":"2024-01-19"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"mark 2","lastModifiedDate":"2024-01-19"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"mark 1","lastModifiedDate":"2024-01-19"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"list","lastModifiedDate":"2024-01-19"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"unmark 1","lastModifiedDate":"2024-01-19"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"list","lastModifiedDate":"2024-01-19"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":"event lunch meeting /from 05/01/2023 1200 /to 05/01/2023 1400","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":"find lunch","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":"delete 2","lastModifiedDate":"2024-01-19"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":"list","lastModifiedDate":"2024-01-19"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":"event","lastModifiedDate":"2024-01-19"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":"event hello","lastModifiedDate":"2024-01-19"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":"unmark -1","lastModifiedDate":"2024-01-19"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":"unmark 5","lastModifiedDate":"2024-01-19"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":"deadline /by Tuesday","lastModifiedDate":"2024-01-19"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":"delete 0","lastModifiedDate":"2024-01-19"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":"delete 2","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":"event lunch meeting /from 05/01/2023 1200 /to 05/01/2023 2500","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":"unmark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":"bye","lastModifiedDate":"2024-01-19"}],"authorContributionMap":{"cyqjoseph":25}}] diff --git a/cyqjoseph_ip_master/commits.json b/cyqjoseph_ip_master/commits.json index dca1c23e..cbb1dbe6 100644 --- a/cyqjoseph_ip_master/commits.json +++ b/cyqjoseph_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"cyqjoseph":[{"date":"2024-01-19","commitResults":[{"hash":"6122fcfddd27da769471af48e5dfb382203ad79e","isMergeCommit":false,"messageTitle":"Done Level-1: Echo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":4}}},{"hash":"f44f1fb1c46f81ea29708d3b90a5afbb89d7cbf5","isMergeCommit":false,"messageTitle":"Done Level-2: Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":2}}},{"hash":"efde7a681b31b73f2bec1245f99c653fe2e7d766","isMergeCommit":false,"messageTitle":"Done Level-3: Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":141,"deletions":68}}},{"hash":"accf49d664a3955cd26413e1e255f82219a1debb","isMergeCommit":false,"messageTitle":"Done Level-4: ToDo, Event, Deadline","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":88,"deletions":7}}},{"hash":"b0989fb4458f53cc2e7261ac05c006ce4e7e73a4","isMergeCommit":false,"messageTitle":"Done A-TextUiTesting: Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0},"java":{"insertions":12,"deletions":12}}},{"hash":"a904e0c85b9b4243e43fc5256100bf343ab5f9f3","isMergeCommit":false,"messageTitle":"Done Level-5: Handle Errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0}}},{"hash":"9c28a42a0b75b91587f63cd977eb3b7cf685cfe0","isMergeCommit":false,"messageTitle":"Done Level-6: Delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":1},"java":{"insertions":67,"deletions":41}}},{"hash":"15411afa6bdfcf5f7f66d1e8b1a9d3e82def8621","isMergeCommit":false,"messageTitle":"Done A-Enums: Use Enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":11}}}]},{"date":"2024-01-24","commitResults":[{"hash":"09b8f448abe415c8e48df38918ac096ca9a85419","isMergeCommit":false,"messageTitle":"Done Level-7","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":106,"deletions":1}}},{"hash":"44ed4e945cc6ed7e4940eab7a35e19c38e5ad5fe","isMergeCommit":true,"messageTitle":"Merge branch-Level-7 into master","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-25","commitResults":[{"hash":"6f7f4a7888a52fd9e35d2f7860e2727f9fcffd86","isMergeCommit":false,"messageTitle":"Done Level-8","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":2},"java":{"insertions":84,"deletions":16}}},{"hash":"9a2ce2af7d2f7af7273ffb87ab03a91a4a1d2b29","isMergeCommit":true,"messageTitle":"Merge branch-Level-8 into master","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"dbfc24b1a9258fc9fa657765b4eef49e0147c489","isMergeCommit":false,"messageTitle":"Done A-MoreOOP","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":7},"java":{"insertions":499,"deletions":212}}},{"hash":"6ed300ca9931356a65160bbc8efce06a5c7219cc","isMergeCommit":true,"messageTitle":"Merge branch-A-MoreOOP into master","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"a1b54c6b9cbe633fd41aa623b09745116af6855a","isMergeCommit":false,"messageTitle":"Done A-Packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":2}}},{"hash":"fbde715426fb4b6b871e111a6925bc7c63f39dd4","isMergeCommit":false,"messageTitle":"Done A-Packages","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":127,"deletions":26}}},{"hash":"5a494982b55b3db995e596ea06bde30ef76d0bd3","isMergeCommit":true,"messageTitle":"Merge branch-A-Packages into master","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"96e95d905a8ffa77618aaea595098e0fc2c6ba8b","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027 Added gradle support","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"356fceb0c6f3ec44999071806dc8c4e772014fac","isMergeCommit":false,"messageTitle":"Done A-Junit","messageBody":"","tags":["A-Junit"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":72,"deletions":0}}}]},{"date":"2024-01-26","commitResults":[{"hash":"cf7f06b19a3ffa7d5304d57e835a07d2e98526d6","isMergeCommit":false,"messageTitle":"Done A-Jar","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"3cacd8c01421cc4c5668d2126f6725637b353779","isMergeCommit":false,"messageTitle":"Done A-JavaDoc","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":162,"deletions":114}}},{"hash":"bcfa72cc4365396d92e9f80b9cc5e43884f168c9","isMergeCommit":false,"messageTitle":"Done A-CodingStandard","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":117}}},{"hash":"ec5e58ec92e44f853be53a04ea4e5fef590ab957","isMergeCommit":false,"messageTitle":"Done Level-9-Find","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0}}},{"hash":"1a4577c303499ee9006e90fb82580c66d7159a1b","isMergeCommit":false,"messageTitle":"Done A-JavaDoc, A-CodingStandard, Level-9","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":82,"deletions":117}}},{"hash":"fd0b396066ba77b2cddca353e3db0b0c4b8a6287","isMergeCommit":true,"messageTitle":"Resolved merge conflicts and merged branch-A-JavaDoc","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a68abe181a3f46aba5733cad64d9f58fb26d3a02","isMergeCommit":true,"messageTitle":"Merged A-CodingStandard branch with master","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"cf340081a8ceeb65d64e2c568ce1f6a6275e69fb","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"cyqjoseph":{"java":1036,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":1,"txt":33}},"authorContributionVariance":{"cyqjoseph":148434.86},"authorDisplayNameMap":{"cyqjoseph":"CS2103T-W11-3 CHAN..SEPH"}} +{"authorDailyContributionsMap":{"cyqjoseph":[{"date":"2024-01-19","commitResults":[{"hash":"6122fcfddd27da769471af48e5dfb382203ad79e","isMergeCommit":false,"messageTitle":"Done Level-1: Echo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":4}}},{"hash":"f44f1fb1c46f81ea29708d3b90a5afbb89d7cbf5","isMergeCommit":false,"messageTitle":"Done Level-2: Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":2}}},{"hash":"efde7a681b31b73f2bec1245f99c653fe2e7d766","isMergeCommit":false,"messageTitle":"Done Level-3: Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":141,"deletions":68}}},{"hash":"accf49d664a3955cd26413e1e255f82219a1debb","isMergeCommit":false,"messageTitle":"Done Level-4: ToDo, Event, Deadline","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":88,"deletions":7}}},{"hash":"b0989fb4458f53cc2e7261ac05c006ce4e7e73a4","isMergeCommit":false,"messageTitle":"Done A-TextUiTesting: Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0},"java":{"insertions":12,"deletions":12}}},{"hash":"a904e0c85b9b4243e43fc5256100bf343ab5f9f3","isMergeCommit":false,"messageTitle":"Done Level-5: Handle Errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0}}},{"hash":"9c28a42a0b75b91587f63cd977eb3b7cf685cfe0","isMergeCommit":false,"messageTitle":"Done Level-6: Delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":1},"java":{"insertions":67,"deletions":41}}},{"hash":"15411afa6bdfcf5f7f66d1e8b1a9d3e82def8621","isMergeCommit":false,"messageTitle":"Done A-Enums: Use Enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":11}}}]},{"date":"2024-01-24","commitResults":[{"hash":"09b8f448abe415c8e48df38918ac096ca9a85419","isMergeCommit":false,"messageTitle":"Done Level-7","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":106,"deletions":1}}},{"hash":"44ed4e945cc6ed7e4940eab7a35e19c38e5ad5fe","isMergeCommit":true,"messageTitle":"Merge branch-Level-7 into master","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-25","commitResults":[{"hash":"6f7f4a7888a52fd9e35d2f7860e2727f9fcffd86","isMergeCommit":false,"messageTitle":"Done Level-8","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":2},"java":{"insertions":84,"deletions":16}}},{"hash":"9a2ce2af7d2f7af7273ffb87ab03a91a4a1d2b29","isMergeCommit":true,"messageTitle":"Merge branch-Level-8 into master","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"dbfc24b1a9258fc9fa657765b4eef49e0147c489","isMergeCommit":false,"messageTitle":"Done A-MoreOOP","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":7},"java":{"insertions":499,"deletions":212}}},{"hash":"6ed300ca9931356a65160bbc8efce06a5c7219cc","isMergeCommit":true,"messageTitle":"Merge branch-A-MoreOOP into master","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"a1b54c6b9cbe633fd41aa623b09745116af6855a","isMergeCommit":false,"messageTitle":"Done A-Packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":2}}},{"hash":"fbde715426fb4b6b871e111a6925bc7c63f39dd4","isMergeCommit":false,"messageTitle":"Done A-Packages","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":127,"deletions":26}}},{"hash":"5a494982b55b3db995e596ea06bde30ef76d0bd3","isMergeCommit":true,"messageTitle":"Merge branch-A-Packages into master","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"96e95d905a8ffa77618aaea595098e0fc2c6ba8b","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027 Added gradle support","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"356fceb0c6f3ec44999071806dc8c4e772014fac","isMergeCommit":false,"messageTitle":"Done A-Junit","messageBody":"","tags":["A-Junit"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":72,"deletions":0}}}]},{"date":"2024-01-26","commitResults":[{"hash":"cf7f06b19a3ffa7d5304d57e835a07d2e98526d6","isMergeCommit":false,"messageTitle":"Done A-Jar","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"3cacd8c01421cc4c5668d2126f6725637b353779","isMergeCommit":false,"messageTitle":"Done A-JavaDoc","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":162,"deletions":114}}},{"hash":"bcfa72cc4365396d92e9f80b9cc5e43884f168c9","isMergeCommit":false,"messageTitle":"Done A-CodingStandard","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":117}}},{"hash":"ec5e58ec92e44f853be53a04ea4e5fef590ab957","isMergeCommit":false,"messageTitle":"Done Level-9-Find","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0}}},{"hash":"1a4577c303499ee9006e90fb82580c66d7159a1b","isMergeCommit":false,"messageTitle":"Done A-JavaDoc, A-CodingStandard, Level-9","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":82,"deletions":117}}},{"hash":"fd0b396066ba77b2cddca353e3db0b0c4b8a6287","isMergeCommit":true,"messageTitle":"Resolved merge conflicts and merged branch-A-JavaDoc","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a68abe181a3f46aba5733cad64d9f58fb26d3a02","isMergeCommit":true,"messageTitle":"Merged A-CodingStandard branch with master","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"cf340081a8ceeb65d64e2c568ce1f6a6275e69fb","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-01-30","commitResults":[{"hash":"4e379bbac7e3e1ede32f387beab8d30cea9d190f","isMergeCommit":false,"messageTitle":"Done A-CheckStyle","messageBody":"","tags":["A-CheckStyle"],"fileTypesAndContributionMap":{"gradle":{"insertions":5,"deletions":0},"java":{"insertions":56,"deletions":50}}}]}]},"authorFileTypeContributionMap":{"cyqjoseph":{"java":1042,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":6,"txt":33}},"authorContributionVariance":{"cyqjoseph":116212.914},"authorDisplayNameMap":{"cyqjoseph":"CS2103T-W11-3 CHAN..SEPH"}} diff --git a/darryl-chan_ip_master/authorship.json b/darryl-chan_ip_master/authorship.json index e48fffd1..7f5b33f8 100644 --- a/darryl-chan_ip_master/authorship.json +++ b/darryl-chan_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"darryl-chan"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"darryl-chan"},"content":" protected String by;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"darryl-chan"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"darryl-chan"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"darryl-chan"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"darryl-chan"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"darryl-chan"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"darryl-chan"},"content":" return String.format(\"%s%s%s\",","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"darryl-chan"},"content":" \"[D]\",","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"darryl-chan"},"content":" super.toString(),","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"darryl-chan"},"content":" \" (by: \" + this.by + \")\");","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"darryl-chan"},"content":" ","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"darryl-chan"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"darryl-chan":18}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":3,"author":{"gitId":"darryl-chan"},"content":" String logo \u003d \" __ _ \\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"darryl-chan"},"content":" + \" / / (_)___ __ _______\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"darryl-chan"},"content":" + \" / / / / __ \\\\/ / / / ___/\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"darryl-chan"},"content":" + \" / /___/ / / / / /_/ (__ ) \\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"darryl-chan"},"content":" + \"/_____/_/_/ /_/\\\\__,_/____/ \\n\";","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":" System.out.println(\"Hello from\\n\" + logo);","lastModifiedDate":"2019-07-29"},{"lineNumber":10,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"darryl-chan"},"content":" Program program \u003d new Program();","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"darryl-chan"},"content":" program.start();","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"},{"lineNumber":16,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"darryl-chan":11,"-":5}},{"path":"src/main/java/DukeCeption.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"darryl-chan"},"content":"public class DukeCeption extends Exception {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"darryl-chan"},"content":" public DukeCeption(String error) {","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"darryl-chan"},"content":" super(error);","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"darryl-chan"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"darryl-chan":5}},{"path":"src/main/java/EmptyMessegeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"darryl-chan"},"content":"public class EmptyMessegeException extends DukeCeption {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"darryl-chan"},"content":" public EmptyMessegeException(String error) {","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"darryl-chan"},"content":" super(error);","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"darryl-chan"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"darryl-chan":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"darryl-chan"},"content":"public class Event extends Task{","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"darryl-chan"},"content":" protected String from;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"darryl-chan"},"content":" protected String to;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"darryl-chan"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"darryl-chan"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"darryl-chan"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"darryl-chan"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"darryl-chan"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"darryl-chan"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"darryl-chan"},"content":" return \"[E]\" + super.toString() + ","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"darryl-chan"},"content":" String.format(\" (from: %s to: %s)\", this.from, this.to);","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"darryl-chan"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"darryl-chan":16}},{"path":"src/main/java/PrintList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"darryl-chan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-21"},{"lineNumber":2,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":3,"author":{"gitId":"darryl-chan"},"content":"public class PrintList {","lastModifiedDate":"2024-01-21"},{"lineNumber":4,"author":{"gitId":"darryl-chan"},"content":" private final String BORDER \u003d \"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\";","lastModifiedDate":"2024-01-21"},{"lineNumber":5,"author":{"gitId":"darryl-chan"},"content":" private ArrayList\u003cString\u003e printList;","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"darryl-chan"},"content":" public PrintList() {","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"darryl-chan"},"content":" this.printList \u003d new ArrayList\u003cString\u003e();","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"darryl-chan"},"content":" ","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"darryl-chan"},"content":" public void add(String print) {","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"darryl-chan"},"content":" this.printList.add(print);","lastModifiedDate":"2024-01-21"},{"lineNumber":14,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":15,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":16,"author":{"gitId":"darryl-chan"},"content":" public void print() {","lastModifiedDate":"2024-01-21"},{"lineNumber":17,"author":{"gitId":"darryl-chan"},"content":" System.out.println(this.toString());","lastModifiedDate":"2024-01-21"},{"lineNumber":18,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":19,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":20,"author":{"gitId":"darryl-chan"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":21,"author":{"gitId":"darryl-chan"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":22,"author":{"gitId":"darryl-chan"},"content":" String finalString \u003d \"\";","lastModifiedDate":"2024-01-21"},{"lineNumber":23,"author":{"gitId":"darryl-chan"},"content":" for (int i \u003d 0; i \u003c this.printList.size(); i++) {","lastModifiedDate":"2024-01-21"},{"lineNumber":24,"author":{"gitId":"darryl-chan"},"content":" if (i \u003d\u003d this.printList.size() - 1) {","lastModifiedDate":"2024-01-21"},{"lineNumber":25,"author":{"gitId":"darryl-chan"},"content":" finalString +\u003d String.format(\"\\t%s\", this.printList.get(i));","lastModifiedDate":"2024-01-21"},{"lineNumber":26,"author":{"gitId":"darryl-chan"},"content":" } else {","lastModifiedDate":"2024-01-21"},{"lineNumber":27,"author":{"gitId":"darryl-chan"},"content":" finalString +\u003d String.format(\"\\t%s\\n\", this.printList.get(i));","lastModifiedDate":"2024-01-21"},{"lineNumber":28,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":29,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":30,"author":{"gitId":"darryl-chan"},"content":" this.printList.clear();","lastModifiedDate":"2024-01-21"},{"lineNumber":31,"author":{"gitId":"darryl-chan"},"content":" return String.format(\"\\t%s\\n%s\\n\\t%s\",","lastModifiedDate":"2024-01-21"},{"lineNumber":32,"author":{"gitId":"darryl-chan"},"content":" this.BORDER,","lastModifiedDate":"2024-01-21"},{"lineNumber":33,"author":{"gitId":"darryl-chan"},"content":" finalString,","lastModifiedDate":"2024-01-21"},{"lineNumber":34,"author":{"gitId":"darryl-chan"},"content":" this.BORDER);","lastModifiedDate":"2024-01-21"},{"lineNumber":35,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":36,"author":{"gitId":"darryl-chan"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"darryl-chan":36}},{"path":"src/main/java/Program.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"darryl-chan"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-21"},{"lineNumber":2,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":3,"author":{"gitId":"darryl-chan"},"content":"public class Program {","lastModifiedDate":"2024-01-21"},{"lineNumber":4,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":5,"author":{"gitId":"darryl-chan"},"content":" private final String NAME \u003d \"Linus\";","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"darryl-chan"},"content":" private Boolean running;","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"darryl-chan"},"content":" private Scanner userInputScanner;","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"darryl-chan"},"content":" private TaskList taskList;","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"darryl-chan"},"content":" private PrintList printList;","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"darryl-chan"},"content":" public Program() {","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"darryl-chan"},"content":" this.running \u003d true;","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"darryl-chan"},"content":" this.userInputScanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-21"},{"lineNumber":14,"author":{"gitId":"darryl-chan"},"content":" this.taskList \u003d new TaskList();","lastModifiedDate":"2024-01-21"},{"lineNumber":15,"author":{"gitId":"darryl-chan"},"content":" this.printList \u003d new PrintList();","lastModifiedDate":"2024-01-21"},{"lineNumber":16,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":17,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":18,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":19,"author":{"gitId":"darryl-chan"},"content":" public void start() {","lastModifiedDate":"2024-01-21"},{"lineNumber":20,"author":{"gitId":"darryl-chan"},"content":" this.greeting();","lastModifiedDate":"2024-01-21"},{"lineNumber":21,"author":{"gitId":"darryl-chan"},"content":" while (this.running) {","lastModifiedDate":"2024-01-21"},{"lineNumber":22,"author":{"gitId":"darryl-chan"},"content":" String userInput \u003d this.userInputScanner.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"darryl-chan"},"content":" this.readUserInput(userInput);","lastModifiedDate":"2024-01-21"},{"lineNumber":24,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":25,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":26,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":27,"author":{"gitId":"darryl-chan"},"content":" private void readUserInput(String input) {","lastModifiedDate":"2024-01-21"},{"lineNumber":28,"author":{"gitId":"darryl-chan"},"content":" String[] userInput \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"darryl-chan"},"content":" String command \u003d userInput[0].toLowerCase();","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"darryl-chan"},"content":" String taskNumber;","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"darryl-chan"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"darryl-chan"},"content":" switch (command) {","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"darryl-chan"},"content":" case \"bye\":","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"darryl-chan"},"content":" this.end();","lastModifiedDate":"2024-01-21"},{"lineNumber":36,"author":{"gitId":"darryl-chan"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"darryl-chan"},"content":" case \"list\":","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"darryl-chan"},"content":" this.taskList.getList(this.printList);","lastModifiedDate":"2024-01-21"},{"lineNumber":39,"author":{"gitId":"darryl-chan"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"darryl-chan"},"content":" case \"mark\": case \"unmark\": case \"delete\":","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"darryl-chan"},"content":" if (userInput.length !\u003d 2) {","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"darryl-chan"},"content":" throw new DukeCeption(\"A number is required after writing this command\");","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"darryl-chan"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"darryl-chan"},"content":" taskNumber \u003d userInput[1];","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"darryl-chan"},"content":" this.taskList.markOrDelete(command, taskNumber, this.printList);","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"darryl-chan"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"darryl-chan"},"content":" case \"todo\": case \"deadline\": case \"event\":","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"darryl-chan"},"content":" if (userInput.length !\u003d 2) {","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"darryl-chan"},"content":" throw new DukeCeption(\"Event description cannot be empty\");","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"darryl-chan"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"darryl-chan"},"content":" String task \u003d userInput[1];","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"darryl-chan"},"content":" this.taskList.addTask(command, task, this.printList);","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"darryl-chan"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"darryl-chan"},"content":" default:","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"darryl-chan"},"content":" throw new DukeCeption(\"Sorry I don\u0027t recognize that command :/\");","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":59,"author":{"gitId":"darryl-chan"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"darryl-chan"},"content":" printList.add(e.getMessage());","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"darryl-chan"},"content":" } finally {","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"darryl-chan"},"content":" this.printList.print();","lastModifiedDate":"2024-01-22"},{"lineNumber":63,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":65,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":66,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":67,"author":{"gitId":"darryl-chan"},"content":" private void greeting() {","lastModifiedDate":"2024-01-21"},{"lineNumber":68,"author":{"gitId":"darryl-chan"},"content":" String greeting \u003d String.format(\"Hello I\u0027m %s\", this.NAME);","lastModifiedDate":"2024-01-21"},{"lineNumber":69,"author":{"gitId":"darryl-chan"},"content":" String request \u003d \"What can I do for you?\";","lastModifiedDate":"2024-01-21"},{"lineNumber":70,"author":{"gitId":"darryl-chan"},"content":" this.printList.add(greeting);","lastModifiedDate":"2024-01-21"},{"lineNumber":71,"author":{"gitId":"darryl-chan"},"content":" this.printList.add(request);","lastModifiedDate":"2024-01-21"},{"lineNumber":72,"author":{"gitId":"darryl-chan"},"content":" this.printList.print();","lastModifiedDate":"2024-01-21"},{"lineNumber":73,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":74,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":75,"author":{"gitId":"darryl-chan"},"content":" private void end() {","lastModifiedDate":"2024-01-21"},{"lineNumber":76,"author":{"gitId":"darryl-chan"},"content":" String exit \u003d \"Goodbye. See you later!\";","lastModifiedDate":"2024-01-21"},{"lineNumber":77,"author":{"gitId":"darryl-chan"},"content":" this.printList.add(exit);","lastModifiedDate":"2024-01-21"},{"lineNumber":78,"author":{"gitId":"darryl-chan"},"content":" this.running \u003d false;","lastModifiedDate":"2024-01-21"},{"lineNumber":79,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":80,"author":{"gitId":"darryl-chan"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"darryl-chan":80}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"darryl-chan"},"content":"public class Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":2,"author":{"gitId":"darryl-chan"},"content":" protected String description;","lastModifiedDate":"2024-01-21"},{"lineNumber":3,"author":{"gitId":"darryl-chan"},"content":" protected Boolean isDone;","lastModifiedDate":"2024-01-21"},{"lineNumber":4,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":5,"author":{"gitId":"darryl-chan"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"darryl-chan"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"darryl-chan"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"darryl-chan"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"darryl-chan"},"content":" return (this.isDone ? \"X\" : \" \");","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":14,"author":{"gitId":"darryl-chan"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-21"},{"lineNumber":15,"author":{"gitId":"darryl-chan"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-21"},{"lineNumber":16,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":17,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":18,"author":{"gitId":"darryl-chan"},"content":" public void markAsNotDone() {","lastModifiedDate":"2024-01-21"},{"lineNumber":19,"author":{"gitId":"darryl-chan"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-21"},{"lineNumber":20,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":21,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":22,"author":{"gitId":"darryl-chan"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":23,"author":{"gitId":"darryl-chan"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":24,"author":{"gitId":"darryl-chan"},"content":" return String.format(\"[%s] %s\",","lastModifiedDate":"2024-01-21"},{"lineNumber":25,"author":{"gitId":"darryl-chan"},"content":" this.getStatusIcon(),","lastModifiedDate":"2024-01-21"},{"lineNumber":26,"author":{"gitId":"darryl-chan"},"content":" this.description);","lastModifiedDate":"2024-01-21"},{"lineNumber":27,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":28,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":29,"author":{"gitId":"darryl-chan"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"darryl-chan":29}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"darryl-chan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-21"},{"lineNumber":2,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":3,"author":{"gitId":"darryl-chan"},"content":"public class TaskList {","lastModifiedDate":"2024-01-21"},{"lineNumber":4,"author":{"gitId":"darryl-chan"},"content":" ","lastModifiedDate":"2024-01-21"},{"lineNumber":5,"author":{"gitId":"darryl-chan"},"content":" ArrayList\u003cTask\u003e list;","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"darryl-chan"},"content":" public TaskList() {","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"darryl-chan"},"content":" this.list \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"darryl-chan"},"content":" public void printListAddNewTask(Task task, PrintList printList) {","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"darryl-chan"},"content":" printList.add(String.format(\"Okay! added this task:\"));","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"darryl-chan"},"content":" printList.add(task.toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"darryl-chan"},"content":" printList.add(String.format(\"Now you have %d tasks in the list.\", this.list.size()));","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"darryl-chan"},"content":" public void addTask(String task, String fullDescription, PrintList printList) throws DukeCeption {","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"darryl-chan"},"content":" try {","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"darryl-chan"},"content":" switch (task) {","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"darryl-chan"},"content":" case \"todo\":","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"darryl-chan"},"content":" this.addTodo(fullDescription, printList);","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"darryl-chan"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"darryl-chan"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"darryl-chan"},"content":" this.addDeadline(fullDescription, printList);","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"darryl-chan"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"darryl-chan"},"content":" case \"event\":","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"darryl-chan"},"content":" this.addEvent(fullDescription, printList);","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"darryl-chan"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"darryl-chan"},"content":" } catch (StringIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"darryl-chan"},"content":" throw new DukeCeption(\"Make sure your /from/to/by is correct\");","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"darryl-chan"},"content":" public void addTodo(String description, PrintList printList) throws DukeCeption {","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"darryl-chan"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"darryl-chan"},"content":" throw new DukeCeption(\"Todo cannot be empty!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"darryl-chan"},"content":" } else {","lastModifiedDate":"2024-01-22"},{"lineNumber":39,"author":{"gitId":"darryl-chan"},"content":" Task task \u003d new ToDo(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":40,"author":{"gitId":"darryl-chan"},"content":" this.list.add(task);","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"darryl-chan"},"content":" this.printListAddNewTask(task, printList);","lastModifiedDate":"2024-01-22"},{"lineNumber":42,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":43,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":44,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":45,"author":{"gitId":"darryl-chan"},"content":" public void addDeadline(String description, PrintList printList) throws DukeCeption {","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"darryl-chan"},"content":" String[] descriptionList \u003d description.split(\"/by\", 2);","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"darryl-chan"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"darryl-chan"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2024-01-22"},{"lineNumber":49,"author":{"gitId":"darryl-chan"},"content":" throw new DukeCeption(\"Deadline cannot be empty!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"darryl-chan"},"content":" } else {","lastModifiedDate":"2024-01-22"},{"lineNumber":51,"author":{"gitId":"darryl-chan"},"content":" String taskDescription \u003d descriptionList[0].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"darryl-chan"},"content":" String by \u003d descriptionList[1].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"darryl-chan"},"content":" Task task \u003d new Deadline(taskDescription, by);","lastModifiedDate":"2024-01-22"},{"lineNumber":54,"author":{"gitId":"darryl-chan"},"content":" this.list.add(task);","lastModifiedDate":"2024-01-22"},{"lineNumber":55,"author":{"gitId":"darryl-chan"},"content":" this.printListAddNewTask(task, printList);","lastModifiedDate":"2024-01-22"},{"lineNumber":56,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":57,"author":{"gitId":"darryl-chan"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"darryl-chan"},"content":" throw new DukeCeption(\"Make sure /by is written properly\");","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"darryl-chan"},"content":" ","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":62,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":63,"author":{"gitId":"darryl-chan"},"content":" public void addEvent(String description, PrintList printList) throws DukeCeption {","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"darryl-chan"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"darryl-chan"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2024-01-22"},{"lineNumber":66,"author":{"gitId":"darryl-chan"},"content":" throw new DukeCeption(\"Event cannot be empty!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"darryl-chan"},"content":" } else {","lastModifiedDate":"2024-01-22"},{"lineNumber":68,"author":{"gitId":"darryl-chan"},"content":" String[] descriptionList \u003d description.split(\"/from\", 2);","lastModifiedDate":"2024-01-25"},{"lineNumber":69,"author":{"gitId":"darryl-chan"},"content":" String[] fromAndToList \u003d descriptionList[1].split(\"/to\", 2);","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"darryl-chan"},"content":" String taskDescription \u003d descriptionList[0].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"darryl-chan"},"content":" String from \u003d fromAndToList[0].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"darryl-chan"},"content":" String to \u003d fromAndToList[1].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"darryl-chan"},"content":" Task task \u003d new Event(taskDescription, from, to);","lastModifiedDate":"2024-01-22"},{"lineNumber":74,"author":{"gitId":"darryl-chan"},"content":" this.list.add(task);","lastModifiedDate":"2024-01-22"},{"lineNumber":75,"author":{"gitId":"darryl-chan"},"content":" this.printListAddNewTask(task, printList);","lastModifiedDate":"2024-01-22"},{"lineNumber":76,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":77,"author":{"gitId":"darryl-chan"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"darryl-chan"},"content":" throw new DukeCeption(\"Make sure /from and /to is written properly\");","lastModifiedDate":"2024-01-25"},{"lineNumber":79,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":80,"author":{"gitId":"darryl-chan"},"content":" ","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":82,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":83,"author":{"gitId":"darryl-chan"},"content":" public void markOrDelete(String command, String taskNumberString, PrintList printList) throws DukeCeption {","lastModifiedDate":"2024-01-25"},{"lineNumber":84,"author":{"gitId":"darryl-chan"},"content":" try {","lastModifiedDate":"2024-01-22"},{"lineNumber":85,"author":{"gitId":"darryl-chan"},"content":" int taskNumber \u003d Integer.parseInt(taskNumberString);","lastModifiedDate":"2024-01-25"},{"lineNumber":86,"author":{"gitId":"darryl-chan"},"content":" switch (command) {","lastModifiedDate":"2024-01-25"},{"lineNumber":87,"author":{"gitId":"darryl-chan"},"content":" case \"mark\":","lastModifiedDate":"2024-01-25"},{"lineNumber":88,"author":{"gitId":"darryl-chan"},"content":" this.mark(taskNumber, printList);","lastModifiedDate":"2024-01-22"},{"lineNumber":89,"author":{"gitId":"darryl-chan"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":90,"author":{"gitId":"darryl-chan"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-25"},{"lineNumber":91,"author":{"gitId":"darryl-chan"},"content":" this.unmark(taskNumber, printList);","lastModifiedDate":"2024-01-22"},{"lineNumber":92,"author":{"gitId":"darryl-chan"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":93,"author":{"gitId":"darryl-chan"},"content":" case \"delete\":","lastModifiedDate":"2024-01-25"},{"lineNumber":94,"author":{"gitId":"darryl-chan"},"content":" this.delete(taskNumber, printList);","lastModifiedDate":"2024-01-25"},{"lineNumber":95,"author":{"gitId":"darryl-chan"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":96,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":97,"author":{"gitId":"darryl-chan"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":98,"author":{"gitId":"darryl-chan"},"content":" throw new DukeCeption(\"The number given is unrecognizable\");","lastModifiedDate":"2024-01-25"},{"lineNumber":99,"author":{"gitId":"darryl-chan"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-22"},{"lineNumber":100,"author":{"gitId":"darryl-chan"},"content":" throw new DukeCeption(\"The number is not in this list!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":101,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":102,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":103,"author":{"gitId":"darryl-chan"},"content":" ","lastModifiedDate":"2024-01-22"},{"lineNumber":104,"author":{"gitId":"darryl-chan"},"content":" public void delete(int taskNumber, PrintList printList) throws DukeCeption {","lastModifiedDate":"2024-01-25"},{"lineNumber":105,"author":{"gitId":"darryl-chan"},"content":" Task removedTask \u003d this.list.get(taskNumber - 1);","lastModifiedDate":"2024-01-25"},{"lineNumber":106,"author":{"gitId":"darryl-chan"},"content":" this.list.remove(taskNumber - 1);","lastModifiedDate":"2024-01-25"},{"lineNumber":107,"author":{"gitId":"darryl-chan"},"content":" printList.add(\"This task is now removed:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":108,"author":{"gitId":"darryl-chan"},"content":" printList.add(removedTask.toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":109,"author":{"gitId":"darryl-chan"},"content":" printList.add(String.format(\"Now you have %d tasks in the list.\", this.list.size()));","lastModifiedDate":"2024-01-25"},{"lineNumber":110,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":111,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":112,"author":{"gitId":"darryl-chan"},"content":" public void mark(int taskNumber, PrintList printList) {","lastModifiedDate":"2024-01-21"},{"lineNumber":113,"author":{"gitId":"darryl-chan"},"content":" Task task \u003d this.list.get(taskNumber - 1);","lastModifiedDate":"2024-01-21"},{"lineNumber":114,"author":{"gitId":"darryl-chan"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-21"},{"lineNumber":115,"author":{"gitId":"darryl-chan"},"content":" printList.add(\"Great! I will mark this as done:\");","lastModifiedDate":"2024-01-22"},{"lineNumber":116,"author":{"gitId":"darryl-chan"},"content":" printList.add(task.toString());","lastModifiedDate":"2024-01-21"},{"lineNumber":117,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":118,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":119,"author":{"gitId":"darryl-chan"},"content":" public void unmark(int taskNumber, PrintList printList) {","lastModifiedDate":"2024-01-21"},{"lineNumber":120,"author":{"gitId":"darryl-chan"},"content":" Task task \u003d this.list.get(taskNumber - 1);","lastModifiedDate":"2024-01-21"},{"lineNumber":121,"author":{"gitId":"darryl-chan"},"content":" task.markAsNotDone();","lastModifiedDate":"2024-01-21"},{"lineNumber":122,"author":{"gitId":"darryl-chan"},"content":" printList.add(\"Alright! this task is now unmarked:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":123,"author":{"gitId":"darryl-chan"},"content":" printList.add(task.toString());","lastModifiedDate":"2024-01-21"},{"lineNumber":124,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":125,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":126,"author":{"gitId":"darryl-chan"},"content":" public void getList(PrintList printList) {","lastModifiedDate":"2024-01-21"},{"lineNumber":127,"author":{"gitId":"darryl-chan"},"content":" printList.add(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-21"},{"lineNumber":128,"author":{"gitId":"darryl-chan"},"content":" for (int i \u003d 0; i \u003c this.list.size(); i++) {","lastModifiedDate":"2024-01-21"},{"lineNumber":129,"author":{"gitId":"darryl-chan"},"content":" printList.add(String.format(\"%d. %s\",","lastModifiedDate":"2024-01-21"},{"lineNumber":130,"author":{"gitId":"darryl-chan"},"content":" i + 1,","lastModifiedDate":"2024-01-21"},{"lineNumber":131,"author":{"gitId":"darryl-chan"},"content":" this.list.get(i)));","lastModifiedDate":"2024-01-21"},{"lineNumber":132,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":133,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":134,"author":{"gitId":"darryl-chan"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"darryl-chan":134}},{"path":"src/main/java/Test.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"darryl-chan"},"content":"public class Test {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"darryl-chan"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"darryl-chan"},"content":" String testing \u003d \"ABSCSD\";","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"darryl-chan"},"content":" System.out.println(testing.indexOf(\"SC\"));","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"darryl-chan"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"darryl-chan":7}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"darryl-chan"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"darryl-chan"},"content":" ","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"darryl-chan"},"content":" public ToDo(String description){","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"darryl-chan"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"darryl-chan"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"darryl-chan"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"darryl-chan"},"content":" return String.format(\"%s%s\", \"[T]\", super.toString());","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"darryl-chan"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"darryl-chan":12}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"darryl-chan"},"content":"todo return book","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"darryl-chan"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"darryl-chan"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"darryl-chan"},"content":"mark 2","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"darryl-chan"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"darryl-chan"},"content":"todo","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"darryl-chan"},"content":"deadline return book ","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"darryl-chan"},"content":"event project meeting /from Mon 2pm","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"darryl-chan"},"content":"delete 5","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"darryl-chan":9}},{"path":"text-ui-test/runtest1.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"darryl-chan"},"content":"@ECHO OFF","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"darryl-chan"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"darryl-chan"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"darryl-chan"},"content":"REM delete output from previous run","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"darryl-chan"},"content":"del ACTUAL.TXT","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"darryl-chan"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"darryl-chan"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"darryl-chan"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"darryl-chan"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"darryl-chan"},"content":" exit /b 1","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"darryl-chan"},"content":")","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"darryl-chan"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"darryl-chan"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"darryl-chan"},"content":"java -classpath ..\\bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"darryl-chan"},"content":"REM compare the output to the expected output","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"darryl-chan"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"darryl-chan":21}}] +[{"path":"data/linus.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"darryl-chan"},"content":"[T][ ] 213","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"darryl-chan"},"content":"[D][X] eat (by: tomorrow)","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"darryl-chan"},"content":"[E][ ] reading (from: 8978 to: 28739)","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"darryl-chan":3}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"darryl-chan"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"darryl-chan"},"content":" protected String by;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"darryl-chan"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"darryl-chan"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"darryl-chan"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"darryl-chan"},"content":" public Deadline(String description, String by, boolean isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"darryl-chan"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"darryl-chan"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"darryl-chan"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"darryl-chan"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"darryl-chan"},"content":" return String.format(\"%s%s%s\",","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"darryl-chan"},"content":" \"[D]\",","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"darryl-chan"},"content":" super.toString(),","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"darryl-chan"},"content":" \" (by: \" + this.by + \")\");","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"darryl-chan"},"content":" ","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"darryl-chan"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"darryl-chan":23}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":3,"author":{"gitId":"darryl-chan"},"content":" String logo \u003d \" __ _ \\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"darryl-chan"},"content":" + \" / / (_)___ __ _______\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"darryl-chan"},"content":" + \" / / / / __ \\\\/ / / / ___/\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"darryl-chan"},"content":" + \" / /___/ / / / / /_/ (__ ) \\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"darryl-chan"},"content":" + \"/_____/_/_/ /_/\\\\__,_/____/ \\n\";","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":" System.out.println(\"Hello from\\n\" + logo);","lastModifiedDate":"2019-07-29"},{"lineNumber":10,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"darryl-chan"},"content":" Program program \u003d new Program();","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"darryl-chan"},"content":" program.start();","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"},{"lineNumber":16,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"darryl-chan":11,"-":5}},{"path":"src/main/java/DukeCeption.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"darryl-chan"},"content":"public class DukeCeption extends Exception {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"darryl-chan"},"content":" public DukeCeption(String error) {","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"darryl-chan"},"content":" super(error);","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"darryl-chan"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"darryl-chan":5}},{"path":"src/main/java/EmptyMessegeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"darryl-chan"},"content":"public class EmptyMessegeException extends DukeCeption {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"darryl-chan"},"content":" public EmptyMessegeException(String error) {","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"darryl-chan"},"content":" super(error);","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"darryl-chan"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"darryl-chan":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"darryl-chan"},"content":"public class Event extends Task{","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"darryl-chan"},"content":" protected String from;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"darryl-chan"},"content":" protected String to;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"darryl-chan"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"darryl-chan"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"darryl-chan"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"darryl-chan"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"darryl-chan"},"content":" public Event(String description, String from, String to, boolean isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"darryl-chan"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"darryl-chan"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"darryl-chan"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"darryl-chan"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"darryl-chan"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"darryl-chan"},"content":" return \"[E]\" + super.toString() + ","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"darryl-chan"},"content":" String.format(\" (from: %s to: %s)\", this.from, this.to);","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"darryl-chan"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"darryl-chan":22}},{"path":"src/main/java/PrintList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"darryl-chan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-21"},{"lineNumber":2,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":3,"author":{"gitId":"darryl-chan"},"content":"public class PrintList {","lastModifiedDate":"2024-01-21"},{"lineNumber":4,"author":{"gitId":"darryl-chan"},"content":" private final String BORDER \u003d \"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\";","lastModifiedDate":"2024-01-21"},{"lineNumber":5,"author":{"gitId":"darryl-chan"},"content":" private ArrayList\u003cString\u003e printList;","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"darryl-chan"},"content":" public PrintList() {","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"darryl-chan"},"content":" this.printList \u003d new ArrayList\u003cString\u003e();","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"darryl-chan"},"content":" ","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"darryl-chan"},"content":" public void add(String print) {","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"darryl-chan"},"content":" this.printList.add(print);","lastModifiedDate":"2024-01-21"},{"lineNumber":14,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":15,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":16,"author":{"gitId":"darryl-chan"},"content":" public void print() {","lastModifiedDate":"2024-01-21"},{"lineNumber":17,"author":{"gitId":"darryl-chan"},"content":" System.out.println(this.toString());","lastModifiedDate":"2024-01-21"},{"lineNumber":18,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":19,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":20,"author":{"gitId":"darryl-chan"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":21,"author":{"gitId":"darryl-chan"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":22,"author":{"gitId":"darryl-chan"},"content":" String finalString \u003d \"\";","lastModifiedDate":"2024-01-21"},{"lineNumber":23,"author":{"gitId":"darryl-chan"},"content":" for (int i \u003d 0; i \u003c this.printList.size(); i++) {","lastModifiedDate":"2024-01-21"},{"lineNumber":24,"author":{"gitId":"darryl-chan"},"content":" if (i \u003d\u003d this.printList.size() - 1) {","lastModifiedDate":"2024-01-21"},{"lineNumber":25,"author":{"gitId":"darryl-chan"},"content":" finalString +\u003d String.format(\"\\t%s\", this.printList.get(i));","lastModifiedDate":"2024-01-21"},{"lineNumber":26,"author":{"gitId":"darryl-chan"},"content":" } else {","lastModifiedDate":"2024-01-21"},{"lineNumber":27,"author":{"gitId":"darryl-chan"},"content":" finalString +\u003d String.format(\"\\t%s\\n\", this.printList.get(i));","lastModifiedDate":"2024-01-21"},{"lineNumber":28,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":29,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":30,"author":{"gitId":"darryl-chan"},"content":" this.printList.clear();","lastModifiedDate":"2024-01-21"},{"lineNumber":31,"author":{"gitId":"darryl-chan"},"content":" return String.format(\"\\t%s\\n%s\\n\\t%s\",","lastModifiedDate":"2024-01-21"},{"lineNumber":32,"author":{"gitId":"darryl-chan"},"content":" this.BORDER,","lastModifiedDate":"2024-01-21"},{"lineNumber":33,"author":{"gitId":"darryl-chan"},"content":" finalString,","lastModifiedDate":"2024-01-21"},{"lineNumber":34,"author":{"gitId":"darryl-chan"},"content":" this.BORDER);","lastModifiedDate":"2024-01-21"},{"lineNumber":35,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":36,"author":{"gitId":"darryl-chan"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"darryl-chan":36}},{"path":"src/main/java/Program.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"darryl-chan"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-21"},{"lineNumber":2,"author":{"gitId":"darryl-chan"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"darryl-chan"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":5,"author":{"gitId":"darryl-chan"},"content":"public class Program {","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"darryl-chan"},"content":" private final String NAME \u003d \"Linus\";","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"darryl-chan"},"content":" private Boolean running;","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"darryl-chan"},"content":" private Scanner userInputScanner;","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"darryl-chan"},"content":" private TaskList taskList;","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"darryl-chan"},"content":" private PrintList printList;","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"darryl-chan"},"content":" // private final String FILE_PATH \u003d \"./data/linus.txt\";","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":14,"author":{"gitId":"darryl-chan"},"content":" public Program() {","lastModifiedDate":"2024-01-21"},{"lineNumber":15,"author":{"gitId":"darryl-chan"},"content":" this.running \u003d true;","lastModifiedDate":"2024-01-21"},{"lineNumber":16,"author":{"gitId":"darryl-chan"},"content":" this.userInputScanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-21"},{"lineNumber":17,"author":{"gitId":"darryl-chan"},"content":" this.taskList \u003d new TaskList();","lastModifiedDate":"2024-01-21"},{"lineNumber":18,"author":{"gitId":"darryl-chan"},"content":" this.printList \u003d new PrintList();","lastModifiedDate":"2024-01-21"},{"lineNumber":19,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":20,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":21,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":22,"author":{"gitId":"darryl-chan"},"content":" public void start() {","lastModifiedDate":"2024-01-21"},{"lineNumber":23,"author":{"gitId":"darryl-chan"},"content":" File f \u003d this.retrieveFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"darryl-chan"},"content":" taskList.loadList(f, printList);","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"darryl-chan"},"content":" this.greeting();","lastModifiedDate":"2024-01-21"},{"lineNumber":26,"author":{"gitId":"darryl-chan"},"content":" while (this.running) {","lastModifiedDate":"2024-01-21"},{"lineNumber":27,"author":{"gitId":"darryl-chan"},"content":" String userInput \u003d this.userInputScanner.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"darryl-chan"},"content":" this.readUserInput(userInput);","lastModifiedDate":"2024-01-21"},{"lineNumber":29,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":30,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":31,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":32,"author":{"gitId":"darryl-chan"},"content":" public File retrieveFile() {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"darryl-chan"},"content":" File file \u003d new File(\"./data/linus.txt\");","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"darryl-chan"},"content":" File parentDir \u003d file.getParentFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"darryl-chan"},"content":" if (!parentDir.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"darryl-chan"},"content":" parentDir.mkdirs();","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"darryl-chan"},"content":" printList.add(\"Created data folder as none was found\");","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"darryl-chan"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"darryl-chan"},"content":" if (file.createNewFile()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"darryl-chan"},"content":" printList.add(\"Created linus.txt to read files from\");","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"darryl-chan"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"darryl-chan"},"content":" printList.add(\"Retrieving file...\");","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"darryl-chan"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"darryl-chan"},"content":" printList.add(\"Could not create file :/\");","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"darryl-chan"},"content":" printList.print();","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"darryl-chan"},"content":" return file;","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"darryl-chan"},"content":" private void readUserInput(String input) {","lastModifiedDate":"2024-01-21"},{"lineNumber":54,"author":{"gitId":"darryl-chan"},"content":" String[] userInput \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"darryl-chan"},"content":" String command \u003d userInput[0].toLowerCase();","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"darryl-chan"},"content":" String taskNumber;","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"darryl-chan"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"darryl-chan"},"content":" switch (command) {","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"darryl-chan"},"content":" case \"bye\":","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"darryl-chan"},"content":" this.end();","lastModifiedDate":"2024-01-21"},{"lineNumber":62,"author":{"gitId":"darryl-chan"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"darryl-chan"},"content":" case \"list\":","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"darryl-chan"},"content":" this.taskList.getList(this.printList);","lastModifiedDate":"2024-01-21"},{"lineNumber":65,"author":{"gitId":"darryl-chan"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"darryl-chan"},"content":" case \"mark\": case \"unmark\": case \"delete\":","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"darryl-chan"},"content":" if (userInput.length !\u003d 2) {","lastModifiedDate":"2024-01-25"},{"lineNumber":68,"author":{"gitId":"darryl-chan"},"content":" throw new DukeCeption(\"A number is required after writing this command\");","lastModifiedDate":"2024-01-25"},{"lineNumber":69,"author":{"gitId":"darryl-chan"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"darryl-chan"},"content":" taskNumber \u003d userInput[1];","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"darryl-chan"},"content":" this.taskList.markOrDelete(command, taskNumber, this.printList);","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"darryl-chan"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"darryl-chan"},"content":" case \"todo\": case \"deadline\": case \"event\":","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"darryl-chan"},"content":" if (userInput.length !\u003d 2) {","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"darryl-chan"},"content":" throw new DukeCeption(\"Event description cannot be empty\");","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"darryl-chan"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"darryl-chan"},"content":" String task \u003d userInput[1];","lastModifiedDate":"2024-01-25"},{"lineNumber":79,"author":{"gitId":"darryl-chan"},"content":" this.taskList.addTask(command, task, this.printList);","lastModifiedDate":"2024-01-25"},{"lineNumber":80,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"darryl-chan"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":82,"author":{"gitId":"darryl-chan"},"content":" default:","lastModifiedDate":"2024-01-25"},{"lineNumber":83,"author":{"gitId":"darryl-chan"},"content":" throw new DukeCeption(\"Sorry I don\u0027t recognize that command :/\");","lastModifiedDate":"2024-01-25"},{"lineNumber":84,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":85,"author":{"gitId":"darryl-chan"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":86,"author":{"gitId":"darryl-chan"},"content":" printList.add(e.getMessage());","lastModifiedDate":"2024-01-25"},{"lineNumber":87,"author":{"gitId":"darryl-chan"},"content":" } finally {","lastModifiedDate":"2024-01-25"},{"lineNumber":88,"author":{"gitId":"darryl-chan"},"content":" this.printList.print();","lastModifiedDate":"2024-01-22"},{"lineNumber":89,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":90,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":91,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":92,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":93,"author":{"gitId":"darryl-chan"},"content":" private void greeting() {","lastModifiedDate":"2024-01-21"},{"lineNumber":94,"author":{"gitId":"darryl-chan"},"content":" String greeting \u003d String.format(\"Hello I\u0027m %s\", this.NAME);","lastModifiedDate":"2024-01-21"},{"lineNumber":95,"author":{"gitId":"darryl-chan"},"content":" String request \u003d \"What can I do for you?\";","lastModifiedDate":"2024-01-21"},{"lineNumber":96,"author":{"gitId":"darryl-chan"},"content":" this.printList.add(greeting);","lastModifiedDate":"2024-01-21"},{"lineNumber":97,"author":{"gitId":"darryl-chan"},"content":" this.printList.add(request);","lastModifiedDate":"2024-01-21"},{"lineNumber":98,"author":{"gitId":"darryl-chan"},"content":" this.printList.print();","lastModifiedDate":"2024-01-21"},{"lineNumber":99,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":100,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":101,"author":{"gitId":"darryl-chan"},"content":" private void end() {","lastModifiedDate":"2024-01-21"},{"lineNumber":102,"author":{"gitId":"darryl-chan"},"content":" File file \u003d new File(\"./data/linus.txt\");","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"darryl-chan"},"content":" taskList.saveList(file);","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"darryl-chan"},"content":" this.printList.add(\"Saving file!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"darryl-chan"},"content":" this.printList.add(\"Goodbye. See you later!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"darryl-chan"},"content":" this.running \u003d false;","lastModifiedDate":"2024-01-21"},{"lineNumber":107,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":108,"author":{"gitId":"darryl-chan"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"darryl-chan":108}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"darryl-chan"},"content":"public class Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":2,"author":{"gitId":"darryl-chan"},"content":" protected String description;","lastModifiedDate":"2024-01-21"},{"lineNumber":3,"author":{"gitId":"darryl-chan"},"content":" protected Boolean isDone;","lastModifiedDate":"2024-01-21"},{"lineNumber":4,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":5,"author":{"gitId":"darryl-chan"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"darryl-chan"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"darryl-chan"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"darryl-chan"},"content":" public Task(String description, boolean isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"darryl-chan"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"darryl-chan"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"darryl-chan"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-21"},{"lineNumber":16,"author":{"gitId":"darryl-chan"},"content":" return (this.isDone ? \"X\" : \" \");","lastModifiedDate":"2024-01-21"},{"lineNumber":17,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":18,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":19,"author":{"gitId":"darryl-chan"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-21"},{"lineNumber":20,"author":{"gitId":"darryl-chan"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-21"},{"lineNumber":21,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":22,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":23,"author":{"gitId":"darryl-chan"},"content":" public void markAsNotDone() {","lastModifiedDate":"2024-01-21"},{"lineNumber":24,"author":{"gitId":"darryl-chan"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-21"},{"lineNumber":25,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":26,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":27,"author":{"gitId":"darryl-chan"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":28,"author":{"gitId":"darryl-chan"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":29,"author":{"gitId":"darryl-chan"},"content":" return String.format(\"[%s] %s\",","lastModifiedDate":"2024-01-21"},{"lineNumber":30,"author":{"gitId":"darryl-chan"},"content":" this.getStatusIcon(),","lastModifiedDate":"2024-01-21"},{"lineNumber":31,"author":{"gitId":"darryl-chan"},"content":" this.description);","lastModifiedDate":"2024-01-21"},{"lineNumber":32,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":33,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":34,"author":{"gitId":"darryl-chan"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"darryl-chan":34}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"darryl-chan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-21"},{"lineNumber":2,"author":{"gitId":"darryl-chan"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"darryl-chan"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"darryl-chan"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"darryl-chan"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"darryl-chan"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"darryl-chan"},"content":"// import java.io.BufferedWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"darryl-chan"},"content":"public class TaskList {","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"darryl-chan"},"content":" ","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"darryl-chan"},"content":" ArrayList\u003cTask\u003e list;","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"darryl-chan"},"content":" public TaskList() {","lastModifiedDate":"2024-01-21"},{"lineNumber":14,"author":{"gitId":"darryl-chan"},"content":" this.list \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-21"},{"lineNumber":15,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":16,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":17,"author":{"gitId":"darryl-chan"},"content":" public void printListAddNewTask(Task task, PrintList printList) {","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"darryl-chan"},"content":" printList.add(String.format(\"Okay! added this task:\"));","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"darryl-chan"},"content":" printList.add(task.toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"darryl-chan"},"content":" printList.add(String.format(\"Now you have %d tasks in the list.\", this.list.size()));","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"darryl-chan"},"content":" public void addTask(String task, String fullDescription, PrintList printList) throws DukeCeption {","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"darryl-chan"},"content":" try {","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"darryl-chan"},"content":" switch (task) {","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"darryl-chan"},"content":" case \"todo\":","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"darryl-chan"},"content":" this.addTodo(fullDescription, printList);","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"darryl-chan"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"darryl-chan"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"darryl-chan"},"content":" this.addDeadline(fullDescription, printList);","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"darryl-chan"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"darryl-chan"},"content":" case \"event\":","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"darryl-chan"},"content":" this.addEvent(fullDescription, printList);","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"darryl-chan"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"darryl-chan"},"content":" } catch (StringIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"darryl-chan"},"content":" throw new DukeCeption(\"Make sure your /from/to/by is correct\");","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":39,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":40,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"darryl-chan"},"content":" public void addTodo(String description, PrintList printList) throws DukeCeption {","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"darryl-chan"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2024-01-22"},{"lineNumber":43,"author":{"gitId":"darryl-chan"},"content":" throw new DukeCeption(\"Todo cannot be empty!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"darryl-chan"},"content":" } else {","lastModifiedDate":"2024-01-22"},{"lineNumber":45,"author":{"gitId":"darryl-chan"},"content":" Task task \u003d new ToDo(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":46,"author":{"gitId":"darryl-chan"},"content":" this.list.add(task);","lastModifiedDate":"2024-01-22"},{"lineNumber":47,"author":{"gitId":"darryl-chan"},"content":" this.printListAddNewTask(task, printList);","lastModifiedDate":"2024-01-22"},{"lineNumber":48,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":49,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":50,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":51,"author":{"gitId":"darryl-chan"},"content":" public void addDeadline(String description, PrintList printList) throws DukeCeption {","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"darryl-chan"},"content":" String[] descriptionList \u003d description.split(\"/by\", 2);","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"darryl-chan"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"darryl-chan"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2024-01-22"},{"lineNumber":55,"author":{"gitId":"darryl-chan"},"content":" throw new DukeCeption(\"Deadline cannot be empty!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"darryl-chan"},"content":" } else {","lastModifiedDate":"2024-01-22"},{"lineNumber":57,"author":{"gitId":"darryl-chan"},"content":" String taskDescription \u003d descriptionList[0].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"darryl-chan"},"content":" String by \u003d descriptionList[1].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"darryl-chan"},"content":" Task task \u003d new Deadline(taskDescription, by);","lastModifiedDate":"2024-01-22"},{"lineNumber":60,"author":{"gitId":"darryl-chan"},"content":" this.list.add(task);","lastModifiedDate":"2024-01-22"},{"lineNumber":61,"author":{"gitId":"darryl-chan"},"content":" this.printListAddNewTask(task, printList);","lastModifiedDate":"2024-01-22"},{"lineNumber":62,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":63,"author":{"gitId":"darryl-chan"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"darryl-chan"},"content":" throw new DukeCeption(\"Make sure /by is written properly\");","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"darryl-chan"},"content":" ","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":68,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":69,"author":{"gitId":"darryl-chan"},"content":" public void addEvent(String description, PrintList printList) throws DukeCeption {","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"darryl-chan"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"darryl-chan"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2024-01-22"},{"lineNumber":72,"author":{"gitId":"darryl-chan"},"content":" throw new DukeCeption(\"Event cannot be empty!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"darryl-chan"},"content":" } else {","lastModifiedDate":"2024-01-22"},{"lineNumber":74,"author":{"gitId":"darryl-chan"},"content":" String[] descriptionList \u003d description.split(\"/from\", 2);","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"darryl-chan"},"content":" String[] fromAndToList \u003d descriptionList[1].split(\"/to\", 2);","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"darryl-chan"},"content":" String taskDescription \u003d descriptionList[0].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"darryl-chan"},"content":" String from \u003d fromAndToList[0].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"darryl-chan"},"content":" String to \u003d fromAndToList[1].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":79,"author":{"gitId":"darryl-chan"},"content":" Task task \u003d new Event(taskDescription, from, to);","lastModifiedDate":"2024-01-22"},{"lineNumber":80,"author":{"gitId":"darryl-chan"},"content":" this.list.add(task);","lastModifiedDate":"2024-01-22"},{"lineNumber":81,"author":{"gitId":"darryl-chan"},"content":" this.printListAddNewTask(task, printList);","lastModifiedDate":"2024-01-22"},{"lineNumber":82,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":83,"author":{"gitId":"darryl-chan"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":84,"author":{"gitId":"darryl-chan"},"content":" throw new DukeCeption(\"Make sure /from and /to is written properly\");","lastModifiedDate":"2024-01-25"},{"lineNumber":85,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":86,"author":{"gitId":"darryl-chan"},"content":" ","lastModifiedDate":"2024-01-25"},{"lineNumber":87,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":88,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":89,"author":{"gitId":"darryl-chan"},"content":" public void markOrDelete(String command, String taskNumberString, PrintList printList) throws DukeCeption {","lastModifiedDate":"2024-01-25"},{"lineNumber":90,"author":{"gitId":"darryl-chan"},"content":" try {","lastModifiedDate":"2024-01-22"},{"lineNumber":91,"author":{"gitId":"darryl-chan"},"content":" int taskNumber \u003d Integer.parseInt(taskNumberString);","lastModifiedDate":"2024-01-25"},{"lineNumber":92,"author":{"gitId":"darryl-chan"},"content":" switch (command) {","lastModifiedDate":"2024-01-25"},{"lineNumber":93,"author":{"gitId":"darryl-chan"},"content":" case \"mark\":","lastModifiedDate":"2024-01-25"},{"lineNumber":94,"author":{"gitId":"darryl-chan"},"content":" this.mark(taskNumber, printList);","lastModifiedDate":"2024-01-22"},{"lineNumber":95,"author":{"gitId":"darryl-chan"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":96,"author":{"gitId":"darryl-chan"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-25"},{"lineNumber":97,"author":{"gitId":"darryl-chan"},"content":" this.unmark(taskNumber, printList);","lastModifiedDate":"2024-01-22"},{"lineNumber":98,"author":{"gitId":"darryl-chan"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":99,"author":{"gitId":"darryl-chan"},"content":" case \"delete\":","lastModifiedDate":"2024-01-25"},{"lineNumber":100,"author":{"gitId":"darryl-chan"},"content":" this.delete(taskNumber, printList);","lastModifiedDate":"2024-01-25"},{"lineNumber":101,"author":{"gitId":"darryl-chan"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":102,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":103,"author":{"gitId":"darryl-chan"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":104,"author":{"gitId":"darryl-chan"},"content":" throw new DukeCeption(\"The number given is unrecognizable\");","lastModifiedDate":"2024-01-25"},{"lineNumber":105,"author":{"gitId":"darryl-chan"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-22"},{"lineNumber":106,"author":{"gitId":"darryl-chan"},"content":" throw new DukeCeption(\"The number is not in this list!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":107,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":108,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":109,"author":{"gitId":"darryl-chan"},"content":" ","lastModifiedDate":"2024-01-22"},{"lineNumber":110,"author":{"gitId":"darryl-chan"},"content":" public void delete(int taskNumber, PrintList printList) throws DukeCeption {","lastModifiedDate":"2024-01-25"},{"lineNumber":111,"author":{"gitId":"darryl-chan"},"content":" Task removedTask \u003d this.list.get(taskNumber - 1);","lastModifiedDate":"2024-01-25"},{"lineNumber":112,"author":{"gitId":"darryl-chan"},"content":" this.list.remove(taskNumber - 1);","lastModifiedDate":"2024-01-25"},{"lineNumber":113,"author":{"gitId":"darryl-chan"},"content":" printList.add(\"This task is now removed:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":114,"author":{"gitId":"darryl-chan"},"content":" printList.add(removedTask.toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":115,"author":{"gitId":"darryl-chan"},"content":" printList.add(String.format(\"Now you have %d tasks in the list.\", this.list.size()));","lastModifiedDate":"2024-01-25"},{"lineNumber":116,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":117,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":118,"author":{"gitId":"darryl-chan"},"content":" public void mark(int taskNumber, PrintList printList) {","lastModifiedDate":"2024-01-21"},{"lineNumber":119,"author":{"gitId":"darryl-chan"},"content":" Task task \u003d this.list.get(taskNumber - 1);","lastModifiedDate":"2024-01-21"},{"lineNumber":120,"author":{"gitId":"darryl-chan"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-21"},{"lineNumber":121,"author":{"gitId":"darryl-chan"},"content":" printList.add(\"Great! I will mark this as done:\");","lastModifiedDate":"2024-01-22"},{"lineNumber":122,"author":{"gitId":"darryl-chan"},"content":" printList.add(task.toString());","lastModifiedDate":"2024-01-21"},{"lineNumber":123,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":124,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":125,"author":{"gitId":"darryl-chan"},"content":" public void unmark(int taskNumber, PrintList printList) {","lastModifiedDate":"2024-01-21"},{"lineNumber":126,"author":{"gitId":"darryl-chan"},"content":" Task task \u003d this.list.get(taskNumber - 1);","lastModifiedDate":"2024-01-21"},{"lineNumber":127,"author":{"gitId":"darryl-chan"},"content":" task.markAsNotDone();","lastModifiedDate":"2024-01-21"},{"lineNumber":128,"author":{"gitId":"darryl-chan"},"content":" printList.add(\"Alright! this task is now unmarked:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":129,"author":{"gitId":"darryl-chan"},"content":" printList.add(task.toString());","lastModifiedDate":"2024-01-21"},{"lineNumber":130,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":131,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":132,"author":{"gitId":"darryl-chan"},"content":" public void getList(PrintList printList) {","lastModifiedDate":"2024-01-21"},{"lineNumber":133,"author":{"gitId":"darryl-chan"},"content":" printList.add(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-21"},{"lineNumber":134,"author":{"gitId":"darryl-chan"},"content":" for (int i \u003d 0; i \u003c this.list.size(); i++) {","lastModifiedDate":"2024-01-21"},{"lineNumber":135,"author":{"gitId":"darryl-chan"},"content":" printList.add(String.format(\"%d. %s\",","lastModifiedDate":"2024-01-21"},{"lineNumber":136,"author":{"gitId":"darryl-chan"},"content":" i + 1,","lastModifiedDate":"2024-01-21"},{"lineNumber":137,"author":{"gitId":"darryl-chan"},"content":" this.list.get(i)));","lastModifiedDate":"2024-01-21"},{"lineNumber":138,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":139,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":141,"author":{"gitId":"darryl-chan"},"content":" public void textToTask(String line) {","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"darryl-chan"},"content":" String taskType \u003d line.substring(1,2);","lastModifiedDate":"2024-01-30"},{"lineNumber":143,"author":{"gitId":"darryl-chan"},"content":" boolean isDone \u003d (line.substring(4,5).equals(\"X\")) ? true : false;","lastModifiedDate":"2024-01-30"},{"lineNumber":144,"author":{"gitId":"darryl-chan"},"content":" String fullDescription \u003d line.substring(7);","lastModifiedDate":"2024-01-30"},{"lineNumber":145,"author":{"gitId":"darryl-chan"},"content":" String description;","lastModifiedDate":"2024-01-30"},{"lineNumber":146,"author":{"gitId":"darryl-chan"},"content":" Task task;","lastModifiedDate":"2024-01-30"},{"lineNumber":147,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":148,"author":{"gitId":"darryl-chan"},"content":" switch (taskType) {","lastModifiedDate":"2024-01-30"},{"lineNumber":149,"author":{"gitId":"darryl-chan"},"content":" case \"T\":","lastModifiedDate":"2024-01-30"},{"lineNumber":150,"author":{"gitId":"darryl-chan"},"content":" task \u003d new ToDo(fullDescription, isDone);","lastModifiedDate":"2024-01-30"},{"lineNumber":151,"author":{"gitId":"darryl-chan"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":152,"author":{"gitId":"darryl-chan"},"content":" case \"D\":","lastModifiedDate":"2024-01-30"},{"lineNumber":153,"author":{"gitId":"darryl-chan"},"content":" String[] splitBy \u003d fullDescription.split(\" \\\\(by: \", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":154,"author":{"gitId":"darryl-chan"},"content":" description \u003d splitBy[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":155,"author":{"gitId":"darryl-chan"},"content":" String byString \u003d splitBy[1].substring(0, splitBy[1].length()-1);","lastModifiedDate":"2024-01-30"},{"lineNumber":156,"author":{"gitId":"darryl-chan"},"content":" task \u003d new Deadline(description, byString, isDone);","lastModifiedDate":"2024-01-30"},{"lineNumber":157,"author":{"gitId":"darryl-chan"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":158,"author":{"gitId":"darryl-chan"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":159,"author":{"gitId":"darryl-chan"},"content":" String[] splitFrom \u003d fullDescription.split(\" \\\\(from: \", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":160,"author":{"gitId":"darryl-chan"},"content":" String[] splitTo \u003d splitFrom[1].split(\" to: \", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":161,"author":{"gitId":"darryl-chan"},"content":" description \u003d splitFrom[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":162,"author":{"gitId":"darryl-chan"},"content":" String fromString \u003d splitTo[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":163,"author":{"gitId":"darryl-chan"},"content":" String toString \u003d splitTo[1].substring(0, splitTo[1].length()-1);","lastModifiedDate":"2024-01-30"},{"lineNumber":164,"author":{"gitId":"darryl-chan"},"content":" task \u003d new Event(description, fromString, toString, isDone);","lastModifiedDate":"2024-01-30"},{"lineNumber":165,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":166,"author":{"gitId":"darryl-chan"},"content":" list.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":167,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":168,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":169,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":170,"author":{"gitId":"darryl-chan"},"content":" public void loadList(File file, PrintList printList) {","lastModifiedDate":"2024-01-30"},{"lineNumber":171,"author":{"gitId":"darryl-chan"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":172,"author":{"gitId":"darryl-chan"},"content":" Scanner scanner \u003d new Scanner(file);","lastModifiedDate":"2024-01-30"},{"lineNumber":173,"author":{"gitId":"darryl-chan"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":174,"author":{"gitId":"darryl-chan"},"content":" this.textToTask(scanner.nextLine());","lastModifiedDate":"2024-01-30"},{"lineNumber":175,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":176,"author":{"gitId":"darryl-chan"},"content":" scanner.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":177,"author":{"gitId":"darryl-chan"},"content":" printList.add(\"File retrieved!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":178,"author":{"gitId":"darryl-chan"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":179,"author":{"gitId":"darryl-chan"},"content":" printList.add(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":180,"author":{"gitId":"darryl-chan"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":181,"author":{"gitId":"darryl-chan"},"content":" printList.add(\"File is corrupted :/\");","lastModifiedDate":"2024-01-30"},{"lineNumber":182,"author":{"gitId":"darryl-chan"},"content":" printList.add(\"Making new file instead\");","lastModifiedDate":"2024-01-30"},{"lineNumber":183,"author":{"gitId":"darryl-chan"},"content":" list \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":184,"author":{"gitId":"darryl-chan"},"content":" } finally {","lastModifiedDate":"2024-01-30"},{"lineNumber":185,"author":{"gitId":"darryl-chan"},"content":" printList.print();","lastModifiedDate":"2024-01-30"},{"lineNumber":186,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":187,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":188,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":189,"author":{"gitId":"darryl-chan"},"content":" public void saveList(File file) {","lastModifiedDate":"2024-01-30"},{"lineNumber":190,"author":{"gitId":"darryl-chan"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":191,"author":{"gitId":"darryl-chan"},"content":" FileWriter writer \u003d new FileWriter(file, false);","lastModifiedDate":"2024-01-30"},{"lineNumber":192,"author":{"gitId":"darryl-chan"},"content":" for (Task line : list) {","lastModifiedDate":"2024-01-30"},{"lineNumber":193,"author":{"gitId":"darryl-chan"},"content":" writer.write(line.toString() + \"\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":194,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":195,"author":{"gitId":"darryl-chan"},"content":" writer.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":196,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":197,"author":{"gitId":"darryl-chan"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":198,"author":{"gitId":"darryl-chan"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":199,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":200,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":201,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":202,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":203,"author":{"gitId":"darryl-chan"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"darryl-chan":203}},{"path":"src/main/java/Test.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"darryl-chan"},"content":"public class Test {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"darryl-chan"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"darryl-chan"},"content":" String testing \u003d \" (by: ABSCSD\";","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"darryl-chan"},"content":" System.out.println(testing.substring(2,3));","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"darryl-chan"},"content":" testing.split(\" (by: \", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"darryl-chan"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"darryl-chan":7}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"darryl-chan"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"darryl-chan"},"content":" ","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"darryl-chan"},"content":" public ToDo(String description){","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"darryl-chan"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"darryl-chan"},"content":" public ToDo(String description, boolean isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"darryl-chan"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"darryl-chan"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"darryl-chan"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"darryl-chan"},"content":" return String.format(\"%s%s\", \"[T]\", super.toString());","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"darryl-chan"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"darryl-chan":16}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"darryl-chan"},"content":"todo return book","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"darryl-chan"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"darryl-chan"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"darryl-chan"},"content":"mark 2","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"darryl-chan"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"darryl-chan"},"content":"todo","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"darryl-chan"},"content":"deadline return book ","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"darryl-chan"},"content":"event project meeting /from Mon 2pm","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"darryl-chan"},"content":"delete 5","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"darryl-chan":9}},{"path":"text-ui-test/runtest1.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"darryl-chan"},"content":"@ECHO OFF","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"darryl-chan"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"darryl-chan"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"darryl-chan"},"content":"REM delete output from previous run","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"darryl-chan"},"content":"del ACTUAL.TXT","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"darryl-chan"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"darryl-chan"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"darryl-chan"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"darryl-chan"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"darryl-chan"},"content":" exit /b 1","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"darryl-chan"},"content":")","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"darryl-chan"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"darryl-chan"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"darryl-chan"},"content":"java -classpath ..\\bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"darryl-chan"},"content":"REM compare the output to the expected output","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"darryl-chan"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"darryl-chan":21}}] diff --git a/darryl-chan_ip_master/commits.json b/darryl-chan_ip_master/commits.json index 8de52c10..210b37e3 100644 --- a/darryl-chan_ip_master/commits.json +++ b/darryl-chan_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"darryl-chan":[{"date":"2024-01-20","commitResults":[{"hash":"de298e871ba90627c52192be28a8436bdfe866b3","isMergeCommit":false,"messageTitle":"Testing git","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":0}}}]},{"date":"2024-01-21","commitResults":[{"hash":"e795097a97d877663b4f819fa9db929917e47570","isMergeCommit":false,"messageTitle":"Level 0","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":6}}},{"hash":"39dce874c5f851c0265732123d2a7c92b6a52ff7","isMergeCommit":false,"messageTitle":"Added greet and goodbye","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":0}}},{"hash":"f66c3460363381f3eb2a745b29850baa022d004f","isMergeCommit":false,"messageTitle":"Added background program for chatbot","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":0}}},{"hash":"c72db1e402d09bb8c321d2fa686b1fc93595b05f","isMergeCommit":false,"messageTitle":"Added echoing","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":5}}},{"hash":"eacab1763ce769cd1f967658c45f8ee04f2b19b2","isMergeCommit":false,"messageTitle":"Added List and its functions","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":78,"deletions":10}}},{"hash":"26d57bbd4acced734dd4eb2f2eabb8155f77c0d8","isMergeCommit":false,"messageTitle":"Added tasks and task markers","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":4}}}]},{"date":"2024-01-22","commitResults":[{"hash":"dd5c42938b9b06f96d8337b499ba7299c68bb063","isMergeCommit":false,"messageTitle":"Added Todo, event, deadline","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":81,"deletions":6}}},{"hash":"cb74a9b52bf04bf4e70341f114f0cf517aa27ab6","isMergeCommit":false,"messageTitle":"Fixed display bugs for tasks","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":11}}},{"hash":"61ba503d6c77369bf98c25480c9025bc50c9b532","isMergeCommit":false,"messageTitle":"Added I/O testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"bat":{"insertions":21,"deletions":0}}},{"hash":"e865f363b74afa641985fc0600b9f278a0e9fe96","isMergeCommit":false,"messageTitle":"Added some exception handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":87,"deletions":30}}},{"hash":"4be75490af2aaa2083e44bd6cbf0de2678fe0b81","isMergeCommit":false,"messageTitle":"Added a delete function","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":4}}}]},{"date":"2024-01-25","commitResults":[{"hash":"3ac916c414a98a6ac001faffa5e13fd3eed3d76e","isMergeCommit":false,"messageTitle":"Updated Linus logo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":5}}},{"hash":"195bb8f81e07ccaf98f265974de81e0705b88514","isMergeCommit":false,"messageTitle":"Added switch cases and refined error messeges","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":42}}},{"hash":"6869dcafc3058bd4dbc291f367ac56a5ba53ecf8","isMergeCommit":false,"messageTitle":"Updated I/O","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":1}}},{"hash":"badd85553e6b65996274830f2f9d8ea743c8e9bf","isMergeCommit":false,"messageTitle":"combined mark and delete functions and cleaned code","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":25}}},{"hash":"aeab9107c78ffe0344ae7376bccf391418e5ebe5","isMergeCommit":false,"messageTitle":"Added switch cases for event creation","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":57,"deletions":37}}},{"hash":"e06eb9901396af60372b7153e1ec52e259cb36c1","isMergeCommit":true,"messageTitle":"Merge pull request #1 from darryl-chan/better-user-input-function","messageBody":"Added switch cases and better exception handling","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"darryl-chan":{"java":353,"md":0,"fxml":0,"sh":0,"bat":21,"gradle":0,"txt":9}},"authorContributionVariance":{"darryl-chan":15954.774},"authorDisplayNameMap":{"darryl-chan":"DARR..CHAN"}} +{"authorDailyContributionsMap":{"darryl-chan":[{"date":"2024-01-20","commitResults":[{"hash":"de298e871ba90627c52192be28a8436bdfe866b3","isMergeCommit":false,"messageTitle":"Testing git","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":0}}}]},{"date":"2024-01-21","commitResults":[{"hash":"e795097a97d877663b4f819fa9db929917e47570","isMergeCommit":false,"messageTitle":"Level 0","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":6}}},{"hash":"39dce874c5f851c0265732123d2a7c92b6a52ff7","isMergeCommit":false,"messageTitle":"Added greet and goodbye","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":0}}},{"hash":"f66c3460363381f3eb2a745b29850baa022d004f","isMergeCommit":false,"messageTitle":"Added background program for chatbot","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":0}}},{"hash":"c72db1e402d09bb8c321d2fa686b1fc93595b05f","isMergeCommit":false,"messageTitle":"Added echoing","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":5}}},{"hash":"eacab1763ce769cd1f967658c45f8ee04f2b19b2","isMergeCommit":false,"messageTitle":"Added List and its functions","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":78,"deletions":10}}},{"hash":"26d57bbd4acced734dd4eb2f2eabb8155f77c0d8","isMergeCommit":false,"messageTitle":"Added tasks and task markers","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":4}}}]},{"date":"2024-01-22","commitResults":[{"hash":"dd5c42938b9b06f96d8337b499ba7299c68bb063","isMergeCommit":false,"messageTitle":"Added Todo, event, deadline","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":81,"deletions":6}}},{"hash":"cb74a9b52bf04bf4e70341f114f0cf517aa27ab6","isMergeCommit":false,"messageTitle":"Fixed display bugs for tasks","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":11}}},{"hash":"61ba503d6c77369bf98c25480c9025bc50c9b532","isMergeCommit":false,"messageTitle":"Added I/O testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"bat":{"insertions":21,"deletions":0}}},{"hash":"e865f363b74afa641985fc0600b9f278a0e9fe96","isMergeCommit":false,"messageTitle":"Added some exception handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":87,"deletions":30}}},{"hash":"4be75490af2aaa2083e44bd6cbf0de2678fe0b81","isMergeCommit":false,"messageTitle":"Added a delete function","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":4}}}]},{"date":"2024-01-25","commitResults":[{"hash":"3ac916c414a98a6ac001faffa5e13fd3eed3d76e","isMergeCommit":false,"messageTitle":"Updated Linus logo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":5}}},{"hash":"195bb8f81e07ccaf98f265974de81e0705b88514","isMergeCommit":false,"messageTitle":"Added switch cases and refined error messeges","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":42}}},{"hash":"6869dcafc3058bd4dbc291f367ac56a5ba53ecf8","isMergeCommit":false,"messageTitle":"Updated I/O","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":1}}},{"hash":"badd85553e6b65996274830f2f9d8ea743c8e9bf","isMergeCommit":false,"messageTitle":"combined mark and delete functions and cleaned code","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":25}}},{"hash":"aeab9107c78ffe0344ae7376bccf391418e5ebe5","isMergeCommit":false,"messageTitle":"Added switch cases for event creation","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":57,"deletions":37}}},{"hash":"e06eb9901396af60372b7153e1ec52e259cb36c1","isMergeCommit":true,"messageTitle":"Merge pull request #1 from darryl-chan/better-user-input-function","messageBody":"Added switch cases and better exception handling","fileTypesAndContributionMap":{}}]},{"date":"2024-01-30","commitResults":[{"hash":"4eb14da504dd4416a7292f1a408012186e52f158","isMergeCommit":false,"messageTitle":"Added saving file function","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":52,"deletions":2}}},{"hash":"4aeb47d118a547e59f8c347fcea012b701ec32cc","isMergeCommit":false,"messageTitle":"Added string split","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":74,"deletions":4}}},{"hash":"4e314cffeca4e3433bee167857f6915caad34e29","isMergeCommit":false,"messageTitle":"Added load file function and dealing with corrupted file","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":3},"java":{"insertions":19,"deletions":22}}},{"hash":"740dc5a1a3f8c8e42f344c1fda6699c39b74e578","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"darryl-chan":{"java":470,"md":0,"fxml":0,"sh":0,"bat":21,"gradle":0,"txt":12}},"authorContributionVariance":{"darryl-chan":12857.5205},"authorDisplayNameMap":{"darryl-chan":"DARR..CHAN"}} diff --git a/dedsecrattle_ip_master/authorship.json b/dedsecrattle_ip_master/authorship.json index fb90a478..69cc05ec 100644 --- a/dedsecrattle_ip_master/authorship.json +++ b/dedsecrattle_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/jivox/COMMANDS.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dedsecrattle"},"content":"package jivox;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"dedsecrattle"},"content":"public enum COMMANDS {","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"dedsecrattle"},"content":" TODO,DEADLINE,EVENT,","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"dedsecrattle"},"content":" MARK,UNMARK,DELETE,BYE,LIST,","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"dedsecrattle"},"content":" SHOW","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"dedsecrattle"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"dedsecrattle":6}},{"path":"src/main/java/jivox/DatabaseHandler.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dedsecrattle"},"content":"package jivox;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"dedsecrattle"},"content":"import jivox.exception.DataHandlerException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"dedsecrattle"},"content":"import jivox.task.*;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"dedsecrattle"},"content":"import java.io.File;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"dedsecrattle"},"content":"import java.io.FileReader;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"dedsecrattle"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"dedsecrattle"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"dedsecrattle"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"dedsecrattle"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"dedsecrattle"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"dedsecrattle"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"dedsecrattle"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"dedsecrattle"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"dedsecrattle"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"dedsecrattle"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"dedsecrattle"},"content":"public class DatabaseHandler {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"dedsecrattle"},"content":" private File DB \u003d null;","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"dedsecrattle"},"content":" public DatabaseHandler(String FILE_PATH){","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"dedsecrattle"},"content":" this.DB \u003d new File(FILE_PATH);","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"dedsecrattle"},"content":" public void create() throws DataHandlerException {","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"dedsecrattle"},"content":" Path path \u003d Paths.get(DB.getPath());","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"dedsecrattle"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"dedsecrattle"},"content":" if (Files.notExists(path.getParent())) {","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"dedsecrattle"},"content":" Files.createDirectories(path.getParent());","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"dedsecrattle"},"content":" if (Files.notExists(path)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"dedsecrattle"},"content":" Files.createFile(path);","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"dedsecrattle"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"dedsecrattle"},"content":" throw new DataHandlerException(e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"dedsecrattle"},"content":" public void save(TaskList tasks) throws DataHandlerException {","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"dedsecrattle"},"content":" try{","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"dedsecrattle"},"content":" if(!DB.exists()){","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"dedsecrattle"},"content":" create();","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"dedsecrattle"},"content":" FileWriter fw \u003d new FileWriter(DB);","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"dedsecrattle"},"content":" for (int i \u003d 0; i \u003c tasks.getLength(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"dedsecrattle"},"content":" Task task \u003d tasks.getTask(i);","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"dedsecrattle"},"content":" switch (tasks.getTask(i).getType()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"dedsecrattle"},"content":" case \"D\":","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"dedsecrattle"},"content":" Deadline d \u003d (Deadline) task;","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"dedsecrattle"},"content":" fw.write(d.saveFormat());","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"dedsecrattle"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"dedsecrattle"},"content":" case \"E\":","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"dedsecrattle"},"content":" Event e \u003d (Event) task;","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"dedsecrattle"},"content":" fw.write(e.saveFormat());","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"dedsecrattle"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"dedsecrattle"},"content":" case \"T\":","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"dedsecrattle"},"content":" Todo t \u003d (Todo) task;","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"dedsecrattle"},"content":" fw.write(t.saveFormat());","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"dedsecrattle"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"dedsecrattle"},"content":" fw.write(\"\\n\");","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"dedsecrattle"},"content":" fw.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"dedsecrattle"},"content":" } catch (IOException e){","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"dedsecrattle"},"content":" throw new DataHandlerException(e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"dedsecrattle"},"content":" public ArrayList\u003cTask\u003e load() {","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"dedsecrattle"},"content":" ArrayList\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"dedsecrattle"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"dedsecrattle"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"dedsecrattle"},"content":" if (!DB.exists()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"dedsecrattle"},"content":" return list;","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"dedsecrattle"},"content":" FileReader fr \u003d new FileReader(DB);","lastModifiedDate":"2024-01-28"},{"lineNumber":79,"author":{"gitId":"dedsecrattle"},"content":" Scanner sc \u003d new Scanner(fr);","lastModifiedDate":"2024-01-28"},{"lineNumber":80,"author":{"gitId":"dedsecrattle"},"content":" while(sc.hasNext()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"dedsecrattle"},"content":" String line \u003d sc.nextLine();","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"dedsecrattle"},"content":" String[] split \u003d line.split(\"\\\\|\");","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"dedsecrattle"},"content":" switch (split[0].trim()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"dedsecrattle"},"content":" case \"D\":","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"dedsecrattle"},"content":" Deadline d \u003d new Deadline(split[2].trim(),","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"dedsecrattle"},"content":" LocalDateTime.parse(split[3].replaceFirst(\" \",\"\"),formatter));","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"dedsecrattle"},"content":" if (split[1].trim().equals(\"1\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"dedsecrattle"},"content":" d.mark();","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":90,"author":{"gitId":"dedsecrattle"},"content":" list.add(d);","lastModifiedDate":"2024-01-28"},{"lineNumber":91,"author":{"gitId":"dedsecrattle"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":92,"author":{"gitId":"dedsecrattle"},"content":" case \"E\":","lastModifiedDate":"2024-01-28"},{"lineNumber":93,"author":{"gitId":"dedsecrattle"},"content":" String[] start_end \u003d split[3].split(\" to \");","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"dedsecrattle"},"content":" Event e \u003d new Event(split[2].trim(),LocalDateTime.parse(start_end[0].replaceFirst(\" \",\"\"),formatter),","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"dedsecrattle"},"content":" LocalDateTime.parse(start_end[1],formatter));","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"dedsecrattle"},"content":" if (split[1].trim().equals(\"1\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":97,"author":{"gitId":"dedsecrattle"},"content":" e.mark();","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":99,"author":{"gitId":"dedsecrattle"},"content":" list.add(e);","lastModifiedDate":"2024-01-28"},{"lineNumber":100,"author":{"gitId":"dedsecrattle"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":101,"author":{"gitId":"dedsecrattle"},"content":" case \"T\":","lastModifiedDate":"2024-01-28"},{"lineNumber":102,"author":{"gitId":"dedsecrattle"},"content":" Todo t \u003d new Todo(split[2].trim());","lastModifiedDate":"2024-01-28"},{"lineNumber":103,"author":{"gitId":"dedsecrattle"},"content":" if (split[1].trim().equals(\"1\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":104,"author":{"gitId":"dedsecrattle"},"content":" t.mark();","lastModifiedDate":"2024-01-28"},{"lineNumber":105,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":106,"author":{"gitId":"dedsecrattle"},"content":" list.add(t);","lastModifiedDate":"2024-01-28"},{"lineNumber":107,"author":{"gitId":"dedsecrattle"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":108,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":109,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":110,"author":{"gitId":"dedsecrattle"},"content":" } catch (IOException e){","lastModifiedDate":"2024-01-28"},{"lineNumber":111,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":112,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":113,"author":{"gitId":"dedsecrattle"},"content":" return list;","lastModifiedDate":"2024-01-28"},{"lineNumber":114,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":115,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":116,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":117,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":118,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":119,"author":{"gitId":"dedsecrattle"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"dedsecrattle":119}},{"path":"src/main/java/jivox/Jivox.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"dedsecrattle"},"content":"package jivox;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"dedsecrattle"},"content":"import jivox.exception.DataHandlerException;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"dedsecrattle"},"content":"import jivox.exception.JivoxException;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"dedsecrattle"},"content":"import jivox.task.*;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"dedsecrattle"},"content":"import jivox.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"dedsecrattle"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"dedsecrattle"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"dedsecrattle"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"dedsecrattle"},"content":"public class Jivox {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"dedsecrattle"},"content":" private DatabaseHandler dbHandler;","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"dedsecrattle"},"content":" private Ui ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"dedsecrattle"},"content":" private final TaskList list;","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"dedsecrattle"},"content":" private Parser parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"dedsecrattle"},"content":" private final DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"d/MM/yyyy HH:mm\");","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"dedsecrattle"},"content":" public Jivox(String FILE_PATH){","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"dedsecrattle"},"content":" this.dbHandler \u003d new DatabaseHandler(FILE_PATH);","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"dedsecrattle"},"content":" this.list \u003d new TaskList(dbHandler.load());","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"dedsecrattle"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"dedsecrattle"},"content":" this.parser \u003d new Parser();","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"dedsecrattle"},"content":" private void mark(int i) throws JivoxException {","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"dedsecrattle"},"content":" if(i \u003e this.list.getLength() || i \u003c 0){","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"dedsecrattle"},"content":" throw new JivoxException(\"Oops! There are only \" + this.list.getLength() + \" Tasks!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"dedsecrattle"},"content":" Task t \u003d this.list.getTask(i-1);","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"dedsecrattle"},"content":" t.mark();","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"dedsecrattle"},"content":" dbHandler.save(this.list);","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"dedsecrattle"},"content":" this.ui.showMark(t);","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"dedsecrattle"},"content":" private void unmark(int i) throws JivoxException {","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"dedsecrattle"},"content":" if(i \u003e this.list.getLength() || i \u003c 0){","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"dedsecrattle"},"content":" throw new JivoxException(\"Oops! There are only \" + this.list.getLength() + \" Tasks!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"dedsecrattle"},"content":" Task t \u003d this.list.getTask(i-1);","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"dedsecrattle"},"content":" t.unmark();","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"dedsecrattle"},"content":" dbHandler.save(this.list);","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"dedsecrattle"},"content":" this.ui.showUnmark(t);","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"dedsecrattle"},"content":" private void addEvent(String content) throws JivoxException {","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"dedsecrattle"},"content":" String[] first \u003d this.parser.split(content,\" /from \");","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"dedsecrattle"},"content":" // content.split(\" /from \");","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"dedsecrattle"},"content":" if(first.length \u003d\u003d 1){","lastModifiedDate":"2024-01-23"},{"lineNumber":55,"author":{"gitId":"dedsecrattle"},"content":" throw new JivoxException(\"No time interval (from) received for the event , Please try again!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":56,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":57,"author":{"gitId":"dedsecrattle"},"content":" String[] second \u003d this.parser.split(first[1],\" /to \",2);","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"dedsecrattle"},"content":" //first[1].split(\" /to \",2);","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"dedsecrattle"},"content":" if(second.length \u003d\u003d 1){","lastModifiedDate":"2024-01-23"},{"lineNumber":60,"author":{"gitId":"dedsecrattle"},"content":" throw new JivoxException(\"No time interval received (to) for the event , Please try again!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":61,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":62,"author":{"gitId":"dedsecrattle"},"content":" LocalDateTime from \u003d LocalDateTime.parse(second[0] ,formatter);","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"dedsecrattle"},"content":" LocalDateTime to \u003d LocalDateTime.parse(second[1] ,formatter);","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"dedsecrattle"},"content":" if(to.isBefore(from)){","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"dedsecrattle"},"content":" throw new JivoxException(\"Invalid event ! To is before From\");","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"dedsecrattle"},"content":" this.list.add(new Event(first[0].trim(),from,to));","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"dedsecrattle"},"content":" dbHandler.save(this.list);","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"dedsecrattle"},"content":" private void addTodo(String content) throws DataHandlerException {","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"dedsecrattle"},"content":" this.list.add(new Todo(content));","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"dedsecrattle"},"content":" dbHandler.save(this.list);","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"dedsecrattle"},"content":" private void addDeadline(String content) throws JivoxException {","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"dedsecrattle"},"content":" String[] in \u003d this.parser.split(content,\" /by \",2);","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"dedsecrattle"},"content":" // content.split(\" /by \",2);","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"dedsecrattle"},"content":" if(in.length \u003d\u003d 1){","lastModifiedDate":"2024-01-28"},{"lineNumber":80,"author":{"gitId":"dedsecrattle"},"content":" throw new JivoxException(\"Oooops! Please provide a deadline\");","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"dedsecrattle"},"content":" LocalDateTime deadline \u003d LocalDateTime.parse(in[1],formatter);","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"dedsecrattle"},"content":" this.list.add(new Deadline(in[0].trim(),deadline));","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"dedsecrattle"},"content":" dbHandler.save(this.list);","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"dedsecrattle"},"content":" public void add(String type,String description) throws JivoxException {","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"dedsecrattle"},"content":" switch (type){","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"dedsecrattle"},"content":" case \"todo\":","lastModifiedDate":"2024-01-28"},{"lineNumber":90,"author":{"gitId":"dedsecrattle"},"content":" addTodo(description);","lastModifiedDate":"2024-01-28"},{"lineNumber":91,"author":{"gitId":"dedsecrattle"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":92,"author":{"gitId":"dedsecrattle"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-28"},{"lineNumber":93,"author":{"gitId":"dedsecrattle"},"content":" addDeadline(description);","lastModifiedDate":"2024-01-28"},{"lineNumber":94,"author":{"gitId":"dedsecrattle"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":95,"author":{"gitId":"dedsecrattle"},"content":" case \"event\":","lastModifiedDate":"2024-01-28"},{"lineNumber":96,"author":{"gitId":"dedsecrattle"},"content":" addEvent(description);","lastModifiedDate":"2024-01-28"},{"lineNumber":97,"author":{"gitId":"dedsecrattle"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":98,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":99,"author":{"gitId":"dedsecrattle"},"content":" this.ui.showAdd(this.list.getTask(this.list.getLength()-1),this.list.getLength());","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":101,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":102,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":104,"author":{"gitId":"dedsecrattle"},"content":" public void delete(int i) throws JivoxException {","lastModifiedDate":"2024-01-23"},{"lineNumber":105,"author":{"gitId":"dedsecrattle"},"content":" if(i \u003e this.list.getLength() || i \u003c 0){","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"dedsecrattle"},"content":" throw new JivoxException(\"Oops! There are only \" + this.list.getLength() + \" Tasks!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":108,"author":{"gitId":"dedsecrattle"},"content":" Task t \u003d this.list.getTask(i-1);","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"dedsecrattle"},"content":" this.list.delete(i-1);","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"dedsecrattle"},"content":" this.dbHandler.save(this.list);","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"dedsecrattle"},"content":" this.ui.showDelete(t,this.list.getLength());","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":113,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":114,"author":{"gitId":"dedsecrattle"},"content":" public void show(String input){","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"dedsecrattle"},"content":" String[] split \u003d this.parser.split(input,\"/on \");","lastModifiedDate":"2024-01-29"},{"lineNumber":116,"author":{"gitId":"dedsecrattle"},"content":" // input.split(\"/on \");","lastModifiedDate":"2024-01-29"},{"lineNumber":117,"author":{"gitId":"dedsecrattle"},"content":" LocalDate time \u003d LocalDate.parse(split[1].replaceFirst(\" \",\"\"), DateTimeFormatter.ofPattern(\"d/MM/yyyy\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":118,"author":{"gitId":"dedsecrattle"},"content":" this.ui.showDeadline(this.list,time);","lastModifiedDate":"2024-01-29"},{"lineNumber":119,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":120,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":121,"author":{"gitId":"dedsecrattle"},"content":" public void run(){","lastModifiedDate":"2024-01-23"},{"lineNumber":122,"author":{"gitId":"dedsecrattle"},"content":" this.ui.greet();","lastModifiedDate":"2024-01-29"},{"lineNumber":123,"author":{"gitId":"dedsecrattle"},"content":" boolean isRunning \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":124,"author":{"gitId":"dedsecrattle"},"content":" do {","lastModifiedDate":"2024-01-23"},{"lineNumber":125,"author":{"gitId":"dedsecrattle"},"content":" String rawInput \u003d this.ui.input();","lastModifiedDate":"2024-01-29"},{"lineNumber":126,"author":{"gitId":"dedsecrattle"},"content":" COMMANDS type;","lastModifiedDate":"2024-01-23"},{"lineNumber":127,"author":{"gitId":"dedsecrattle"},"content":" String[] input \u003d this.parser.parseInput(rawInput);","lastModifiedDate":"2024-01-29"},{"lineNumber":128,"author":{"gitId":"dedsecrattle"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":129,"author":{"gitId":"dedsecrattle"},"content":" type \u003d parser.parseCommand(rawInput);","lastModifiedDate":"2024-01-29"},{"lineNumber":130,"author":{"gitId":"dedsecrattle"},"content":" } catch (JivoxException e){","lastModifiedDate":"2024-01-23"},{"lineNumber":131,"author":{"gitId":"dedsecrattle"},"content":" this.ui.showException(e);","lastModifiedDate":"2024-01-29"},{"lineNumber":132,"author":{"gitId":"dedsecrattle"},"content":" continue;","lastModifiedDate":"2024-01-23"},{"lineNumber":133,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":134,"author":{"gitId":"dedsecrattle"},"content":" switch (type){","lastModifiedDate":"2024-01-23"},{"lineNumber":135,"author":{"gitId":"dedsecrattle"},"content":" case BYE:","lastModifiedDate":"2024-01-23"},{"lineNumber":136,"author":{"gitId":"dedsecrattle"},"content":" isRunning \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":137,"author":{"gitId":"dedsecrattle"},"content":" this.ui.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":138,"author":{"gitId":"dedsecrattle"},"content":" this.ui.exit();","lastModifiedDate":"2024-01-29"},{"lineNumber":139,"author":{"gitId":"dedsecrattle"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":140,"author":{"gitId":"dedsecrattle"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-23"},{"lineNumber":141,"author":{"gitId":"dedsecrattle"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":142,"author":{"gitId":"dedsecrattle"},"content":" this.add(\"deadline\", input[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":143,"author":{"gitId":"dedsecrattle"},"content":" } catch (JivoxException e){","lastModifiedDate":"2024-01-23"},{"lineNumber":144,"author":{"gitId":"dedsecrattle"},"content":" this.ui.showException(e);","lastModifiedDate":"2024-01-29"},{"lineNumber":145,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":146,"author":{"gitId":"dedsecrattle"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":147,"author":{"gitId":"dedsecrattle"},"content":" case EVENT:","lastModifiedDate":"2024-01-23"},{"lineNumber":148,"author":{"gitId":"dedsecrattle"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":149,"author":{"gitId":"dedsecrattle"},"content":" if (input.length \u003d\u003d 1) {","lastModifiedDate":"2024-01-23"},{"lineNumber":150,"author":{"gitId":"dedsecrattle"},"content":" throw new JivoxException(\"Ooops! Please provide a description!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":151,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":152,"author":{"gitId":"dedsecrattle"},"content":" this.add(\"event\", input[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":153,"author":{"gitId":"dedsecrattle"},"content":" } catch (JivoxException e){","lastModifiedDate":"2024-01-23"},{"lineNumber":154,"author":{"gitId":"dedsecrattle"},"content":" this.ui.showException(e);","lastModifiedDate":"2024-01-29"},{"lineNumber":155,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":156,"author":{"gitId":"dedsecrattle"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":157,"author":{"gitId":"dedsecrattle"},"content":" case TODO:","lastModifiedDate":"2024-01-23"},{"lineNumber":158,"author":{"gitId":"dedsecrattle"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":159,"author":{"gitId":"dedsecrattle"},"content":" if (input.length \u003d\u003d 1) {","lastModifiedDate":"2024-01-23"},{"lineNumber":160,"author":{"gitId":"dedsecrattle"},"content":" throw new JivoxException(\"Ooops! Please provide a description!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":161,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":162,"author":{"gitId":"dedsecrattle"},"content":" this.add(\"todo\", input[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":163,"author":{"gitId":"dedsecrattle"},"content":" } catch (JivoxException e){","lastModifiedDate":"2024-01-23"},{"lineNumber":164,"author":{"gitId":"dedsecrattle"},"content":" this.ui.showException(e);","lastModifiedDate":"2024-01-29"},{"lineNumber":165,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":166,"author":{"gitId":"dedsecrattle"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":167,"author":{"gitId":"dedsecrattle"},"content":" case MARK:","lastModifiedDate":"2024-01-23"},{"lineNumber":168,"author":{"gitId":"dedsecrattle"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":169,"author":{"gitId":"dedsecrattle"},"content":" if(input.length \u003d\u003d 1){","lastModifiedDate":"2024-01-23"},{"lineNumber":170,"author":{"gitId":"dedsecrattle"},"content":" throw new JivoxException(\"Please, provide a task number to mark\");","lastModifiedDate":"2024-01-23"},{"lineNumber":171,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":172,"author":{"gitId":"dedsecrattle"},"content":" this.mark(Integer.parseInt(input[1]));","lastModifiedDate":"2024-01-23"},{"lineNumber":173,"author":{"gitId":"dedsecrattle"},"content":" } catch (JivoxException e){","lastModifiedDate":"2024-01-23"},{"lineNumber":174,"author":{"gitId":"dedsecrattle"},"content":" this.ui.showException(e);","lastModifiedDate":"2024-01-29"},{"lineNumber":175,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":176,"author":{"gitId":"dedsecrattle"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":177,"author":{"gitId":"dedsecrattle"},"content":" case UNMARK:","lastModifiedDate":"2024-01-23"},{"lineNumber":178,"author":{"gitId":"dedsecrattle"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":179,"author":{"gitId":"dedsecrattle"},"content":" if(input.length \u003d\u003d 1){","lastModifiedDate":"2024-01-23"},{"lineNumber":180,"author":{"gitId":"dedsecrattle"},"content":" throw new JivoxException(\"Please, provide a task number to mark\");","lastModifiedDate":"2024-01-23"},{"lineNumber":181,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":182,"author":{"gitId":"dedsecrattle"},"content":" this.unmark(Integer.parseInt(input[1]));","lastModifiedDate":"2024-01-23"},{"lineNumber":183,"author":{"gitId":"dedsecrattle"},"content":" } catch (JivoxException e){","lastModifiedDate":"2024-01-23"},{"lineNumber":184,"author":{"gitId":"dedsecrattle"},"content":" this.ui.showException(e);","lastModifiedDate":"2024-01-29"},{"lineNumber":185,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":186,"author":{"gitId":"dedsecrattle"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":187,"author":{"gitId":"dedsecrattle"},"content":" case DELETE:","lastModifiedDate":"2024-01-23"},{"lineNumber":188,"author":{"gitId":"dedsecrattle"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":189,"author":{"gitId":"dedsecrattle"},"content":" if(input.length \u003d\u003d 1){","lastModifiedDate":"2024-01-23"},{"lineNumber":190,"author":{"gitId":"dedsecrattle"},"content":" throw new JivoxException(\"Please, provide a task number to delete\");","lastModifiedDate":"2024-01-23"},{"lineNumber":191,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":192,"author":{"gitId":"dedsecrattle"},"content":" this.delete(Integer.parseInt(input[1]));","lastModifiedDate":"2024-01-23"},{"lineNumber":193,"author":{"gitId":"dedsecrattle"},"content":" } catch (JivoxException e){","lastModifiedDate":"2024-01-23"},{"lineNumber":194,"author":{"gitId":"dedsecrattle"},"content":" this.ui.showException(e);","lastModifiedDate":"2024-01-29"},{"lineNumber":195,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":196,"author":{"gitId":"dedsecrattle"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":197,"author":{"gitId":"dedsecrattle"},"content":" case LIST:","lastModifiedDate":"2024-01-23"},{"lineNumber":198,"author":{"gitId":"dedsecrattle"},"content":" this.ui.showList(this.list);","lastModifiedDate":"2024-01-29"},{"lineNumber":199,"author":{"gitId":"dedsecrattle"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":200,"author":{"gitId":"dedsecrattle"},"content":" case SHOW:","lastModifiedDate":"2024-01-29"},{"lineNumber":201,"author":{"gitId":"dedsecrattle"},"content":" this.show(input[1]);","lastModifiedDate":"2024-01-29"},{"lineNumber":202,"author":{"gitId":"dedsecrattle"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":203,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":204,"author":{"gitId":"dedsecrattle"},"content":" } while (isRunning);","lastModifiedDate":"2024-01-23"},{"lineNumber":205,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":206,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":207,"author":{"gitId":"dedsecrattle"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"dedsecrattle":207}},{"path":"src/main/java/jivox/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dedsecrattle"},"content":"package jivox;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"dedsecrattle"},"content":"import jivox.Jivox;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"dedsecrattle"},"content":"public class Main {","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"dedsecrattle"},"content":" private static Jivox bot \u003d new Jivox(\"./data/jivox.txt\");","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"dedsecrattle"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"dedsecrattle"},"content":" bot.run();","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"dedsecrattle"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"dedsecrattle":11}},{"path":"src/main/java/jivox/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dedsecrattle"},"content":"package jivox;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"dedsecrattle"},"content":"import jivox.exception.JivoxException;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"dedsecrattle"},"content":"public class Parser {","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"dedsecrattle"},"content":" public COMMANDS parseCommand(String rawInput) throws JivoxException {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"dedsecrattle"},"content":" String[] input \u003d rawInput.split(\" \",2);","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"dedsecrattle"},"content":" try{","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"dedsecrattle"},"content":" return COMMANDS.valueOf(input[0].toUpperCase());","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"dedsecrattle"},"content":" } catch (IllegalArgumentException e){","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"dedsecrattle"},"content":" throw new JivoxException(\"Opps! I can\u0027t understand your Input, Please try again\");","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"dedsecrattle"},"content":" public String[] parseInput(String rawInput){","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"dedsecrattle"},"content":" return rawInput.split(\" \",2);","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"dedsecrattle"},"content":" public String[] split(String input, String reg){","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"dedsecrattle"},"content":" return input.split(reg);","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"dedsecrattle"},"content":" public String[] split(String input, String reg,int limit){","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"dedsecrattle"},"content":" return input.split(reg,limit);","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"dedsecrattle"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"dedsecrattle":27}},{"path":"src/main/java/jivox/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dedsecrattle"},"content":"package jivox;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"dedsecrattle"},"content":"import jivox.task.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"dedsecrattle"},"content":"import jivox.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"dedsecrattle"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"dedsecrattle"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"dedsecrattle"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"dedsecrattle"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"dedsecrattle"},"content":"public class Ui {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"dedsecrattle"},"content":" private Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"dedsecrattle"},"content":" public String input(){","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"dedsecrattle"},"content":" return this.sc.nextLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"dedsecrattle"},"content":" public void close(){","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"dedsecrattle"},"content":" this.sc.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"dedsecrattle"},"content":" public void greet(){","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"dedsecrattle"},"content":" addDivider();","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"dedsecrattle"},"content":" System.out.println(\"Hello! I\u0027m Jivox\");","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"dedsecrattle"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"dedsecrattle"},"content":" addDivider();","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"dedsecrattle"},"content":" public void showMark(Task t){","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"dedsecrattle"},"content":" addDivider();","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"dedsecrattle"},"content":" System.out.println(\"Nice! , I\u0027ve marked this task :\\n\" + t);","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"dedsecrattle"},"content":" addDivider();","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"dedsecrattle"},"content":" public void showDelete(Task t, int tasksLeft){","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"dedsecrattle"},"content":" addDivider();","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"dedsecrattle"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\\n\" + t);","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"dedsecrattle"},"content":" System.out.println(\"Now you have \" + tasksLeft +\" Tasks in the List\");","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"dedsecrattle"},"content":" addDivider();","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"dedsecrattle"},"content":" public void showUnmark(Task t){","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"dedsecrattle"},"content":" addDivider();","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"dedsecrattle"},"content":" System.out.println(\"OK, I\u0027ve Unmarked this task :\\n\" + t);","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"dedsecrattle"},"content":" addDivider();","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"dedsecrattle"},"content":" public void showAdd(Task t, int numOfTask){","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"dedsecrattle"},"content":" addDivider();","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"dedsecrattle"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n\" + t);","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"dedsecrattle"},"content":" System.out.println(\"Now you have \" + numOfTask +\" tasks in the list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"dedsecrattle"},"content":" addDivider();","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"dedsecrattle"},"content":" public void showList(TaskList list){","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"dedsecrattle"},"content":" if(list.getLength() \u003d\u003d 0){","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"dedsecrattle"},"content":" System.out.println(\"You\u0027ve No task in the List!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"dedsecrattle"},"content":" else {","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"dedsecrattle"},"content":" System.out.println(\"You have Following tasks in your List:- \");","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"dedsecrattle"},"content":" addDivider();","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"dedsecrattle"},"content":" for (int i \u003d 0; i \u003c list.getLength(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"dedsecrattle"},"content":" System.out.println((i + 1) + \". \" + list.getTask(i));","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"dedsecrattle"},"content":" addDivider();","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"dedsecrattle"},"content":" public void addDivider(){","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"dedsecrattle"},"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\u003d\u003d\u003d\u003d\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-29"},{"lineNumber":71,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"dedsecrattle"},"content":" public void exit(){","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"dedsecrattle"},"content":" addDivider();","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"dedsecrattle"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"dedsecrattle"},"content":" addDivider();","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"dedsecrattle"},"content":" public void showDeadline(TaskList list, LocalDate time){","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"dedsecrattle"},"content":" System.out.println(\"You have following Task due on \" + time.format(DateTimeFormatter.ofPattern(\"dd MMM yyyy\")) + \":-\");","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"dedsecrattle"},"content":" for(int i \u003d 0; i \u003c list.getLength(); i++){","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"dedsecrattle"},"content":" LocalDateTime deadline \u003d list.getTask(i).getDeadline();","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"dedsecrattle"},"content":" if(deadline !\u003d null){","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"dedsecrattle"},"content":" if(deadline.getMonth() \u003d\u003d time.getMonth() \u0026\u0026 deadline.getYear() \u003d\u003d time.getYear() \u0026\u0026 deadline.getDayOfMonth() \u003d\u003d time.getDayOfMonth()){","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"dedsecrattle"},"content":" addDivider();","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"dedsecrattle"},"content":" System.out.println(list.getTask(i));","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"dedsecrattle"},"content":" addDivider();","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"dedsecrattle"},"content":" public void showException(Exception e){","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"dedsecrattle"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"dedsecrattle"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"dedsecrattle":96}},{"path":"src/main/java/jivox/exception/DataHandlerException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dedsecrattle"},"content":"package jivox.exception;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"dedsecrattle"},"content":"public class DataHandlerException extends JivoxException{","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"dedsecrattle"},"content":" public DataHandlerException(String message){","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"dedsecrattle"},"content":" super(\"Database Error |\" + message);","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"dedsecrattle"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"dedsecrattle":7}},{"path":"src/main/java/jivox/exception/JivoxException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dedsecrattle"},"content":"package jivox.exception;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"dedsecrattle"},"content":"public class JivoxException extends Exception{","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"dedsecrattle"},"content":" public JivoxException(String message){","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"dedsecrattle"},"content":" super(message);","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"dedsecrattle"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"dedsecrattle":7}},{"path":"src/main/java/jivox/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dedsecrattle"},"content":"package jivox.task;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"dedsecrattle"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"dedsecrattle"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"dedsecrattle"},"content":"public class Deadline extends Task{","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"dedsecrattle"},"content":" private LocalDateTime deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"dedsecrattle"},"content":" public Deadline(String content,LocalDateTime deadline) {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"dedsecrattle"},"content":" super(content);","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"dedsecrattle"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"dedsecrattle"},"content":" public String getType(){","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"dedsecrattle"},"content":" return \"D\";","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"dedsecrattle"},"content":" public LocalDateTime getDeadline(){","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"dedsecrattle"},"content":" return this.deadline;","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"dedsecrattle"},"content":" public String saveFormat(){","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"dedsecrattle"},"content":" return this.getType() + \" | \" + (this.getStatus() ? \"1\" : \"0\") + \" | \" + this.getDescription() +","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"dedsecrattle"},"content":" \"| \" + this.deadline.format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"dedsecrattle"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"dedsecrattle"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"dedsecrattle"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.deadline.format(DateTimeFormatter.ofPattern(\"dd MMM yyyy HH:mm\")) + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"dedsecrattle"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"dedsecrattle":34}},{"path":"src/main/java/jivox/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dedsecrattle"},"content":"package jivox.task;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"dedsecrattle"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"dedsecrattle"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"dedsecrattle"},"content":"public class Event extends Task{","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"dedsecrattle"},"content":" private LocalDateTime from;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"dedsecrattle"},"content":" private LocalDateTime to;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"dedsecrattle"},"content":" public Event(String content,LocalDateTime from,LocalDateTime to) {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"dedsecrattle"},"content":" super(content);","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"dedsecrattle"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"dedsecrattle"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"dedsecrattle"},"content":" public String getType(){","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"dedsecrattle"},"content":" return \"E\";","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"dedsecrattle"},"content":" public String getStart(){","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"dedsecrattle"},"content":" return this.from.toString();","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"dedsecrattle"},"content":" public LocalDateTime getDeadline(){","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"dedsecrattle"},"content":" return this.to;","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"dedsecrattle"},"content":" public String saveFormat(){","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"dedsecrattle"},"content":" return this.getType() + \" | \" + (this.getStatus() ? \"1\" : \"0\") + \" | \" + this.getDescription() + \"| \" +","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"dedsecrattle"},"content":" this.from.format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\")) + \" to \" + this.to.format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"dedsecrattle"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"dedsecrattle"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"dedsecrattle"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.from.format(DateTimeFormatter.ofPattern(\"dd MMM yyyy HH:mm\")) + \" to: \" +","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"dedsecrattle"},"content":" this.to.format(DateTimeFormatter.ofPattern(\"dd MMM yyyy HH:mm\")) + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"dedsecrattle"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"dedsecrattle":38}},{"path":"src/main/java/jivox/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dedsecrattle"},"content":"package jivox.task;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"dedsecrattle"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"dedsecrattle"},"content":"public abstract class Task {","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"dedsecrattle"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"dedsecrattle"},"content":" private String content;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"dedsecrattle"},"content":" public Task(String content){","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"dedsecrattle"},"content":" this.content \u003d content;","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"dedsecrattle"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"dedsecrattle"},"content":" public void mark(){","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"dedsecrattle"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"dedsecrattle"},"content":" public LocalDateTime getDeadline(){","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"dedsecrattle"},"content":" return null;","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"dedsecrattle"},"content":" public void unmark(){","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"dedsecrattle"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"dedsecrattle"},"content":" public String getDescription(){","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"dedsecrattle"},"content":" return this.content;","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"dedsecrattle"},"content":" abstract public String getType();","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"dedsecrattle"},"content":" public boolean getStatus() {","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"dedsecrattle"},"content":" return this.isDone;","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"dedsecrattle"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"dedsecrattle"},"content":" public String toString(){","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"dedsecrattle"},"content":" String mark \u003d isDone ? \"X\" : \" \";","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"dedsecrattle"},"content":" return \"[\" + mark + \"] \" + this.content;","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"dedsecrattle"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"dedsecrattle":41}},{"path":"src/main/java/jivox/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dedsecrattle"},"content":"package jivox.task;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"dedsecrattle"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"dedsecrattle"},"content":"public class TaskList {","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"dedsecrattle"},"content":" ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"dedsecrattle"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks){","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"dedsecrattle"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"dedsecrattle"},"content":" public void delete(int taskNum){","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"dedsecrattle"},"content":" this.tasks.remove(taskNum);","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"dedsecrattle"},"content":" public int getLength(){","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"dedsecrattle"},"content":" return this.tasks.size();","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"dedsecrattle"},"content":" public void add(Task t){","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"dedsecrattle"},"content":" this.tasks.add(t);","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"dedsecrattle"},"content":" public Task getTask(int taskNum){","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"dedsecrattle"},"content":" return this.tasks.get(taskNum);","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"dedsecrattle"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"dedsecrattle":28}},{"path":"src/main/java/jivox/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dedsecrattle"},"content":"package jivox.task;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"dedsecrattle"},"content":"public class Todo extends Task{","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"dedsecrattle"},"content":" public Todo(String content) {","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"dedsecrattle"},"content":" super(content);","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"dedsecrattle"},"content":" public String getType(){","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"dedsecrattle"},"content":" return \"T\";","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"dedsecrattle"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"dedsecrattle"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"dedsecrattle"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"dedsecrattle"},"content":" public String saveFormat(){","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"dedsecrattle"},"content":" return this.getType() + \" | \" + (this.getStatus() ? \"1\" : \"0\") + \" | \" + this.getDescription();","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"dedsecrattle"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"dedsecrattle":20}},{"path":"text-ui-test/data/jivox.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"dedsecrattle"},"content":"T | 0 | Read Book","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"dedsecrattle"},"content":"D | 0 | Submit Assignment| Sunday","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"dedsecrattle"},"content":"E | 0 | Coldplay Concert| 1PM-2PM","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"dedsecrattle"},"content":"T | 0 | Read Book","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"dedsecrattle"},"content":"D | 0 | Submit Assignment| Sunday","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"dedsecrattle"},"content":"E | 0 | Coldplay Concert| 1PM-2PM","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"dedsecrattle"},"content":"T | 0 | Read Book","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"dedsecrattle"},"content":"D | 0 | Submit Assignment| Sunday","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"dedsecrattle"},"content":"E | 0 | Coldplay Concert| 1PM-2PM","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"dedsecrattle":9}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"dedsecrattle"},"content":"todo Read Book","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"dedsecrattle"},"content":"deadline Submit Assignment /by Sunday","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"dedsecrattle"},"content":"event Coldplay Concert /from 1PM /to 2PM","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"dedsecrattle"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"dedsecrattle"},"content":"mark 1","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"dedsecrattle"},"content":"unmark 1","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"dedsecrattle"},"content":"delete 2","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"dedsecrattle"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"dedsecrattle"},"content":"bye","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"dedsecrattle":9}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"dedsecrattle"},"content":"java -classpath ../bin Main \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"dedsecrattle":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":"dedsecrattle"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"dedsecrattle"},"content":" mainClass.set(\"jivox.Main\")","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"dedsecrattle":2,"-":41}},{"path":"src/main/java/jivox/COMMANDS.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dedsecrattle"},"content":"package jivox;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"dedsecrattle"},"content":"public enum COMMANDS {","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"dedsecrattle"},"content":" TODO,DEADLINE,EVENT,","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"dedsecrattle"},"content":" MARK,UNMARK,DELETE,BYE,LIST,","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"dedsecrattle"},"content":" SHOW","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"dedsecrattle"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"dedsecrattle":6}},{"path":"src/main/java/jivox/DatabaseHandler.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dedsecrattle"},"content":"package jivox;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"dedsecrattle"},"content":"import jivox.exception.DataHandlerException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"dedsecrattle"},"content":"import jivox.task.*;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"dedsecrattle"},"content":"import java.io.File;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"dedsecrattle"},"content":"import java.io.FileReader;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"dedsecrattle"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"dedsecrattle"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"dedsecrattle"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"dedsecrattle"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"dedsecrattle"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"dedsecrattle"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"dedsecrattle"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"dedsecrattle"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"dedsecrattle"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"dedsecrattle"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"dedsecrattle"},"content":"public class DatabaseHandler {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"dedsecrattle"},"content":" private File DB \u003d null;","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"dedsecrattle"},"content":" public DatabaseHandler(String FILE_PATH){","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"dedsecrattle"},"content":" this.DB \u003d new File(FILE_PATH);","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"dedsecrattle"},"content":" public void create() throws DataHandlerException {","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"dedsecrattle"},"content":" Path path \u003d Paths.get(DB.getPath());","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"dedsecrattle"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"dedsecrattle"},"content":" if (Files.notExists(path.getParent())) {","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"dedsecrattle"},"content":" Files.createDirectories(path.getParent());","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"dedsecrattle"},"content":" if (Files.notExists(path)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"dedsecrattle"},"content":" Files.createFile(path);","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"dedsecrattle"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"dedsecrattle"},"content":" throw new DataHandlerException(e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"dedsecrattle"},"content":" public void save(TaskList tasks) throws DataHandlerException {","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"dedsecrattle"},"content":" try{","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"dedsecrattle"},"content":" if(!DB.exists()){","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"dedsecrattle"},"content":" create();","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"dedsecrattle"},"content":" FileWriter fw \u003d new FileWriter(DB);","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"dedsecrattle"},"content":" for (int i \u003d 0; i \u003c tasks.getLength(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"dedsecrattle"},"content":" Task task \u003d tasks.getTask(i);","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"dedsecrattle"},"content":" switch (tasks.getTask(i).getType()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"dedsecrattle"},"content":" case \"D\":","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"dedsecrattle"},"content":" Deadline d \u003d (Deadline) task;","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"dedsecrattle"},"content":" fw.write(d.saveFormat());","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"dedsecrattle"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"dedsecrattle"},"content":" case \"E\":","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"dedsecrattle"},"content":" Event e \u003d (Event) task;","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"dedsecrattle"},"content":" fw.write(e.saveFormat());","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"dedsecrattle"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"dedsecrattle"},"content":" case \"T\":","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"dedsecrattle"},"content":" Todo t \u003d (Todo) task;","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"dedsecrattle"},"content":" fw.write(t.saveFormat());","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"dedsecrattle"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"dedsecrattle"},"content":" fw.write(\"\\n\");","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"dedsecrattle"},"content":" fw.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"dedsecrattle"},"content":" } catch (IOException e){","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"dedsecrattle"},"content":" throw new DataHandlerException(e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"dedsecrattle"},"content":" public ArrayList\u003cTask\u003e load() {","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"dedsecrattle"},"content":" ArrayList\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"dedsecrattle"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"dedsecrattle"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"dedsecrattle"},"content":" if (!DB.exists()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"dedsecrattle"},"content":" return list;","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"dedsecrattle"},"content":" FileReader fr \u003d new FileReader(DB);","lastModifiedDate":"2024-01-28"},{"lineNumber":79,"author":{"gitId":"dedsecrattle"},"content":" Scanner sc \u003d new Scanner(fr);","lastModifiedDate":"2024-01-28"},{"lineNumber":80,"author":{"gitId":"dedsecrattle"},"content":" while(sc.hasNext()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"dedsecrattle"},"content":" String line \u003d sc.nextLine();","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"dedsecrattle"},"content":" String[] split \u003d line.split(\"\\\\|\");","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"dedsecrattle"},"content":" switch (split[0].trim()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"dedsecrattle"},"content":" case \"D\":","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"dedsecrattle"},"content":" Deadline d \u003d new Deadline(split[2].trim(),","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"dedsecrattle"},"content":" LocalDateTime.parse(split[3].replaceFirst(\" \",\"\"),formatter));","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"dedsecrattle"},"content":" if (split[1].trim().equals(\"1\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"dedsecrattle"},"content":" d.mark();","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":90,"author":{"gitId":"dedsecrattle"},"content":" list.add(d);","lastModifiedDate":"2024-01-28"},{"lineNumber":91,"author":{"gitId":"dedsecrattle"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":92,"author":{"gitId":"dedsecrattle"},"content":" case \"E\":","lastModifiedDate":"2024-01-28"},{"lineNumber":93,"author":{"gitId":"dedsecrattle"},"content":" String[] start_end \u003d split[3].split(\" to \");","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"dedsecrattle"},"content":" Event e \u003d new Event(split[2].trim(),LocalDateTime.parse(start_end[0].replaceFirst(\" \",\"\"),formatter),","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"dedsecrattle"},"content":" LocalDateTime.parse(start_end[1],formatter));","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"dedsecrattle"},"content":" if (split[1].trim().equals(\"1\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":97,"author":{"gitId":"dedsecrattle"},"content":" e.mark();","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":99,"author":{"gitId":"dedsecrattle"},"content":" list.add(e);","lastModifiedDate":"2024-01-28"},{"lineNumber":100,"author":{"gitId":"dedsecrattle"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":101,"author":{"gitId":"dedsecrattle"},"content":" case \"T\":","lastModifiedDate":"2024-01-28"},{"lineNumber":102,"author":{"gitId":"dedsecrattle"},"content":" Todo t \u003d new Todo(split[2].trim());","lastModifiedDate":"2024-01-28"},{"lineNumber":103,"author":{"gitId":"dedsecrattle"},"content":" if (split[1].trim().equals(\"1\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":104,"author":{"gitId":"dedsecrattle"},"content":" t.mark();","lastModifiedDate":"2024-01-28"},{"lineNumber":105,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":106,"author":{"gitId":"dedsecrattle"},"content":" list.add(t);","lastModifiedDate":"2024-01-28"},{"lineNumber":107,"author":{"gitId":"dedsecrattle"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":108,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":109,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":110,"author":{"gitId":"dedsecrattle"},"content":" } catch (IOException e){","lastModifiedDate":"2024-01-28"},{"lineNumber":111,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":112,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":113,"author":{"gitId":"dedsecrattle"},"content":" return list;","lastModifiedDate":"2024-01-28"},{"lineNumber":114,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":115,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":116,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":117,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":118,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":119,"author":{"gitId":"dedsecrattle"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"dedsecrattle":119}},{"path":"src/main/java/jivox/Jivox.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"dedsecrattle"},"content":"package jivox;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"dedsecrattle"},"content":"import jivox.exception.DataHandlerException;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"dedsecrattle"},"content":"import jivox.exception.JivoxException;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"dedsecrattle"},"content":"import jivox.task.*;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"dedsecrattle"},"content":"import jivox.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"dedsecrattle"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"dedsecrattle"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"dedsecrattle"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"dedsecrattle"},"content":"public class Jivox {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"dedsecrattle"},"content":" private DatabaseHandler dbHandler;","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"dedsecrattle"},"content":" private Ui ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"dedsecrattle"},"content":" private final TaskList list;","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"dedsecrattle"},"content":" private Parser parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"dedsecrattle"},"content":" private final DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"d/MM/yyyy HH:mm\");","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"dedsecrattle"},"content":" public Jivox(String FILE_PATH){","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"dedsecrattle"},"content":" this.dbHandler \u003d new DatabaseHandler(FILE_PATH);","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"dedsecrattle"},"content":" this.list \u003d new TaskList(dbHandler.load());","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"dedsecrattle"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"dedsecrattle"},"content":" this.parser \u003d new Parser();","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"dedsecrattle"},"content":" private void mark(int i) throws JivoxException {","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"dedsecrattle"},"content":" if(i \u003e this.list.getLength() || i \u003c 0){","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"dedsecrattle"},"content":" throw new JivoxException(\"Oops! There are only \" + this.list.getLength() + \" Tasks!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"dedsecrattle"},"content":" Task t \u003d this.list.getTask(i-1);","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"dedsecrattle"},"content":" t.mark();","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"dedsecrattle"},"content":" dbHandler.save(this.list);","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"dedsecrattle"},"content":" this.ui.showMark(t);","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"dedsecrattle"},"content":" private void unmark(int i) throws JivoxException {","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"dedsecrattle"},"content":" if(i \u003e this.list.getLength() || i \u003c 0){","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"dedsecrattle"},"content":" throw new JivoxException(\"Oops! There are only \" + this.list.getLength() + \" Tasks!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"dedsecrattle"},"content":" Task t \u003d this.list.getTask(i-1);","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"dedsecrattle"},"content":" t.unmark();","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"dedsecrattle"},"content":" dbHandler.save(this.list);","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"dedsecrattle"},"content":" this.ui.showUnmark(t);","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"dedsecrattle"},"content":" private void addEvent(String content) throws JivoxException {","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"dedsecrattle"},"content":" String[] first \u003d this.parser.split(content,\" /from \");","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"dedsecrattle"},"content":" // content.split(\" /from \");","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"dedsecrattle"},"content":" if(first.length \u003d\u003d 1){","lastModifiedDate":"2024-01-23"},{"lineNumber":55,"author":{"gitId":"dedsecrattle"},"content":" throw new JivoxException(\"No time interval (from) received for the event , Please try again!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":56,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":57,"author":{"gitId":"dedsecrattle"},"content":" String[] second \u003d this.parser.split(first[1],\" /to \",2);","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"dedsecrattle"},"content":" //first[1].split(\" /to \",2);","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"dedsecrattle"},"content":" if(second.length \u003d\u003d 1){","lastModifiedDate":"2024-01-23"},{"lineNumber":60,"author":{"gitId":"dedsecrattle"},"content":" throw new JivoxException(\"No time interval received (to) for the event , Please try again!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":61,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":62,"author":{"gitId":"dedsecrattle"},"content":" LocalDateTime from \u003d LocalDateTime.parse(second[0] ,formatter);","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"dedsecrattle"},"content":" LocalDateTime to \u003d LocalDateTime.parse(second[1] ,formatter);","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"dedsecrattle"},"content":" if(to.isBefore(from)){","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"dedsecrattle"},"content":" throw new JivoxException(\"Invalid event ! To is before From\");","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"dedsecrattle"},"content":" this.list.add(new Event(first[0].trim(),from,to));","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"dedsecrattle"},"content":" dbHandler.save(this.list);","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"dedsecrattle"},"content":" private void addTodo(String content) throws DataHandlerException {","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"dedsecrattle"},"content":" this.list.add(new Todo(content));","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"dedsecrattle"},"content":" dbHandler.save(this.list);","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"dedsecrattle"},"content":" private void addDeadline(String content) throws JivoxException {","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"dedsecrattle"},"content":" String[] in \u003d this.parser.split(content,\" /by \",2);","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"dedsecrattle"},"content":" // content.split(\" /by \",2);","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"dedsecrattle"},"content":" if(in.length \u003d\u003d 1){","lastModifiedDate":"2024-01-28"},{"lineNumber":80,"author":{"gitId":"dedsecrattle"},"content":" throw new JivoxException(\"Oooops! Please provide a deadline\");","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"dedsecrattle"},"content":" LocalDateTime deadline \u003d LocalDateTime.parse(in[1],formatter);","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"dedsecrattle"},"content":" this.list.add(new Deadline(in[0].trim(),deadline));","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"dedsecrattle"},"content":" dbHandler.save(this.list);","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"dedsecrattle"},"content":" public void add(String type,String description) throws JivoxException {","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"dedsecrattle"},"content":" switch (type){","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"dedsecrattle"},"content":" case \"todo\":","lastModifiedDate":"2024-01-28"},{"lineNumber":90,"author":{"gitId":"dedsecrattle"},"content":" addTodo(description);","lastModifiedDate":"2024-01-28"},{"lineNumber":91,"author":{"gitId":"dedsecrattle"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":92,"author":{"gitId":"dedsecrattle"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-28"},{"lineNumber":93,"author":{"gitId":"dedsecrattle"},"content":" addDeadline(description);","lastModifiedDate":"2024-01-28"},{"lineNumber":94,"author":{"gitId":"dedsecrattle"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":95,"author":{"gitId":"dedsecrattle"},"content":" case \"event\":","lastModifiedDate":"2024-01-28"},{"lineNumber":96,"author":{"gitId":"dedsecrattle"},"content":" addEvent(description);","lastModifiedDate":"2024-01-28"},{"lineNumber":97,"author":{"gitId":"dedsecrattle"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":98,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":99,"author":{"gitId":"dedsecrattle"},"content":" this.ui.showAdd(this.list.getTask(this.list.getLength()-1),this.list.getLength());","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":101,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":102,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":104,"author":{"gitId":"dedsecrattle"},"content":" public void delete(int i) throws JivoxException {","lastModifiedDate":"2024-01-23"},{"lineNumber":105,"author":{"gitId":"dedsecrattle"},"content":" if(i \u003e this.list.getLength() || i \u003c 0){","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"dedsecrattle"},"content":" throw new JivoxException(\"Oops! There are only \" + this.list.getLength() + \" Tasks!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":108,"author":{"gitId":"dedsecrattle"},"content":" Task t \u003d this.list.getTask(i-1);","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"dedsecrattle"},"content":" this.list.delete(i-1);","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"dedsecrattle"},"content":" this.dbHandler.save(this.list);","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"dedsecrattle"},"content":" this.ui.showDelete(t,this.list.getLength());","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":113,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":114,"author":{"gitId":"dedsecrattle"},"content":" public void show(String input){","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"dedsecrattle"},"content":" String[] split \u003d this.parser.split(input,\"/on \");","lastModifiedDate":"2024-01-29"},{"lineNumber":116,"author":{"gitId":"dedsecrattle"},"content":" // input.split(\"/on \");","lastModifiedDate":"2024-01-29"},{"lineNumber":117,"author":{"gitId":"dedsecrattle"},"content":" LocalDate time \u003d LocalDate.parse(split[1].replaceFirst(\" \",\"\"), DateTimeFormatter.ofPattern(\"d/MM/yyyy\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":118,"author":{"gitId":"dedsecrattle"},"content":" this.ui.showDeadline(this.list,time);","lastModifiedDate":"2024-01-29"},{"lineNumber":119,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":120,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":121,"author":{"gitId":"dedsecrattle"},"content":" public void run(){","lastModifiedDate":"2024-01-23"},{"lineNumber":122,"author":{"gitId":"dedsecrattle"},"content":" this.ui.greet();","lastModifiedDate":"2024-01-29"},{"lineNumber":123,"author":{"gitId":"dedsecrattle"},"content":" boolean isRunning \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":124,"author":{"gitId":"dedsecrattle"},"content":" do {","lastModifiedDate":"2024-01-23"},{"lineNumber":125,"author":{"gitId":"dedsecrattle"},"content":" String rawInput \u003d this.ui.input();","lastModifiedDate":"2024-01-29"},{"lineNumber":126,"author":{"gitId":"dedsecrattle"},"content":" COMMANDS type;","lastModifiedDate":"2024-01-23"},{"lineNumber":127,"author":{"gitId":"dedsecrattle"},"content":" String[] input \u003d this.parser.parseInput(rawInput);","lastModifiedDate":"2024-01-29"},{"lineNumber":128,"author":{"gitId":"dedsecrattle"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":129,"author":{"gitId":"dedsecrattle"},"content":" type \u003d parser.parseCommand(rawInput);","lastModifiedDate":"2024-01-29"},{"lineNumber":130,"author":{"gitId":"dedsecrattle"},"content":" } catch (JivoxException e){","lastModifiedDate":"2024-01-23"},{"lineNumber":131,"author":{"gitId":"dedsecrattle"},"content":" this.ui.showException(e);","lastModifiedDate":"2024-01-29"},{"lineNumber":132,"author":{"gitId":"dedsecrattle"},"content":" continue;","lastModifiedDate":"2024-01-23"},{"lineNumber":133,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":134,"author":{"gitId":"dedsecrattle"},"content":" switch (type){","lastModifiedDate":"2024-01-23"},{"lineNumber":135,"author":{"gitId":"dedsecrattle"},"content":" case BYE:","lastModifiedDate":"2024-01-23"},{"lineNumber":136,"author":{"gitId":"dedsecrattle"},"content":" isRunning \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":137,"author":{"gitId":"dedsecrattle"},"content":" this.ui.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":138,"author":{"gitId":"dedsecrattle"},"content":" this.ui.exit();","lastModifiedDate":"2024-01-29"},{"lineNumber":139,"author":{"gitId":"dedsecrattle"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":140,"author":{"gitId":"dedsecrattle"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-23"},{"lineNumber":141,"author":{"gitId":"dedsecrattle"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":142,"author":{"gitId":"dedsecrattle"},"content":" this.add(\"deadline\", input[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":143,"author":{"gitId":"dedsecrattle"},"content":" } catch (JivoxException e){","lastModifiedDate":"2024-01-23"},{"lineNumber":144,"author":{"gitId":"dedsecrattle"},"content":" this.ui.showException(e);","lastModifiedDate":"2024-01-29"},{"lineNumber":145,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":146,"author":{"gitId":"dedsecrattle"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":147,"author":{"gitId":"dedsecrattle"},"content":" case EVENT:","lastModifiedDate":"2024-01-23"},{"lineNumber":148,"author":{"gitId":"dedsecrattle"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":149,"author":{"gitId":"dedsecrattle"},"content":" if (input.length \u003d\u003d 1) {","lastModifiedDate":"2024-01-23"},{"lineNumber":150,"author":{"gitId":"dedsecrattle"},"content":" throw new JivoxException(\"Ooops! Please provide a description!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":151,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":152,"author":{"gitId":"dedsecrattle"},"content":" this.add(\"event\", input[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":153,"author":{"gitId":"dedsecrattle"},"content":" } catch (JivoxException e){","lastModifiedDate":"2024-01-23"},{"lineNumber":154,"author":{"gitId":"dedsecrattle"},"content":" this.ui.showException(e);","lastModifiedDate":"2024-01-29"},{"lineNumber":155,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":156,"author":{"gitId":"dedsecrattle"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":157,"author":{"gitId":"dedsecrattle"},"content":" case TODO:","lastModifiedDate":"2024-01-23"},{"lineNumber":158,"author":{"gitId":"dedsecrattle"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":159,"author":{"gitId":"dedsecrattle"},"content":" if (input.length \u003d\u003d 1) {","lastModifiedDate":"2024-01-23"},{"lineNumber":160,"author":{"gitId":"dedsecrattle"},"content":" throw new JivoxException(\"Ooops! Please provide a description!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":161,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":162,"author":{"gitId":"dedsecrattle"},"content":" this.add(\"todo\", input[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":163,"author":{"gitId":"dedsecrattle"},"content":" } catch (JivoxException e){","lastModifiedDate":"2024-01-23"},{"lineNumber":164,"author":{"gitId":"dedsecrattle"},"content":" this.ui.showException(e);","lastModifiedDate":"2024-01-29"},{"lineNumber":165,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":166,"author":{"gitId":"dedsecrattle"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":167,"author":{"gitId":"dedsecrattle"},"content":" case MARK:","lastModifiedDate":"2024-01-23"},{"lineNumber":168,"author":{"gitId":"dedsecrattle"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":169,"author":{"gitId":"dedsecrattle"},"content":" if(input.length \u003d\u003d 1){","lastModifiedDate":"2024-01-23"},{"lineNumber":170,"author":{"gitId":"dedsecrattle"},"content":" throw new JivoxException(\"Please, provide a task number to mark\");","lastModifiedDate":"2024-01-23"},{"lineNumber":171,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":172,"author":{"gitId":"dedsecrattle"},"content":" this.mark(Integer.parseInt(input[1]));","lastModifiedDate":"2024-01-23"},{"lineNumber":173,"author":{"gitId":"dedsecrattle"},"content":" } catch (JivoxException e){","lastModifiedDate":"2024-01-23"},{"lineNumber":174,"author":{"gitId":"dedsecrattle"},"content":" this.ui.showException(e);","lastModifiedDate":"2024-01-29"},{"lineNumber":175,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":176,"author":{"gitId":"dedsecrattle"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":177,"author":{"gitId":"dedsecrattle"},"content":" case UNMARK:","lastModifiedDate":"2024-01-23"},{"lineNumber":178,"author":{"gitId":"dedsecrattle"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":179,"author":{"gitId":"dedsecrattle"},"content":" if(input.length \u003d\u003d 1){","lastModifiedDate":"2024-01-23"},{"lineNumber":180,"author":{"gitId":"dedsecrattle"},"content":" throw new JivoxException(\"Please, provide a task number to mark\");","lastModifiedDate":"2024-01-23"},{"lineNumber":181,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":182,"author":{"gitId":"dedsecrattle"},"content":" this.unmark(Integer.parseInt(input[1]));","lastModifiedDate":"2024-01-23"},{"lineNumber":183,"author":{"gitId":"dedsecrattle"},"content":" } catch (JivoxException e){","lastModifiedDate":"2024-01-23"},{"lineNumber":184,"author":{"gitId":"dedsecrattle"},"content":" this.ui.showException(e);","lastModifiedDate":"2024-01-29"},{"lineNumber":185,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":186,"author":{"gitId":"dedsecrattle"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":187,"author":{"gitId":"dedsecrattle"},"content":" case DELETE:","lastModifiedDate":"2024-01-23"},{"lineNumber":188,"author":{"gitId":"dedsecrattle"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":189,"author":{"gitId":"dedsecrattle"},"content":" if(input.length \u003d\u003d 1){","lastModifiedDate":"2024-01-23"},{"lineNumber":190,"author":{"gitId":"dedsecrattle"},"content":" throw new JivoxException(\"Please, provide a task number to delete\");","lastModifiedDate":"2024-01-23"},{"lineNumber":191,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":192,"author":{"gitId":"dedsecrattle"},"content":" this.delete(Integer.parseInt(input[1]));","lastModifiedDate":"2024-01-23"},{"lineNumber":193,"author":{"gitId":"dedsecrattle"},"content":" } catch (JivoxException e){","lastModifiedDate":"2024-01-23"},{"lineNumber":194,"author":{"gitId":"dedsecrattle"},"content":" this.ui.showException(e);","lastModifiedDate":"2024-01-29"},{"lineNumber":195,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":196,"author":{"gitId":"dedsecrattle"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":197,"author":{"gitId":"dedsecrattle"},"content":" case LIST:","lastModifiedDate":"2024-01-23"},{"lineNumber":198,"author":{"gitId":"dedsecrattle"},"content":" this.ui.showList(this.list);","lastModifiedDate":"2024-01-29"},{"lineNumber":199,"author":{"gitId":"dedsecrattle"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":200,"author":{"gitId":"dedsecrattle"},"content":" case SHOW:","lastModifiedDate":"2024-01-29"},{"lineNumber":201,"author":{"gitId":"dedsecrattle"},"content":" this.show(input[1]);","lastModifiedDate":"2024-01-29"},{"lineNumber":202,"author":{"gitId":"dedsecrattle"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":203,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":204,"author":{"gitId":"dedsecrattle"},"content":" } while (isRunning);","lastModifiedDate":"2024-01-23"},{"lineNumber":205,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":206,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":207,"author":{"gitId":"dedsecrattle"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"dedsecrattle":207}},{"path":"src/main/java/jivox/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dedsecrattle"},"content":"package jivox;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"dedsecrattle"},"content":"import jivox.Jivox;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"dedsecrattle"},"content":"public class Main {","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"dedsecrattle"},"content":" private static Jivox bot \u003d new Jivox(\"./data/jivox.txt\");","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"dedsecrattle"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"dedsecrattle"},"content":" bot.run();","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"dedsecrattle"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"dedsecrattle":11}},{"path":"src/main/java/jivox/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dedsecrattle"},"content":"package jivox;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"dedsecrattle"},"content":"import jivox.exception.JivoxException;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"dedsecrattle"},"content":"public class Parser {","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"dedsecrattle"},"content":" public COMMANDS parseCommand(String rawInput) throws JivoxException {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"dedsecrattle"},"content":" String[] input \u003d rawInput.split(\" \",2);","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"dedsecrattle"},"content":" try{","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"dedsecrattle"},"content":" return COMMANDS.valueOf(input[0].toUpperCase());","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"dedsecrattle"},"content":" } catch (IllegalArgumentException e){","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"dedsecrattle"},"content":" throw new JivoxException(\"Opps! I can\u0027t understand your Input, Please try again\");","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"dedsecrattle"},"content":" public String[] parseInput(String rawInput){","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"dedsecrattle"},"content":" return rawInput.split(\" \",2);","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"dedsecrattle"},"content":" public String[] split(String input, String reg){","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"dedsecrattle"},"content":" return input.split(reg);","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"dedsecrattle"},"content":" public String[] split(String input, String reg,int limit){","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"dedsecrattle"},"content":" return input.split(reg,limit);","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"dedsecrattle"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"dedsecrattle":27}},{"path":"src/main/java/jivox/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dedsecrattle"},"content":"package jivox;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"dedsecrattle"},"content":"import jivox.task.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"dedsecrattle"},"content":"import jivox.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"dedsecrattle"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"dedsecrattle"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"dedsecrattle"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"dedsecrattle"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"dedsecrattle"},"content":"public class Ui {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"dedsecrattle"},"content":" private Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"dedsecrattle"},"content":" public String input(){","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"dedsecrattle"},"content":" return this.sc.nextLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"dedsecrattle"},"content":" public void close(){","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"dedsecrattle"},"content":" this.sc.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"dedsecrattle"},"content":" public void greet(){","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"dedsecrattle"},"content":" addDivider();","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"dedsecrattle"},"content":" System.out.println(\"Hello! I\u0027m Jivox\");","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"dedsecrattle"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"dedsecrattle"},"content":" addDivider();","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"dedsecrattle"},"content":" public void showMark(Task t){","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"dedsecrattle"},"content":" addDivider();","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"dedsecrattle"},"content":" System.out.println(\"Nice! , I\u0027ve marked this task :\\n\" + t);","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"dedsecrattle"},"content":" addDivider();","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"dedsecrattle"},"content":" public void showDelete(Task t, int tasksLeft){","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"dedsecrattle"},"content":" addDivider();","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"dedsecrattle"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\\n\" + t);","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"dedsecrattle"},"content":" System.out.println(\"Now you have \" + tasksLeft +\" Tasks in the List\");","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"dedsecrattle"},"content":" addDivider();","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"dedsecrattle"},"content":" public void showUnmark(Task t){","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"dedsecrattle"},"content":" addDivider();","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"dedsecrattle"},"content":" System.out.println(\"OK, I\u0027ve Unmarked this task :\\n\" + t);","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"dedsecrattle"},"content":" addDivider();","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"dedsecrattle"},"content":" public void showAdd(Task t, int numOfTask){","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"dedsecrattle"},"content":" addDivider();","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"dedsecrattle"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n\" + t);","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"dedsecrattle"},"content":" System.out.println(\"Now you have \" + numOfTask +\" tasks in the list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"dedsecrattle"},"content":" addDivider();","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"dedsecrattle"},"content":" public void showList(TaskList list){","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"dedsecrattle"},"content":" if(list.getLength() \u003d\u003d 0){","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"dedsecrattle"},"content":" System.out.println(\"You\u0027ve No task in the List!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"dedsecrattle"},"content":" else {","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"dedsecrattle"},"content":" System.out.println(\"You have Following tasks in your List:- \");","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"dedsecrattle"},"content":" addDivider();","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"dedsecrattle"},"content":" for (int i \u003d 0; i \u003c list.getLength(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"dedsecrattle"},"content":" System.out.println((i + 1) + \". \" + list.getTask(i));","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"dedsecrattle"},"content":" addDivider();","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"dedsecrattle"},"content":" public void addDivider(){","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"dedsecrattle"},"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\u003d\u003d\u003d\u003d\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-29"},{"lineNumber":71,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"dedsecrattle"},"content":" public void exit(){","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"dedsecrattle"},"content":" addDivider();","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"dedsecrattle"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"dedsecrattle"},"content":" addDivider();","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"dedsecrattle"},"content":" public void showDeadline(TaskList list, LocalDate time){","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"dedsecrattle"},"content":" System.out.println(\"You have following Task due on \" + time.format(DateTimeFormatter.ofPattern(\"dd MMM yyyy\")) + \":-\");","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"dedsecrattle"},"content":" for(int i \u003d 0; i \u003c list.getLength(); i++){","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"dedsecrattle"},"content":" LocalDateTime deadline \u003d list.getTask(i).getDeadline();","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"dedsecrattle"},"content":" if(deadline !\u003d null){","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"dedsecrattle"},"content":" if(deadline.getMonth() \u003d\u003d time.getMonth() \u0026\u0026 deadline.getYear() \u003d\u003d time.getYear() \u0026\u0026 deadline.getDayOfMonth() \u003d\u003d time.getDayOfMonth()){","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"dedsecrattle"},"content":" addDivider();","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"dedsecrattle"},"content":" System.out.println(list.getTask(i));","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"dedsecrattle"},"content":" addDivider();","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"dedsecrattle"},"content":" public void showException(Exception e){","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"dedsecrattle"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"dedsecrattle"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"dedsecrattle":96}},{"path":"src/main/java/jivox/exception/DataHandlerException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dedsecrattle"},"content":"package jivox.exception;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"dedsecrattle"},"content":"public class DataHandlerException extends JivoxException{","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"dedsecrattle"},"content":" public DataHandlerException(String message){","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"dedsecrattle"},"content":" super(\"Database Error |\" + message);","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"dedsecrattle"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"dedsecrattle":7}},{"path":"src/main/java/jivox/exception/JivoxException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dedsecrattle"},"content":"package jivox.exception;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"dedsecrattle"},"content":"public class JivoxException extends Exception{","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"dedsecrattle"},"content":" public JivoxException(String message){","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"dedsecrattle"},"content":" super(message);","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"dedsecrattle"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"dedsecrattle":7}},{"path":"src/main/java/jivox/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dedsecrattle"},"content":"package jivox.task;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"dedsecrattle"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"dedsecrattle"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"dedsecrattle"},"content":"public class Deadline extends Task{","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"dedsecrattle"},"content":" private LocalDateTime deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"dedsecrattle"},"content":" public Deadline(String content,LocalDateTime deadline) {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"dedsecrattle"},"content":" super(content);","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"dedsecrattle"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"dedsecrattle"},"content":" public String getType(){","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"dedsecrattle"},"content":" return \"D\";","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"dedsecrattle"},"content":" public LocalDateTime getDeadline(){","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"dedsecrattle"},"content":" return this.deadline;","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"dedsecrattle"},"content":" public String saveFormat(){","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"dedsecrattle"},"content":" return this.getType() + \" | \" + (this.getStatus() ? \"1\" : \"0\") + \" | \" + this.getDescription() +","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"dedsecrattle"},"content":" \"| \" + this.deadline.format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"dedsecrattle"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"dedsecrattle"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"dedsecrattle"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.deadline.format(DateTimeFormatter.ofPattern(\"dd MMM yyyy HH:mm\")) + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"dedsecrattle"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"dedsecrattle":34}},{"path":"src/main/java/jivox/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dedsecrattle"},"content":"package jivox.task;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"dedsecrattle"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"dedsecrattle"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"dedsecrattle"},"content":"public class Event extends Task{","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"dedsecrattle"},"content":" private LocalDateTime from;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"dedsecrattle"},"content":" private LocalDateTime to;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"dedsecrattle"},"content":" public Event(String content,LocalDateTime from,LocalDateTime to) {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"dedsecrattle"},"content":" super(content);","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"dedsecrattle"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"dedsecrattle"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"dedsecrattle"},"content":" public String getType(){","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"dedsecrattle"},"content":" return \"E\";","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"dedsecrattle"},"content":" public String getStart(){","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"dedsecrattle"},"content":" return this.from.toString();","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"dedsecrattle"},"content":" public LocalDateTime getDeadline(){","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"dedsecrattle"},"content":" return this.to;","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"dedsecrattle"},"content":" public String saveFormat(){","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"dedsecrattle"},"content":" return this.getType() + \" | \" + (this.getStatus() ? \"1\" : \"0\") + \" | \" + this.getDescription() + \"| \" +","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"dedsecrattle"},"content":" this.from.format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\")) + \" to \" + this.to.format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"dedsecrattle"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"dedsecrattle"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"dedsecrattle"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.from.format(DateTimeFormatter.ofPattern(\"dd MMM yyyy HH:mm\")) + \" to: \" +","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"dedsecrattle"},"content":" this.to.format(DateTimeFormatter.ofPattern(\"dd MMM yyyy HH:mm\")) + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"dedsecrattle"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"dedsecrattle":38}},{"path":"src/main/java/jivox/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dedsecrattle"},"content":"package jivox.task;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"dedsecrattle"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"dedsecrattle"},"content":"public abstract class Task {","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"dedsecrattle"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"dedsecrattle"},"content":" private String content;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"dedsecrattle"},"content":" public Task(String content){","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"dedsecrattle"},"content":" this.content \u003d content;","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"dedsecrattle"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"dedsecrattle"},"content":" public void mark(){","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"dedsecrattle"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"dedsecrattle"},"content":" public LocalDateTime getDeadline(){","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"dedsecrattle"},"content":" return null;","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"dedsecrattle"},"content":" public void unmark(){","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"dedsecrattle"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"dedsecrattle"},"content":" public String getDescription(){","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"dedsecrattle"},"content":" return this.content;","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"dedsecrattle"},"content":" abstract public String getType();","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"dedsecrattle"},"content":" public boolean getStatus() {","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"dedsecrattle"},"content":" return this.isDone;","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"dedsecrattle"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"dedsecrattle"},"content":" public String toString(){","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"dedsecrattle"},"content":" String mark \u003d isDone ? \"X\" : \" \";","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"dedsecrattle"},"content":" return \"[\" + mark + \"] \" + this.content;","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"dedsecrattle"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"dedsecrattle":41}},{"path":"src/main/java/jivox/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dedsecrattle"},"content":"package jivox.task;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"dedsecrattle"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"dedsecrattle"},"content":"public class TaskList {","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"dedsecrattle"},"content":" ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"dedsecrattle"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks){","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"dedsecrattle"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"dedsecrattle"},"content":" public void delete(int taskNum){","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"dedsecrattle"},"content":" this.tasks.remove(taskNum);","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"dedsecrattle"},"content":" public int getLength(){","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"dedsecrattle"},"content":" return this.tasks.size();","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"dedsecrattle"},"content":" public void add(Task t){","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"dedsecrattle"},"content":" this.tasks.add(t);","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"dedsecrattle"},"content":" public Task getTask(int taskNum){","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"dedsecrattle"},"content":" return this.tasks.get(taskNum);","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"dedsecrattle"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"dedsecrattle":28}},{"path":"src/main/java/jivox/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dedsecrattle"},"content":"package jivox.task;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"dedsecrattle"},"content":"public class Todo extends Task{","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"dedsecrattle"},"content":" public Todo(String content) {","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"dedsecrattle"},"content":" super(content);","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"dedsecrattle"},"content":" public String getType(){","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"dedsecrattle"},"content":" return \"T\";","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"dedsecrattle"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"dedsecrattle"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"dedsecrattle"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"dedsecrattle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"dedsecrattle"},"content":" public String saveFormat(){","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"dedsecrattle"},"content":" return this.getType() + \" | \" + (this.getStatus() ? \"1\" : \"0\") + \" | \" + this.getDescription();","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"dedsecrattle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"dedsecrattle"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"dedsecrattle":20}},{"path":"text-ui-test/data/jivox.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"dedsecrattle"},"content":"T | 0 | Read Book","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"dedsecrattle"},"content":"D | 0 | Submit Assignment| Sunday","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"dedsecrattle"},"content":"E | 0 | Coldplay Concert| 1PM-2PM","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"dedsecrattle"},"content":"T | 0 | Read Book","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"dedsecrattle"},"content":"D | 0 | Submit Assignment| Sunday","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"dedsecrattle"},"content":"E | 0 | Coldplay Concert| 1PM-2PM","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"dedsecrattle"},"content":"T | 0 | Read Book","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"dedsecrattle"},"content":"D | 0 | Submit Assignment| Sunday","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"dedsecrattle"},"content":"E | 0 | Coldplay Concert| 1PM-2PM","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"dedsecrattle":9}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"dedsecrattle"},"content":"todo Read Book","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"dedsecrattle"},"content":"deadline Submit Assignment /by Sunday","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"dedsecrattle"},"content":"event Coldplay Concert /from 1PM /to 2PM","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"dedsecrattle"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"dedsecrattle"},"content":"mark 1","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"dedsecrattle"},"content":"unmark 1","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"dedsecrattle"},"content":"delete 2","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"dedsecrattle"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"dedsecrattle"},"content":"bye","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"dedsecrattle":9}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"dedsecrattle"},"content":"java -classpath ../bin Main \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"dedsecrattle":1,"-":37}}] diff --git a/dedsecrattle_ip_master/commits.json b/dedsecrattle_ip_master/commits.json index 9f19c553..ca6a1279 100644 --- a/dedsecrattle_ip_master/commits.json +++ b/dedsecrattle_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"dedsecrattle":[{"date":"2024-01-23","commitResults":[{"hash":"284ae0f094b6efc19f31bd2a06c06f55b1e29ab2","isMergeCommit":false,"messageTitle":"Level-0 Add Jivox and Delete Duke","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":10}}},{"hash":"7733b217df2e89360c2052fa343fd4c67d8e6a51","isMergeCommit":false,"messageTitle":"Level-1 Add Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":0}}},{"hash":"db1ea2b5e69e9fdad2bc53557701c8f8632fff75","isMergeCommit":false,"messageTitle":"Level-2 Implement Add and List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":3}}},{"hash":"89e2fb9db67496863e49d43e4cb3e84b2e3e363e","isMergeCommit":false,"messageTitle":"Level-3 Add mark and unmark","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":54,"deletions":5}}},{"hash":"dbf22790507069ab4eb1a1f7db4f557478dbb25d","isMergeCommit":false,"messageTitle":"Level-4 Add Todo, Event, Deadline","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":62,"deletions":5}}},{"hash":"522a2a7df41a651538b26a6edaa16c230139d119","isMergeCommit":false,"messageTitle":"Level-5 Add Exception Handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":56,"deletions":14}}},{"hash":"175a4d22d194f600e4be6e4b9ee9cf848c326dfb","isMergeCommit":false,"messageTitle":"Level-6 Add Delete functionality","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":0}}},{"hash":"3689ad831d2e53371ab18ef4ece17a26cb5bd9ac","isMergeCommit":false,"messageTitle":"A-TextUiTesting Done","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"sh":{"insertions":1,"deletions":1}}},{"hash":"0bcf2758cbd2f65b2a31148bcab2dcc935374522","isMergeCommit":false,"messageTitle":"A-enums Complete","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":71,"deletions":33}}}]},{"date":"2024-01-28","commitResults":[{"hash":"728ab512b8cf0744ba35d95c48b24f62c4c22a4f","isMergeCommit":false,"messageTitle":"Add Local Database to store tasks","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":190,"deletions":25}}},{"hash":"354cb0b5a75f0705805f8215bae19e6459fba939","isMergeCommit":false,"messageTitle":"Implement Level-7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":9}}},{"hash":"08cba688fc4b53e98d347c99de1684b1690a1c0d","isMergeCommit":false,"messageTitle":"Fix Database","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"java":{"insertions":11,"deletions":24}}},{"hash":"8f7f840cc017b5efd1725e43f89fb96ae6e14b9a","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027 Merged Branch-level-7 to Master","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-29","commitResults":[{"hash":"26c9688c86495506c6011226314503cd759ee6a1","isMergeCommit":false,"messageTitle":"Add DateTime","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":94,"deletions":22}}},{"hash":"7c797ea43ca467ef58e482ce873c413e5c72b959","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"43e38d930b358e0918e3748d277d363374d44ada","isMergeCommit":false,"messageTitle":"Abstracted out New Classes","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":210,"deletions":115}}},{"hash":"e8a41dd2bdf9f25e8a0be2926bcbd99c4c223ccc","isMergeCommit":false,"messageTitle":"A-Packages Done","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":3}}}]}]},"authorFileTypeContributionMap":{"dedsecrattle":{"java":641,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":0,"txt":18}},"authorContributionVariance":{"dedsecrattle":32675.174},"authorDisplayNameMap":{"dedsecrattle":"CS2103T-T16-1 KUMA..BHAT"}} +{"authorDailyContributionsMap":{"dedsecrattle":[{"date":"2024-01-23","commitResults":[{"hash":"284ae0f094b6efc19f31bd2a06c06f55b1e29ab2","isMergeCommit":false,"messageTitle":"Level-0 Add Jivox and Delete Duke","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":10}}},{"hash":"7733b217df2e89360c2052fa343fd4c67d8e6a51","isMergeCommit":false,"messageTitle":"Level-1 Add Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":0}}},{"hash":"db1ea2b5e69e9fdad2bc53557701c8f8632fff75","isMergeCommit":false,"messageTitle":"Level-2 Implement Add and List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":3}}},{"hash":"89e2fb9db67496863e49d43e4cb3e84b2e3e363e","isMergeCommit":false,"messageTitle":"Level-3 Add mark and unmark","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":54,"deletions":5}}},{"hash":"dbf22790507069ab4eb1a1f7db4f557478dbb25d","isMergeCommit":false,"messageTitle":"Level-4 Add Todo, Event, Deadline","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":62,"deletions":5}}},{"hash":"522a2a7df41a651538b26a6edaa16c230139d119","isMergeCommit":false,"messageTitle":"Level-5 Add Exception Handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":56,"deletions":14}}},{"hash":"175a4d22d194f600e4be6e4b9ee9cf848c326dfb","isMergeCommit":false,"messageTitle":"Level-6 Add Delete functionality","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":0}}},{"hash":"3689ad831d2e53371ab18ef4ece17a26cb5bd9ac","isMergeCommit":false,"messageTitle":"A-TextUiTesting Done","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"sh":{"insertions":1,"deletions":1}}},{"hash":"0bcf2758cbd2f65b2a31148bcab2dcc935374522","isMergeCommit":false,"messageTitle":"A-enums Complete","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":71,"deletions":33}}}]},{"date":"2024-01-28","commitResults":[{"hash":"728ab512b8cf0744ba35d95c48b24f62c4c22a4f","isMergeCommit":false,"messageTitle":"Add Local Database to store tasks","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":190,"deletions":25}}},{"hash":"354cb0b5a75f0705805f8215bae19e6459fba939","isMergeCommit":false,"messageTitle":"Implement Level-7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":9}}},{"hash":"08cba688fc4b53e98d347c99de1684b1690a1c0d","isMergeCommit":false,"messageTitle":"Fix Database","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"java":{"insertions":11,"deletions":24}}},{"hash":"8f7f840cc017b5efd1725e43f89fb96ae6e14b9a","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027 Merged Branch-level-7 to Master","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-29","commitResults":[{"hash":"26c9688c86495506c6011226314503cd759ee6a1","isMergeCommit":false,"messageTitle":"Add DateTime","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":94,"deletions":22}}},{"hash":"7c797ea43ca467ef58e482ce873c413e5c72b959","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"43e38d930b358e0918e3748d277d363374d44ada","isMergeCommit":false,"messageTitle":"Abstracted out New Classes","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":210,"deletions":115}}},{"hash":"e8a41dd2bdf9f25e8a0be2926bcbd99c4c223ccc","isMergeCommit":false,"messageTitle":"A-Packages Done","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":3}}},{"hash":"881d7af199d51e54831d2f4e32d916209f5c8ae5","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-01-30","commitResults":[{"hash":"f2c197a45fb5688b27664a4c8d92f9251c4f1837","isMergeCommit":false,"messageTitle":"Added Gradle to Project","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"dedsecrattle":{"java":641,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":2,"txt":18}},"authorContributionVariance":{"dedsecrattle":30792.975},"authorDisplayNameMap":{"dedsecrattle":"CS2103T-T16-1 KUMA..BHAT"}} diff --git a/fy17ohhh_ip_master/authorship.json b/fy17ohhh_ip_master/authorship.json index ca06458c..dfc32455 100644 --- a/fy17ohhh_ip_master/authorship.json +++ b/fy17ohhh_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/jade/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"fy17ohhh"},"content":"package jade;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"fy17ohhh"},"content":"public enum Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"fy17ohhh"},"content":" todo,","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"fy17ohhh"},"content":" deadline,","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"fy17ohhh"},"content":" event,","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"fy17ohhh"},"content":" list,","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"fy17ohhh"},"content":" mark,","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"fy17ohhh"},"content":" unmark,","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"fy17ohhh"},"content":" delete,","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"fy17ohhh"},"content":" bye","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"fy17ohhh"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"fy17ohhh":12}},{"path":"src/main/java/jade/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"fy17ohhh"},"content":"package jade;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"fy17ohhh"},"content":"public class Deadline extends Task{","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"fy17ohhh"},"content":" protected String deadlineDate;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"fy17ohhh"},"content":" public Deadline(String description, String deadlineDate) {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"fy17ohhh"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"fy17ohhh"},"content":" this.deadlineDate \u003d deadlineDate;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"fy17ohhh"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"fy17ohhh"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"fy17ohhh"},"content":" return String.format(\"[D]%s (by: %s)\", super.toString(),this.deadlineDate);","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"fy17ohhh"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"fy17ohhh":15}},{"path":"src/main/java/jade/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"fy17ohhh"},"content":"package jade;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"fy17ohhh"},"content":"public class Event extends Task{","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"fy17ohhh"},"content":" protected String startDate;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"fy17ohhh"},"content":" protected String endDate;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"fy17ohhh"},"content":" public Event(String description, String startDate, String endDate) {","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"fy17ohhh"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"fy17ohhh"},"content":" this.startDate \u003d startDate;","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"fy17ohhh"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"fy17ohhh"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"fy17ohhh"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"fy17ohhh"},"content":" return String.format(\"[E]%s (from: %s to: %s)\", super.toString(),this.startDate, this.endDate);","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"fy17ohhh"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"fy17ohhh":17}},{"path":"src/main/java/jade/Jade.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"fy17ohhh"},"content":"package jade;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"fy17ohhh"},"content":"import java.util.*;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"fy17ohhh"},"content":"public class Jade {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"fy17ohhh"},"content":" public String line \u003d \"\\t——————————————————————————————————————————\\n\";","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"fy17ohhh"},"content":" public String logo \u003d \"\\t ____ ___ ____ ______\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"fy17ohhh"},"content":" + \"\\t | | / _ \\\\ | ___ \\\\ / |____/\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"fy17ohhh"},"content":" + \"\\t | | | | | | | | | | | |____\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"fy17ohhh"},"content":" + \"\\t | | | |_| | | | | | | |____|\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"fy17ohhh"},"content":" + \"\\t|\\\\| | | ___ | | |__| | | |____\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"fy17ohhh"},"content":" + \"\\t \\\\___| |_| |_| |_____/ \\\\_|____\\\\\\n\";","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"fy17ohhh"},"content":" private boolean exitProg \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"fy17ohhh"},"content":" private List\u003cTask\u003e userList;","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"fy17ohhh"},"content":" Jade() {","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"fy17ohhh"},"content":" this.userList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"fy17ohhh"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"fy17ohhh"},"content":" Jade myJade \u003d new Jade();","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"fy17ohhh"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"fy17ohhh"},"content":" myJade.launch(scanner);","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"fy17ohhh"},"content":" private void launch(Scanner scanner) {","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"fy17ohhh"},"content":" System.out.printf(\"%s%s\\tHello, I\u0027m Jade\\n\\twhat can I do for you?\\n%s\", logo, line, line);","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"fy17ohhh"},"content":" while(!this.exitProg) {","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"fy17ohhh"},"content":" String command \u003d scanner.nextLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"fy17ohhh"},"content":" echo(command);","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"fy17ohhh"},"content":" public void echo(String inputCommand) {","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"fy17ohhh"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"fy17ohhh"},"content":" String[] command \u003d inputCommand.split(\" \");","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"fy17ohhh"},"content":" Command commandHeader \u003d Command.valueOf(command[0]);","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"fy17ohhh"},"content":" if (commandHeader.equals(Command.todo)) {","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"fy17ohhh"},"content":" if (command.length \u003d\u003d 1) {","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"fy17ohhh"},"content":" throw new JadeException(\"Sorry, your task to do cannot be empty.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"fy17ohhh"},"content":" addTodo(command);","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"fy17ohhh"},"content":" } else if (commandHeader.equals(Command.deadline)) {","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"fy17ohhh"},"content":" addDeadline(command);","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"fy17ohhh"},"content":" } else if (commandHeader.equals(Command.event)) {","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"fy17ohhh"},"content":" addEvent(command);","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"fy17ohhh"},"content":" } else if (commandHeader.equals(Command.list)) {","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"fy17ohhh"},"content":" printList();","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"fy17ohhh"},"content":" } else if (commandHeader.equals(Command.mark)) {","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"fy17ohhh"},"content":" if (command.length \u003d\u003d 1 || Integer.parseInt(command[1]) \u003e userList.size()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"fy17ohhh"},"content":" throw new JadeException(\"Please input a valid number to mark Done.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"fy17ohhh"},"content":" markDone(command[1]);","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"fy17ohhh"},"content":" } else if (commandHeader.equals(Command.unmark)) {","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"fy17ohhh"},"content":" if (command.length \u003d\u003d 1 || Integer.parseInt(command[1]) \u003e userList.size()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"fy17ohhh"},"content":" throw new JadeException(\"Please input a valid number to unmark Done.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"fy17ohhh"},"content":" unmarkDone(command[1]);","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"fy17ohhh"},"content":" } else if (commandHeader.equals(Command.delete)) {","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"fy17ohhh"},"content":" if (command.length \u003d\u003d 1 || Integer.parseInt(command[1]) \u003e userList.size()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"fy17ohhh"},"content":" throw new JadeException(\"Please input a valid number to delete the task.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"fy17ohhh"},"content":" deleteTask(command[1]);","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"fy17ohhh"},"content":" } else if (commandHeader.equals(Command.bye)) {","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"fy17ohhh"},"content":" goodbye();","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"fy17ohhh"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"fy17ohhh"},"content":" throw new JadeException(\"Sorry, I don\u0027t have this command currently.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":68,"author":{"gitId":"fy17ohhh"},"content":" } catch (JadeException je) {","lastModifiedDate":"2024-01-25"},{"lineNumber":69,"author":{"gitId":"fy17ohhh"},"content":" System.out.printf(\"%s\\t%s\\n%s\", line, je.getMessage(), line);","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"fy17ohhh"},"content":" } catch (IllegalArgumentException iae) {","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"fy17ohhh"},"content":" System.out.printf(\"%s\\tInput is invalid, please retry. \\n%s\", line, line);","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"fy17ohhh"},"content":" public void addTodo(String[] command) {","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"fy17ohhh"},"content":" String todoDescription \u003d String.join(\" \", Arrays.copyOfRange(command, 1, command.length));","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"fy17ohhh"},"content":" Task todoT \u003d new Todo(todoDescription);","lastModifiedDate":"2024-01-24"},{"lineNumber":78,"author":{"gitId":"fy17ohhh"},"content":" userList.add(todoT);","lastModifiedDate":"2024-01-24"},{"lineNumber":79,"author":{"gitId":"fy17ohhh"},"content":" System.out.printf(\"%s\\tGot it. I\u0027ve added this task:\\n\\t %s\\n\\tNow you have %d task(s) in the list.\\n%s\", line, todoT, userList.size(), line);","lastModifiedDate":"2024-01-24"},{"lineNumber":80,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":82,"author":{"gitId":"fy17ohhh"},"content":" public void addDeadline(String[] command) {","lastModifiedDate":"2024-01-25"},{"lineNumber":83,"author":{"gitId":"fy17ohhh"},"content":" String deadlineDescription \u003d String.join(\" \", Arrays.copyOfRange(command, 1, Arrays.asList(command).indexOf(\"/by\")));","lastModifiedDate":"2024-01-25"},{"lineNumber":84,"author":{"gitId":"fy17ohhh"},"content":" String deadlineDate \u003d String.join(\" \", Arrays.copyOfRange(command, Arrays.asList(command).indexOf(\"/by\") + 1, command.length));","lastModifiedDate":"2024-01-25"},{"lineNumber":85,"author":{"gitId":"fy17ohhh"},"content":" Task deadlineT \u003d new Deadline(deadlineDescription, deadlineDate);","lastModifiedDate":"2024-01-24"},{"lineNumber":86,"author":{"gitId":"fy17ohhh"},"content":" userList.add(deadlineT);","lastModifiedDate":"2024-01-24"},{"lineNumber":87,"author":{"gitId":"fy17ohhh"},"content":" System.out.printf(\"%s\\tGot it. I\u0027ve added this task:\\n\\t %s\\n\\tNow you have %d task(s) in the list.\\n%s\", line, deadlineT, userList.size(), line);","lastModifiedDate":"2024-01-24"},{"lineNumber":88,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":89,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":90,"author":{"gitId":"fy17ohhh"},"content":" public void addEvent(String[] command) {","lastModifiedDate":"2024-01-25"},{"lineNumber":91,"author":{"gitId":"fy17ohhh"},"content":" String eventDescription \u003d String.join(\" \", Arrays.copyOfRange(command, 1, Arrays.asList(command).indexOf(\"/from\")));","lastModifiedDate":"2024-01-25"},{"lineNumber":92,"author":{"gitId":"fy17ohhh"},"content":" String startDate \u003d String.join(\" \", Arrays.copyOfRange(command, Arrays.asList(command).indexOf(\"/from\") + 1, Arrays.asList(command).indexOf(\"/to\")));","lastModifiedDate":"2024-01-25"},{"lineNumber":93,"author":{"gitId":"fy17ohhh"},"content":" String endDate \u003d String.join(\" \", Arrays.copyOfRange(command, Arrays.asList(command).indexOf(\"/to\") + 1, command.length));","lastModifiedDate":"2024-01-25"},{"lineNumber":94,"author":{"gitId":"fy17ohhh"},"content":" Task eventT \u003d new Event(eventDescription, startDate, endDate);","lastModifiedDate":"2024-01-24"},{"lineNumber":95,"author":{"gitId":"fy17ohhh"},"content":" userList.add(eventT);","lastModifiedDate":"2024-01-24"},{"lineNumber":96,"author":{"gitId":"fy17ohhh"},"content":" System.out.printf(\"%s\\tGot it. I\u0027ve added this task:\\n\\t %s\\n\\tNow you have %d task(s) in the list.\\n%s\", line, eventT, userList.size(), line);","lastModifiedDate":"2024-01-24"},{"lineNumber":97,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":98,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":99,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":100,"author":{"gitId":"fy17ohhh"},"content":" public void printList() {","lastModifiedDate":"2024-01-25"},{"lineNumber":101,"author":{"gitId":"fy17ohhh"},"content":" System.out.println(line + \"\\tHere are the task(s) in your list:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":102,"author":{"gitId":"fy17ohhh"},"content":" for (int i \u003d 1; i \u003c\u003d userList.size(); i++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":103,"author":{"gitId":"fy17ohhh"},"content":" System.out.printf(\"\\t%d. %s\\n\", i, userList.get(i-1));","lastModifiedDate":"2024-01-24"},{"lineNumber":104,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":105,"author":{"gitId":"fy17ohhh"},"content":" System.out.print(line);","lastModifiedDate":"2024-01-24"},{"lineNumber":106,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":107,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":108,"author":{"gitId":"fy17ohhh"},"content":" public void markDone(String inputIndex) {","lastModifiedDate":"2024-01-25"},{"lineNumber":109,"author":{"gitId":"fy17ohhh"},"content":" int indexMark \u003d Integer.parseInt(inputIndex);","lastModifiedDate":"2024-01-25"},{"lineNumber":110,"author":{"gitId":"fy17ohhh"},"content":" userList.get(indexMark-1).mark();","lastModifiedDate":"2024-01-24"},{"lineNumber":111,"author":{"gitId":"fy17ohhh"},"content":" System.out.printf(\"%s\\tNice, I\u0027ve marked this task as done:\\n\\t %s\\n%s\", line, userList.get(indexMark-1), line);","lastModifiedDate":"2024-01-25"},{"lineNumber":112,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":113,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":114,"author":{"gitId":"fy17ohhh"},"content":" public void unmarkDone(String inputIndex) {","lastModifiedDate":"2024-01-25"},{"lineNumber":115,"author":{"gitId":"fy17ohhh"},"content":" int indexUnmark \u003d Integer.parseInt(inputIndex);","lastModifiedDate":"2024-01-25"},{"lineNumber":116,"author":{"gitId":"fy17ohhh"},"content":" userList.get(indexUnmark-1).unMark();","lastModifiedDate":"2024-01-24"},{"lineNumber":117,"author":{"gitId":"fy17ohhh"},"content":" System.out.printf(\"%s\\tOK, I\u0027ve marked this task as not done yet:\\n\\t %s\\n%s\", line, userList.get(indexUnmark-1), line);","lastModifiedDate":"2024-01-24"},{"lineNumber":118,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":119,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":120,"author":{"gitId":"fy17ohhh"},"content":" public void deleteTask(String inputIndex) {","lastModifiedDate":"2024-01-25"},{"lineNumber":121,"author":{"gitId":"fy17ohhh"},"content":" int indexUnmark \u003d Integer.parseInt(inputIndex);","lastModifiedDate":"2024-01-25"},{"lineNumber":122,"author":{"gitId":"fy17ohhh"},"content":" Task deletedTask \u003d userList.get(indexUnmark-1);","lastModifiedDate":"2024-01-25"},{"lineNumber":123,"author":{"gitId":"fy17ohhh"},"content":" userList.remove(indexUnmark-1);","lastModifiedDate":"2024-01-25"},{"lineNumber":124,"author":{"gitId":"fy17ohhh"},"content":" System.out.printf(\"%s\\tOK, I\u0027ve deleted this task:\\n\\t %s\\n\\tNow you have %d task(s) in the list.\\n%s\", line, deletedTask, userList.size(), line);","lastModifiedDate":"2024-01-25"},{"lineNumber":125,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":126,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":127,"author":{"gitId":"fy17ohhh"},"content":" public void goodbye() {","lastModifiedDate":"2024-01-25"},{"lineNumber":128,"author":{"gitId":"fy17ohhh"},"content":" System.out.printf(\"%s\\tBye. Hope to see you again soon.\\n%s\",line,line);","lastModifiedDate":"2024-01-25"},{"lineNumber":129,"author":{"gitId":"fy17ohhh"},"content":" exitProg \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":130,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":131,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":132,"author":{"gitId":"fy17ohhh"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"fy17ohhh":132}},{"path":"src/main/java/jade/JadeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"fy17ohhh"},"content":"package jade;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"fy17ohhh"},"content":"public class JadeException extends Exception{","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"fy17ohhh"},"content":" public JadeException(String message) {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"fy17ohhh"},"content":" super(message);","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"fy17ohhh"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"fy17ohhh":7}},{"path":"src/main/java/jade/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"fy17ohhh"},"content":"package jade;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"fy17ohhh"},"content":"public class Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"fy17ohhh"},"content":" protected String description;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"fy17ohhh"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"fy17ohhh"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"fy17ohhh"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"fy17ohhh"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"fy17ohhh"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"fy17ohhh"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"fy17ohhh"},"content":" protected void mark() {","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"fy17ohhh"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"fy17ohhh"},"content":" protected void unMark() {","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"fy17ohhh"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"fy17ohhh"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"fy17ohhh"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"fy17ohhh"},"content":" return String.format(\"[%s] %s\",this.getStatusIcon(), this.description);","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"fy17ohhh"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"fy17ohhh":29}},{"path":"src/main/java/jade/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"fy17ohhh"},"content":"package jade;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"fy17ohhh"},"content":"public class Todo extends Task{","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"fy17ohhh"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"fy17ohhh"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"fy17ohhh"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"fy17ohhh"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"fy17ohhh"},"content":" return String.format(\"[T]%s\", super.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"fy17ohhh"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"fy17ohhh":12}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"fy17ohhh"},"content":"todo read a book","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"fy17ohhh"},"content":"deadline complete assignment 2 /by tomorrow","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"fy17ohhh"},"content":"event visit family /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"fy17ohhh"},"content":"todo write homework 2","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"fy17ohhh"},"content":"mark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"fy17ohhh"},"content":"mark 3","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"fy17ohhh"},"content":"unmark 3","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"fy17ohhh"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"fy17ohhh"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"fy17ohhh":9}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"fy17ohhh"},"content":"javac -cp ..\\src\\main\\java\\jade -Xlint:none -d ..\\bin ..\\src\\main\\java\\jade\\*.java","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"fy17ohhh"},"content":"java -classpath ..\\bin jade.Jade \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"fy17ohhh":2,"-":19}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"fy17ohhh"},"content":"if ! javac -cp ../src/main/java/jade -Xlint:none -d ../bin ../src/main/java/jade/*.java","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"fy17ohhh"},"content":"java -classpath ../bin jade.Jade \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"fy17ohhh":2,"-":36}}] +[{"path":"src/main/java/jade/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"fy17ohhh"},"content":"package jade;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"fy17ohhh"},"content":"public enum Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"fy17ohhh"},"content":" todo,","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"fy17ohhh"},"content":" deadline,","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"fy17ohhh"},"content":" event,","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"fy17ohhh"},"content":" list,","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"fy17ohhh"},"content":" mark,","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"fy17ohhh"},"content":" unmark,","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"fy17ohhh"},"content":" delete,","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"fy17ohhh"},"content":" bye","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"fy17ohhh"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"fy17ohhh":12}},{"path":"src/main/java/jade/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"fy17ohhh"},"content":"package jade;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"fy17ohhh"},"content":"public class Deadline extends Task{","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"fy17ohhh"},"content":" protected String deadlineDate;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"fy17ohhh"},"content":" public Deadline(String description, String deadlineDate) {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"fy17ohhh"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"fy17ohhh"},"content":" this.deadlineDate \u003d deadlineDate;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"fy17ohhh"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"fy17ohhh"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"fy17ohhh"},"content":" return String.format(\"[D]%s (by: %s)\", super.toString(),this.deadlineDate);","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"fy17ohhh"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"fy17ohhh"},"content":" public String taskFormatter() {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"fy17ohhh"},"content":" return String.format(\"D | %s | %s | %s\\n\", statusFormatter(), description, deadlineDate);","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"fy17ohhh"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"fy17ohhh":20}},{"path":"src/main/java/jade/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"fy17ohhh"},"content":"package jade;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"fy17ohhh"},"content":"public class Event extends Task{","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"fy17ohhh"},"content":" protected String startDate;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"fy17ohhh"},"content":" protected String endDate;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"fy17ohhh"},"content":" public Event(String description, String startDate, String endDate) {","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"fy17ohhh"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"fy17ohhh"},"content":" this.startDate \u003d startDate;","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"fy17ohhh"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"fy17ohhh"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"fy17ohhh"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"fy17ohhh"},"content":" return String.format(\"[E]%s (from: %s to: %s)\", super.toString(),this.startDate, this.endDate);","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"fy17ohhh"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"fy17ohhh"},"content":" public String taskFormatter() {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"fy17ohhh"},"content":" return String.format(\"E | %s | %s | %s - %s\\n\", statusFormatter(), description, startDate, endDate);","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"fy17ohhh"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"fy17ohhh":22}},{"path":"src/main/java/jade/Jade.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"fy17ohhh"},"content":"package jade;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"fy17ohhh"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"fy17ohhh"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"fy17ohhh"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"fy17ohhh"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"fy17ohhh"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"fy17ohhh"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"fy17ohhh"},"content":"import java.util.List;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"fy17ohhh"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"fy17ohhh"},"content":"public class Jade {","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"fy17ohhh"},"content":" public String line \u003d \"\\t——————————————————————————————————————————\\n\";","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"fy17ohhh"},"content":" public String logo \u003d \"\\t ____ ___ ____ ______\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"fy17ohhh"},"content":" + \"\\t | | / _ \\\\ | ___ \\\\ / |____/\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"fy17ohhh"},"content":" + \"\\t | | | | | | | | | | | |____\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"fy17ohhh"},"content":" + \"\\t | | | |_| | | | | | | |____|\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"fy17ohhh"},"content":" + \"\\t|\\\\| | | ___ | | |__| | | |____\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"fy17ohhh"},"content":" + \"\\t \\\\___| |_| |_| |_____/ \\\\_|____\\\\\\n\";","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"fy17ohhh"},"content":" private boolean exitProg \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"fy17ohhh"},"content":" private List\u003cTask\u003e userList;","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"fy17ohhh"},"content":" Jade() {","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"fy17ohhh"},"content":" this.userList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"fy17ohhh"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"fy17ohhh"},"content":" Jade myJade \u003d new Jade();","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"fy17ohhh"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"fy17ohhh"},"content":" myJade.launch(scanner);","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"fy17ohhh"},"content":" private void launch(Scanner scanner) {","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"fy17ohhh"},"content":" System.out.printf(\"%s%s\\tHello, I\u0027m Jade\\n\\twhat can I do for you?\\n%s\", logo, line, line);","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"fy17ohhh"},"content":" while(!this.exitProg) {","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"fy17ohhh"},"content":" String command \u003d scanner.nextLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"fy17ohhh"},"content":" echo(command);","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"fy17ohhh"},"content":" public void echo(String inputCommand) {","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"fy17ohhh"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"fy17ohhh"},"content":" String[] command \u003d inputCommand.split(\" \");","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"fy17ohhh"},"content":" Command commandHeader \u003d Command.valueOf(command[0]);","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"fy17ohhh"},"content":" if (commandHeader.equals(Command.todo)) {","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"fy17ohhh"},"content":" if (command.length \u003d\u003d 1) {","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"fy17ohhh"},"content":" throw new JadeException(\"Sorry, your task to do cannot be empty.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"fy17ohhh"},"content":" addTodo(command);","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"fy17ohhh"},"content":" } else if (commandHeader.equals(Command.deadline)) {","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"fy17ohhh"},"content":" addDeadline(command);","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"fy17ohhh"},"content":" } else if (commandHeader.equals(Command.event)) {","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"fy17ohhh"},"content":" addEvent(command);","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"fy17ohhh"},"content":" } else if (commandHeader.equals(Command.list)) {","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"fy17ohhh"},"content":" printList();","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"fy17ohhh"},"content":" } else if (commandHeader.equals(Command.mark)) {","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"fy17ohhh"},"content":" if (command.length \u003d\u003d 1 || Integer.parseInt(command[1]) \u003e userList.size()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"fy17ohhh"},"content":" throw new JadeException(\"Please input a valid number to mark Done.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"fy17ohhh"},"content":" markDone(command[1]);","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"fy17ohhh"},"content":" } else if (commandHeader.equals(Command.unmark)) {","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"fy17ohhh"},"content":" if (command.length \u003d\u003d 1 || Integer.parseInt(command[1]) \u003e userList.size()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"fy17ohhh"},"content":" throw new JadeException(\"Please input a valid number to unmark Done.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"fy17ohhh"},"content":" unmarkDone(command[1]);","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"fy17ohhh"},"content":" } else if (commandHeader.equals(Command.delete)) {","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"fy17ohhh"},"content":" if (command.length \u003d\u003d 1 || Integer.parseInt(command[1]) \u003e userList.size()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":68,"author":{"gitId":"fy17ohhh"},"content":" throw new JadeException(\"Please input a valid number to delete the task.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":69,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"fy17ohhh"},"content":" deleteTask(command[1]);","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"fy17ohhh"},"content":" } else if (commandHeader.equals(Command.bye)) {","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"fy17ohhh"},"content":" goodbye();","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"fy17ohhh"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"fy17ohhh"},"content":" throw new JadeException(\"Sorry, I don\u0027t have this command currently.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"fy17ohhh"},"content":" } catch (JadeException je) {","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"fy17ohhh"},"content":" System.out.printf(\"%s\\t%s\\n%s\", line, je.getMessage(), line);","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"fy17ohhh"},"content":" } catch (IllegalArgumentException iae) {","lastModifiedDate":"2024-01-25"},{"lineNumber":79,"author":{"gitId":"fy17ohhh"},"content":" System.out.printf(\"%s\\tInput is invalid, please retry. \\n%s\", line, line);","lastModifiedDate":"2024-01-25"},{"lineNumber":80,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":82,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":83,"author":{"gitId":"fy17ohhh"},"content":" public void addTodo(String[] command) {","lastModifiedDate":"2024-01-25"},{"lineNumber":84,"author":{"gitId":"fy17ohhh"},"content":" String todoDescription \u003d String.join(\" \", Arrays.copyOfRange(command, 1, command.length));","lastModifiedDate":"2024-01-25"},{"lineNumber":85,"author":{"gitId":"fy17ohhh"},"content":" Task todoT \u003d new Todo(todoDescription);","lastModifiedDate":"2024-01-24"},{"lineNumber":86,"author":{"gitId":"fy17ohhh"},"content":" userList.add(todoT);","lastModifiedDate":"2024-01-24"},{"lineNumber":87,"author":{"gitId":"fy17ohhh"},"content":" saveChange();","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"fy17ohhh"},"content":" System.out.printf(\"%s\\tGot it. I\u0027ve added this task:\\n\\t %s\\n\\tNow you have %d task(s) in the list.\\n%s\", line, todoT, userList.size(), line);","lastModifiedDate":"2024-01-24"},{"lineNumber":89,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":90,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":91,"author":{"gitId":"fy17ohhh"},"content":" public void addDeadline(String[] command) {","lastModifiedDate":"2024-01-25"},{"lineNumber":92,"author":{"gitId":"fy17ohhh"},"content":" String deadlineDescription \u003d String.join(\" \", Arrays.copyOfRange(command, 1, Arrays.asList(command).indexOf(\"/by\")));","lastModifiedDate":"2024-01-25"},{"lineNumber":93,"author":{"gitId":"fy17ohhh"},"content":" String deadlineDate \u003d String.join(\" \", Arrays.copyOfRange(command, Arrays.asList(command).indexOf(\"/by\") + 1, command.length));","lastModifiedDate":"2024-01-25"},{"lineNumber":94,"author":{"gitId":"fy17ohhh"},"content":" Task deadlineT \u003d new Deadline(deadlineDescription, deadlineDate);","lastModifiedDate":"2024-01-24"},{"lineNumber":95,"author":{"gitId":"fy17ohhh"},"content":" userList.add(deadlineT);","lastModifiedDate":"2024-01-24"},{"lineNumber":96,"author":{"gitId":"fy17ohhh"},"content":" saveChange();","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"fy17ohhh"},"content":" System.out.printf(\"%s\\tGot it. I\u0027ve added this task:\\n\\t %s\\n\\tNow you have %d task(s) in the list.\\n%s\", line, deadlineT, userList.size(), line);","lastModifiedDate":"2024-01-24"},{"lineNumber":98,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":99,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":100,"author":{"gitId":"fy17ohhh"},"content":" public void addEvent(String[] command) {","lastModifiedDate":"2024-01-25"},{"lineNumber":101,"author":{"gitId":"fy17ohhh"},"content":" String eventDescription \u003d String.join(\" \", Arrays.copyOfRange(command, 1, Arrays.asList(command).indexOf(\"/from\")));","lastModifiedDate":"2024-01-25"},{"lineNumber":102,"author":{"gitId":"fy17ohhh"},"content":" String startDate \u003d String.join(\" \", Arrays.copyOfRange(command, Arrays.asList(command).indexOf(\"/from\") + 1, Arrays.asList(command).indexOf(\"/to\")));","lastModifiedDate":"2024-01-25"},{"lineNumber":103,"author":{"gitId":"fy17ohhh"},"content":" String endDate \u003d String.join(\" \", Arrays.copyOfRange(command, Arrays.asList(command).indexOf(\"/to\") + 1, command.length));","lastModifiedDate":"2024-01-25"},{"lineNumber":104,"author":{"gitId":"fy17ohhh"},"content":" Task eventT \u003d new Event(eventDescription, startDate, endDate);","lastModifiedDate":"2024-01-24"},{"lineNumber":105,"author":{"gitId":"fy17ohhh"},"content":" userList.add(eventT);","lastModifiedDate":"2024-01-24"},{"lineNumber":106,"author":{"gitId":"fy17ohhh"},"content":" saveChange();","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"fy17ohhh"},"content":" System.out.printf(\"%s\\tGot it. I\u0027ve added this task:\\n\\t %s\\n\\tNow you have %d task(s) in the list.\\n%s\", line, eventT, userList.size(), line);","lastModifiedDate":"2024-01-24"},{"lineNumber":108,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":109,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":110,"author":{"gitId":"fy17ohhh"},"content":" public void printList() {","lastModifiedDate":"2024-01-25"},{"lineNumber":111,"author":{"gitId":"fy17ohhh"},"content":" System.out.println(line + \"\\tHere are the task(s) in your list:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":112,"author":{"gitId":"fy17ohhh"},"content":" for (int i \u003d 1; i \u003c\u003d userList.size(); i++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":113,"author":{"gitId":"fy17ohhh"},"content":" System.out.printf(\"\\t%d. %s\\n\", i, userList.get(i-1));","lastModifiedDate":"2024-01-24"},{"lineNumber":114,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":115,"author":{"gitId":"fy17ohhh"},"content":" System.out.print(line);","lastModifiedDate":"2024-01-24"},{"lineNumber":116,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":117,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":118,"author":{"gitId":"fy17ohhh"},"content":" public void markDone(String inputIndex) {","lastModifiedDate":"2024-01-25"},{"lineNumber":119,"author":{"gitId":"fy17ohhh"},"content":" int indexMark \u003d Integer.parseInt(inputIndex);","lastModifiedDate":"2024-01-25"},{"lineNumber":120,"author":{"gitId":"fy17ohhh"},"content":" userList.get(indexMark-1).mark();","lastModifiedDate":"2024-01-24"},{"lineNumber":121,"author":{"gitId":"fy17ohhh"},"content":" saveChange();","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"fy17ohhh"},"content":" System.out.printf(\"%s\\tNice, I\u0027ve marked this task as done:\\n\\t %s\\n%s\", line, userList.get(indexMark-1), line);","lastModifiedDate":"2024-01-25"},{"lineNumber":123,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":124,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":125,"author":{"gitId":"fy17ohhh"},"content":" public void unmarkDone(String inputIndex) {","lastModifiedDate":"2024-01-25"},{"lineNumber":126,"author":{"gitId":"fy17ohhh"},"content":" int indexUnmark \u003d Integer.parseInt(inputIndex);","lastModifiedDate":"2024-01-25"},{"lineNumber":127,"author":{"gitId":"fy17ohhh"},"content":" userList.get(indexUnmark-1).unMark();","lastModifiedDate":"2024-01-24"},{"lineNumber":128,"author":{"gitId":"fy17ohhh"},"content":" saveChange();","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"fy17ohhh"},"content":" System.out.printf(\"%s\\tOK, I\u0027ve marked this task as not done yet:\\n\\t %s\\n%s\", line, userList.get(indexUnmark-1), line);","lastModifiedDate":"2024-01-24"},{"lineNumber":130,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":131,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":132,"author":{"gitId":"fy17ohhh"},"content":" public void deleteTask(String inputIndex) {","lastModifiedDate":"2024-01-25"},{"lineNumber":133,"author":{"gitId":"fy17ohhh"},"content":" int indexUnmark \u003d Integer.parseInt(inputIndex);","lastModifiedDate":"2024-01-25"},{"lineNumber":134,"author":{"gitId":"fy17ohhh"},"content":" Task deletedTask \u003d userList.get(indexUnmark-1);","lastModifiedDate":"2024-01-25"},{"lineNumber":135,"author":{"gitId":"fy17ohhh"},"content":" userList.remove(indexUnmark-1);","lastModifiedDate":"2024-01-25"},{"lineNumber":136,"author":{"gitId":"fy17ohhh"},"content":" saveChange();","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"fy17ohhh"},"content":" System.out.printf(\"%s\\tOK, I\u0027ve deleted this task:\\n\\t %s\\n\\tNow you have %d task(s) in the list.\\n%s\", line, deletedTask, userList.size(), line);","lastModifiedDate":"2024-01-25"},{"lineNumber":138,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":139,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":140,"author":{"gitId":"fy17ohhh"},"content":" public void goodbye() {","lastModifiedDate":"2024-01-25"},{"lineNumber":141,"author":{"gitId":"fy17ohhh"},"content":" System.out.printf(\"%s\\tBye. Hope to see you again soon.\\n%s\",line,line);","lastModifiedDate":"2024-01-25"},{"lineNumber":142,"author":{"gitId":"fy17ohhh"},"content":" exitProg \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":143,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":144,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":145,"author":{"gitId":"fy17ohhh"},"content":" public String listFormatter() {","lastModifiedDate":"2024-01-30"},{"lineNumber":146,"author":{"gitId":"fy17ohhh"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-01-30"},{"lineNumber":147,"author":{"gitId":"fy17ohhh"},"content":" for (Task task : userList) {","lastModifiedDate":"2024-01-30"},{"lineNumber":148,"author":{"gitId":"fy17ohhh"},"content":" sb.append(task.taskFormatter());","lastModifiedDate":"2024-01-30"},{"lineNumber":149,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":150,"author":{"gitId":"fy17ohhh"},"content":" return sb.toString();","lastModifiedDate":"2024-01-30"},{"lineNumber":151,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":152,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":153,"author":{"gitId":"fy17ohhh"},"content":" private void saveChange() {","lastModifiedDate":"2024-01-30"},{"lineNumber":154,"author":{"gitId":"fy17ohhh"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":155,"author":{"gitId":"fy17ohhh"},"content":" Path dataDir \u003d java.nio.file.Paths.get(System.getProperty(\"user.dir\"), \"data\");","lastModifiedDate":"2024-01-30"},{"lineNumber":156,"author":{"gitId":"fy17ohhh"},"content":" File jadeDir \u003d new File(dataDir.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":157,"author":{"gitId":"fy17ohhh"},"content":" if (!jadeDir.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":158,"author":{"gitId":"fy17ohhh"},"content":" jadeDir.mkdir();","lastModifiedDate":"2024-01-30"},{"lineNumber":159,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":160,"author":{"gitId":"fy17ohhh"},"content":" Path dataFilePath \u003d java.nio.file.Paths.get(System.getProperty(\"user.dir\"), \"data\", \"jadeList.txt\");","lastModifiedDate":"2024-01-30"},{"lineNumber":161,"author":{"gitId":"fy17ohhh"},"content":" File jadeList \u003d new File(dataFilePath.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":162,"author":{"gitId":"fy17ohhh"},"content":" if (!jadeList.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":163,"author":{"gitId":"fy17ohhh"},"content":" jadeList.createNewFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":164,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":165,"author":{"gitId":"fy17ohhh"},"content":" FileWriter jadeListWriter \u003d new FileWriter(jadeList);","lastModifiedDate":"2024-01-30"},{"lineNumber":166,"author":{"gitId":"fy17ohhh"},"content":" jadeListWriter.write(listFormatter());","lastModifiedDate":"2024-01-30"},{"lineNumber":167,"author":{"gitId":"fy17ohhh"},"content":" jadeListWriter.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":168,"author":{"gitId":"fy17ohhh"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":169,"author":{"gitId":"fy17ohhh"},"content":" System.out.println(\"Something went wrong: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":170,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":171,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":172,"author":{"gitId":"fy17ohhh"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"fy17ohhh":172}},{"path":"src/main/java/jade/JadeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"fy17ohhh"},"content":"package jade;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"fy17ohhh"},"content":"public class JadeException extends Exception{","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"fy17ohhh"},"content":" public JadeException(String message) {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"fy17ohhh"},"content":" super(message);","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"fy17ohhh"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"fy17ohhh":7}},{"path":"src/main/java/jade/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"fy17ohhh"},"content":"package jade;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"fy17ohhh"},"content":"public class Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"fy17ohhh"},"content":" protected String description;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"fy17ohhh"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"fy17ohhh"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"fy17ohhh"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"fy17ohhh"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"fy17ohhh"},"content":" protected String getStatusIcon() {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"fy17ohhh"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"fy17ohhh"},"content":" protected String statusFormatter() { return (isDone ? \"1\" : \"0\"); }","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"fy17ohhh"},"content":" protected void mark() {","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"fy17ohhh"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"fy17ohhh"},"content":" protected void unMark() {","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"fy17ohhh"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"fy17ohhh"},"content":" protected String taskFormatter() {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"fy17ohhh"},"content":" return String.format(\"T | %s | %s\\n\", statusFormatter(), description);","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"fy17ohhh"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"fy17ohhh"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"fy17ohhh"},"content":" return String.format(\"[%s] %s\",this.getStatusIcon(), this.description);","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"fy17ohhh"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"fy17ohhh":34}},{"path":"src/main/java/jade/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"fy17ohhh"},"content":"package jade;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"fy17ohhh"},"content":"public class Todo extends Task{","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"fy17ohhh"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"fy17ohhh"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"fy17ohhh"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"fy17ohhh"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"fy17ohhh"},"content":" return String.format(\"[T]%s\", super.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"fy17ohhh"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"fy17ohhh":12}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"fy17ohhh"},"content":"todo read a book","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"fy17ohhh"},"content":"deadline complete assignment 2 /by tomorrow","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"fy17ohhh"},"content":"event visit family /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"fy17ohhh"},"content":"todo write homework 2","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"fy17ohhh"},"content":"mark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"fy17ohhh"},"content":"mark 3","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"fy17ohhh"},"content":"unmark 3","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"fy17ohhh"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"fy17ohhh"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"fy17ohhh":9}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"fy17ohhh"},"content":"javac -cp ..\\src\\main\\java\\jade -Xlint:none -d ..\\bin ..\\src\\main\\java\\jade\\*.java","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"fy17ohhh"},"content":"java -classpath ..\\bin jade.Jade \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"fy17ohhh":2,"-":19}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"fy17ohhh"},"content":"if ! javac -cp ../src/main/java/jade -Xlint:none -d ../bin ../src/main/java/jade/*.java","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"fy17ohhh"},"content":"java -classpath ../bin jade.Jade \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"fy17ohhh":2,"-":36}}] diff --git a/fy17ohhh_ip_master/commits.json b/fy17ohhh_ip_master/commits.json index 2f555962..c7c86264 100644 --- a/fy17ohhh_ip_master/commits.json +++ b/fy17ohhh_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"fy17ohhh":[{"date":"2024-01-23","commitResults":[{"hash":"35373e385dfb39a454dd7fdbf38c3487197760c5","isMergeCommit":false,"messageTitle":"Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":3}}},{"hash":"11c0b4a3d515dfe7a87d22e74aa1fcb45a26f17d","isMergeCommit":false,"messageTitle":"Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":7}}}]},{"date":"2024-01-24","commitResults":[{"hash":"94fa549f34239e99fd256efc80baa3c68dfea759","isMergeCommit":false,"messageTitle":"Add,List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":6}}},{"hash":"2dec2a08b3ff1814befdf4e9159b8e5ca4a09b1f","isMergeCommit":false,"messageTitle":"Use a class to represent tasks","messageBody":"","tags":["A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":46}}},{"hash":"e2b59ce6f09488a9e96ec0ddddc0882590a97262","isMergeCommit":false,"messageTitle":"Add the ability to mark tasks as done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":0}}},{"hash":"0ffd67bc2e236231d9d8f2efe31dbcfa45b9ca91","isMergeCommit":false,"messageTitle":"Use Inheritance to support multiple task types","messageBody":"","tags":["A-Inheritance"],"fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":0}}},{"hash":"78be716e221792128cad184258c6c50dd7b59f49","isMergeCommit":false,"messageTitle":"Add support for tracking three types of tasks","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":4}}},{"hash":"40f69e9b79547b371f8a918a35c83fb4b64adc44","isMergeCommit":false,"messageTitle":"Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"sh":{"insertions":2,"deletions":2}}}]},{"date":"2024-01-25","commitResults":[{"hash":"78086ceeb808c40af0d87be902bb9bf39217f2db","isMergeCommit":false,"messageTitle":"update Class Name and Test Files","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":7},"bat":{"insertions":2,"deletions":2},"sh":{"insertions":1,"deletions":1}}},{"hash":"732f6a3f0cd7925a1f201cb0a9c5cb826166fb41","isMergeCommit":false,"messageTitle":"Added custom exception class","messageBody":"","tags":["A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":0}}},{"hash":"ee4b6cd7464759f563fa4d987315949c5a2d3f79","isMergeCommit":false,"messageTitle":"Refactored code and add new feature to handle incorrect inputs","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":105,"deletions":63}}},{"hash":"5efa42385899102a5dd8dfaf378503ecd32dcda1","isMergeCommit":false,"messageTitle":"Add support for deleting tasks","messageBody":"","tags":["Level-6","A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":2}}},{"hash":"1330325fded3171d811f933cc22bf3bf9244da01","isMergeCommit":false,"messageTitle":"Use Enums for Commands","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":9}}}]}]},"authorFileTypeContributionMap":{"fy17ohhh":{"java":224,"md":0,"fxml":0,"sh":2,"bat":2,"gradle":0,"txt":9}},"authorContributionVariance":{"fy17ohhh":11160.775},"authorDisplayNameMap":{"fy17ohhh":"SHAN..YANG"}} +{"authorDailyContributionsMap":{"fy17ohhh":[{"date":"2024-01-23","commitResults":[{"hash":"35373e385dfb39a454dd7fdbf38c3487197760c5","isMergeCommit":false,"messageTitle":"Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":3}}},{"hash":"11c0b4a3d515dfe7a87d22e74aa1fcb45a26f17d","isMergeCommit":false,"messageTitle":"Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":7}}}]},{"date":"2024-01-24","commitResults":[{"hash":"94fa549f34239e99fd256efc80baa3c68dfea759","isMergeCommit":false,"messageTitle":"Add,List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":6}}},{"hash":"2dec2a08b3ff1814befdf4e9159b8e5ca4a09b1f","isMergeCommit":false,"messageTitle":"Use a class to represent tasks","messageBody":"","tags":["A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":46}}},{"hash":"e2b59ce6f09488a9e96ec0ddddc0882590a97262","isMergeCommit":false,"messageTitle":"Add the ability to mark tasks as done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":0}}},{"hash":"0ffd67bc2e236231d9d8f2efe31dbcfa45b9ca91","isMergeCommit":false,"messageTitle":"Use Inheritance to support multiple task types","messageBody":"","tags":["A-Inheritance"],"fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":0}}},{"hash":"78be716e221792128cad184258c6c50dd7b59f49","isMergeCommit":false,"messageTitle":"Add support for tracking three types of tasks","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":4}}},{"hash":"40f69e9b79547b371f8a918a35c83fb4b64adc44","isMergeCommit":false,"messageTitle":"Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"sh":{"insertions":2,"deletions":2}}}]},{"date":"2024-01-25","commitResults":[{"hash":"78086ceeb808c40af0d87be902bb9bf39217f2db","isMergeCommit":false,"messageTitle":"update Class Name and Test Files","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":7},"bat":{"insertions":2,"deletions":2},"sh":{"insertions":1,"deletions":1}}},{"hash":"732f6a3f0cd7925a1f201cb0a9c5cb826166fb41","isMergeCommit":false,"messageTitle":"Added custom exception class","messageBody":"","tags":["A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":0}}},{"hash":"ee4b6cd7464759f563fa4d987315949c5a2d3f79","isMergeCommit":false,"messageTitle":"Refactored code and add new feature to handle incorrect inputs","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":105,"deletions":63}}},{"hash":"5efa42385899102a5dd8dfaf378503ecd32dcda1","isMergeCommit":false,"messageTitle":"Add support for deleting tasks","messageBody":"","tags":["Level-6","A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":2}}},{"hash":"1330325fded3171d811f933cc22bf3bf9244da01","isMergeCommit":false,"messageTitle":"Use Enums for Commands","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":9}}}]},{"date":"2024-01-30","commitResults":[{"hash":"35d77ccf0138c0cbaf107c0e7ac534b983310484","isMergeCommit":false,"messageTitle":"Add feature to save change in harddisk","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":64,"deletions":9}}},{"hash":"a97ad9586b03528e85166ef3b3e23a44ca35b37c","isMergeCommit":true,"messageTitle":"Merge Level-7 to master","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"fy17ohhh":{"java":279,"md":0,"fxml":0,"sh":2,"bat":2,"gradle":0,"txt":9}},"authorContributionVariance":{"fy17ohhh":7760.8335},"authorDisplayNameMap":{"fy17ohhh":"SHAN..YANG"}} diff --git a/garywongkai_ip_master/authorship.json b/garywongkai_ip_master/authorship.json index 78543cdc..26a3c2f2 100644 --- a/garywongkai_ip_master/authorship.json +++ b/garywongkai_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/data/Gluti.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"garywongkai"},"content":"[T][ ] meet","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"garywongkai"},"content":"[D][ ] meeting (by: Friday)","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"garywongkai"},"content":"[E][ ] meets party (from: Monday to: 7pm)","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"garywongkai":3}},{"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.utils.Task;","lastModifiedDate":"2024-01-21"},{"lineNumber":5,"author":{"gitId":"garywongkai"},"content":"import Gluti.utils.Todo;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"garywongkai"},"content":"import Gluti.utils.Deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"garywongkai"},"content":"import Gluti.utils.Event;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"garywongkai"},"content":"import Gluti.utils.GlutiException;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"garywongkai"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"garywongkai"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"garywongkai"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":14,"author":{"gitId":"garywongkai"},"content":"public class Gluti {","lastModifiedDate":"2024-01-21"},{"lineNumber":15,"author":{"gitId":"garywongkai"},"content":" public static void main(String[] args) throws GlutiException, IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"garywongkai"},"content":" FileStorage fStorage \u003d new FileStorage();","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"garywongkai"},"content":" ArrayList\u003cTask\u003e storage \u003d fStorage.readList();","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"garywongkai"},"content":" Scanner sc \u003d new Scanner(System.in); // Create a Scanner object","lastModifiedDate":"2024-01-21"},{"lineNumber":19,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":20,"author":{"gitId":"garywongkai"},"content":" String logo \u003d \" Hello! I\u0027m Gluti\\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"garywongkai"},"content":" \" What can I do for you?\";","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"garywongkai"},"content":" String end \u003d \" Bye. Hope to see you again soon!\";","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"garywongkai"},"content":" System.out.println(logo);","lastModifiedDate":"2024-01-21"},{"lineNumber":24,"author":{"gitId":"garywongkai"},"content":" //ArrayList\u003cTask\u003e storage \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"garywongkai"},"content":" String word \u003d \"\";","lastModifiedDate":"2024-01-21"},{"lineNumber":26,"author":{"gitId":"garywongkai"},"content":" String function \u003d word.split(\" \")[0].toLowerCase();","lastModifiedDate":"2024-01-21"},{"lineNumber":27,"author":{"gitId":"garywongkai"},"content":" while(!function.equals(\"bye\")) {","lastModifiedDate":"2024-01-21"},{"lineNumber":28,"author":{"gitId":"garywongkai"},"content":" word \u003d sc.nextLine();","lastModifiedDate":"2024-01-21"},{"lineNumber":29,"author":{"gitId":"garywongkai"},"content":" String[] input \u003d word.split(\" \");","lastModifiedDate":"2024-01-21"},{"lineNumber":30,"author":{"gitId":"garywongkai"},"content":" function \u003d input[0].toLowerCase();","lastModifiedDate":"2024-01-21"},{"lineNumber":31,"author":{"gitId":"garywongkai"},"content":" switch (function) {","lastModifiedDate":"2024-01-21"},{"lineNumber":32,"author":{"gitId":"garywongkai"},"content":" case \"bye\":","lastModifiedDate":"2024-01-21"},{"lineNumber":33,"author":{"gitId":"garywongkai"},"content":" break;","lastModifiedDate":"2024-01-21"},{"lineNumber":34,"author":{"gitId":"garywongkai"},"content":" case \"list\":","lastModifiedDate":"2024-01-21"},{"lineNumber":35,"author":{"gitId":"garywongkai"},"content":" int num \u003d 1;","lastModifiedDate":"2024-01-21"},{"lineNumber":36,"author":{"gitId":"garywongkai"},"content":" if (!storage.isEmpty()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"garywongkai"},"content":" for (Task x : storage) {","lastModifiedDate":"2024-01-21"},{"lineNumber":38,"author":{"gitId":"garywongkai"},"content":" System.out.println(num++ + \".\" + x.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":40,"author":{"gitId":"garywongkai"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"garywongkai"},"content":" System.out.println(\"List is Empty!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"garywongkai"},"content":" break;","lastModifiedDate":"2024-01-21"},{"lineNumber":44,"author":{"gitId":"garywongkai"},"content":" case \"mark\":","lastModifiedDate":"2024-01-21"},{"lineNumber":45,"author":{"gitId":"garywongkai"},"content":" int index \u003d Integer.parseInt(input[1]);","lastModifiedDate":"2024-01-21"},{"lineNumber":46,"author":{"gitId":"garywongkai"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"garywongkai"},"content":" storage.get(index - 1).setDone();","lastModifiedDate":"2024-01-21"},{"lineNumber":48,"author":{"gitId":"garywongkai"},"content":" Task task \u003d storage.get(index - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"garywongkai"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"garywongkai"},"content":" task.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"garywongkai"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"garywongkai"},"content":" throw new GlutiException(\"Make sure that you have selected the correct task!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"garywongkai"},"content":" //storage.get(index - 1).setDone();","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"garywongkai"},"content":" //Task task \u003d storage.get(index - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"garywongkai"},"content":" //System.out.println(\"Nice! I\u0027ve marked this task as done:\\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"garywongkai"},"content":" // task.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"garywongkai"},"content":" break;","lastModifiedDate":"2024-01-21"},{"lineNumber":59,"author":{"gitId":"garywongkai"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-21"},{"lineNumber":60,"author":{"gitId":"garywongkai"},"content":" index \u003d Integer.parseInt(input[1]);","lastModifiedDate":"2024-01-21"},{"lineNumber":61,"author":{"gitId":"garywongkai"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"garywongkai"},"content":" storage.get(index - 1).setunDone();","lastModifiedDate":"2024-01-21"},{"lineNumber":63,"author":{"gitId":"garywongkai"},"content":" Task task \u003d storage.get(index - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"garywongkai"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"garywongkai"},"content":" task.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"garywongkai"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"garywongkai"},"content":" throw new GlutiException(\"Make sure that you have selected the correct task!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"garywongkai"},"content":"// storage.get(index - 1).setunDone();","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"garywongkai"},"content":"// task \u003d storage.get(index - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"garywongkai"},"content":"// System.out.println(\"OK, I\u0027ve marked this task as not done yet:\\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"garywongkai"},"content":"// task.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"garywongkai"},"content":" break;","lastModifiedDate":"2024-01-21"},{"lineNumber":74,"author":{"gitId":"garywongkai"},"content":" case \"todo\":","lastModifiedDate":"2024-01-21"},{"lineNumber":75,"author":{"gitId":"garywongkai"},"content":" String[] tempinput \u003d word.split(\" \", 2);","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"garywongkai"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"garywongkai"},"content":" assert tempinput.length \u003e 2;","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"garywongkai"},"content":" Todo toDo \u003d new Todo(tempinput[1]);","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"garywongkai"},"content":" storage.add(toDo);","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"garywongkai"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"garywongkai"},"content":" toDo);","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"garywongkai"},"content":" System.out.println(\"Now you have \" + storage.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"garywongkai"},"content":" } catch (ArrayIndexOutOfBoundsException e){","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"garywongkai"},"content":" throw new GlutiException(\"Todo must have a description!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"garywongkai"},"content":" break;","lastModifiedDate":"2024-01-21"},{"lineNumber":87,"author":{"gitId":"garywongkai"},"content":" case \"event\":","lastModifiedDate":"2024-01-21"},{"lineNumber":88,"author":{"gitId":"garywongkai"},"content":" String[] tempinpute \u003d word.split(\" \", 2);","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"garywongkai"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"garywongkai"},"content":" assert tempinpute.length \u003d\u003d 2 ;","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"garywongkai"},"content":" assert tempinpute[0].length() \u003e 1 ;","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"garywongkai"},"content":" String description \u003d tempinpute[1].split(\"/from\",2)[0];","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"garywongkai"},"content":" String[] period \u003d tempinpute[1].split(\"/from\",2)[1].split(\"/to\",2);","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"garywongkai"},"content":" Event event \u003d new Event(description, period);","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"garywongkai"},"content":" storage.add(event);","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"garywongkai"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"garywongkai"},"content":" event);","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"garywongkai"},"content":" System.out.println(\"Now you have \" + storage.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"garywongkai"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"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-29"},{"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":" break;","lastModifiedDate":"2024-01-21"},{"lineNumber":104,"author":{"gitId":"garywongkai"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-21"},{"lineNumber":105,"author":{"gitId":"garywongkai"},"content":" String[] tempinputd \u003d word.split(\" \", 2);//[1].split(\" /by \", 2);","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"garywongkai"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"garywongkai"},"content":" assert tempinputd.length \u003d\u003d 2;","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"garywongkai"},"content":" assert tempinputd[0].length() \u003e 3;","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"garywongkai"},"content":" String description \u003d tempinputd[1].split(\"/by\", 2)[0];","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"garywongkai"},"content":" String time \u003d tempinputd[1].split(\"/by\", 2)[1];","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"garywongkai"},"content":" Deadline deadline \u003d new Deadline(description, time);","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"garywongkai"},"content":" storage.add(deadline);","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"garywongkai"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"garywongkai"},"content":" deadline);","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"garywongkai"},"content":" System.out.println(\"Now you have \" + storage.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":116,"author":{"gitId":"garywongkai"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":117,"author":{"gitId":"garywongkai"},"content":" throw new GlutiException(\"Deadline must be in this format \u003cdescription\u003e /by \u003cdate+time\u003e\");","lastModifiedDate":"2024-01-29"},{"lineNumber":118,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":119,"author":{"gitId":"garywongkai"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":120,"author":{"gitId":"garywongkai"},"content":" case \"delete\":","lastModifiedDate":"2024-01-29"},{"lineNumber":121,"author":{"gitId":"garywongkai"},"content":" index \u003d Integer.parseInt(input[1]);","lastModifiedDate":"2024-01-29"},{"lineNumber":122,"author":{"gitId":"garywongkai"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":123,"author":{"gitId":"garywongkai"},"content":" Task task \u003d storage.get(index - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":124,"author":{"gitId":"garywongkai"},"content":" storage.remove(index - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":125,"author":{"gitId":"garywongkai"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":126,"author":{"gitId":"garywongkai"},"content":" task.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":127,"author":{"gitId":"garywongkai"},"content":" System.out.println(\"Now you have \" + storage.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":128,"author":{"gitId":"garywongkai"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":129,"author":{"gitId":"garywongkai"},"content":" throw new GlutiException(\"Make sure that you have selected the correct task!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":130,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":131,"author":{"gitId":"garywongkai"},"content":" break;","lastModifiedDate":"2024-01-21"},{"lineNumber":132,"author":{"gitId":"garywongkai"},"content":" default:","lastModifiedDate":"2024-01-21"},{"lineNumber":133,"author":{"gitId":"garywongkai"},"content":"// storage.add(new Task(word));","lastModifiedDate":"2024-01-29"},{"lineNumber":134,"author":{"gitId":"garywongkai"},"content":"// System.out.println(\"added: \" + word + \"\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":135,"author":{"gitId":"garywongkai"},"content":" break;","lastModifiedDate":"2024-01-21"},{"lineNumber":136,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":137,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":138,"author":{"gitId":"garywongkai"},"content":" fStorage.saveList(storage);","lastModifiedDate":"2024-01-29"},{"lineNumber":139,"author":{"gitId":"garywongkai"},"content":" System.out.println(end);","lastModifiedDate":"2024-01-21"},{"lineNumber":140,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":141,"author":{"gitId":"garywongkai"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"garywongkai":141}},{"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":"public class FileStorage {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"garywongkai"},"content":" protected static final File DATA_FOLDER \u003d new File(\"./src/main/data\");","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"garywongkai"},"content":" protected static final File DATA_FILE \u003d new File(\"./src/main/data/Gluti.txt\");","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"garywongkai"},"content":" protected ArrayList\u003cTask\u003e tasklist \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"garywongkai"},"content":" public FileStorage() throws IOException, GlutiException {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"garywongkai"},"content":" checkifexist();","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"garywongkai"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"garywongkai"},"content":" BufferedReader reader \u003d new BufferedReader(new FileReader(DATA_FILE));","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"garywongkai"},"content":" String line \u003d reader.readLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"garywongkai"},"content":" while (line !\u003d null) {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"garywongkai"},"content":" tasklist.add(read(line));","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"garywongkai"},"content":" line \u003d reader.readLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"garywongkai"},"content":" reader.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"garywongkai"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"garywongkai"},"content":" e.printStackTrace();","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"garywongkai"},"content":" public Task read(String line) {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"garywongkai"},"content":" char tasktype \u003d line.charAt(1);","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"garywongkai"},"content":" char completion \u003d line.charAt(4);","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"garywongkai"},"content":" Task nextTask \u003d null;","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"garywongkai"},"content":" String description;","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"garywongkai"},"content":" int seperator;","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"garywongkai"},"content":" switch (tasktype) {","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"garywongkai"},"content":" case \u0027T\u0027:","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"garywongkai"},"content":" description \u003d line.substring(7);","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"garywongkai"},"content":" nextTask \u003d new Todo(description);","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"garywongkai"},"content":" if (completion \u003d\u003d \u0027X\u0027) {","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"garywongkai"},"content":" nextTask.setDone();","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"garywongkai"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"garywongkai"},"content":" case \u0027D\u0027:","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"garywongkai"},"content":" seperator \u003d line.indexOf(\" (by: \");","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"garywongkai"},"content":" description \u003d line.substring(7, seperator);","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"garywongkai"},"content":" String by \u003d line.substring(seperator + 6, line.length() - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"garywongkai"},"content":" nextTask \u003d new Deadline(description, by);","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"garywongkai"},"content":" if (completion \u003d\u003d \u0027X\u0027) {","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"garywongkai"},"content":" nextTask.setDone();","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"garywongkai"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"garywongkai"},"content":" case \u0027E\u0027:","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"garywongkai"},"content":" seperator \u003d line.indexOf(\"(from: \");","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"garywongkai"},"content":" description \u003d line.substring(7, seperator);","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"garywongkai"},"content":" String[] date \u003d line.substring(seperator + 6, line.length() - 1).split(\"to:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"garywongkai"},"content":" nextTask \u003d new Event(description, date[0],date[1]);","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"garywongkai"},"content":" if (completion \u003d\u003d \u0027X\u0027) {","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"garywongkai"},"content":" nextTask.setDone();","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"garywongkai"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"garywongkai"},"content":" default:","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"garywongkai"},"content":" nextTask \u003d null;","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"garywongkai"},"content":" return nextTask;","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"garywongkai"},"content":" private void checkifexist() throws GlutiException {","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"garywongkai"},"content":" if (!DATA_FILE.exists()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"garywongkai"},"content":" if (!DATA_FOLDER.exists()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"garywongkai"},"content":" DATA_FOLDER.mkdirs();","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"garywongkai"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"garywongkai"},"content":" DATA_FILE.createNewFile();","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"garywongkai"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"garywongkai"},"content":" throw new GlutiException(\"Gluti detects IO Error!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"garywongkai"},"content":" public void saveList(ArrayList\u003cTask\u003e newTasks) throws GlutiException {","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"garywongkai"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"garywongkai"},"content":" FileWriter fileWriter \u003d new FileWriter(DATA_FILE);","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"garywongkai"},"content":" StringBuilder tasks \u003d new StringBuilder();","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"garywongkai"},"content":" for (Task newTask : newTasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"garywongkai"},"content":" tasks.append(newTask).append(System.lineSeparator());","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"garywongkai"},"content":" fileWriter.write(tasks.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"garywongkai"},"content":" fileWriter.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"garywongkai"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"garywongkai"},"content":" throw new GlutiException(\"Gluti detects IO Error!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"garywongkai"},"content":" public ArrayList\u003cTask\u003e readList() {","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"garywongkai"},"content":" return tasklist;","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"garywongkai"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"garywongkai":100}},{"path":"src/main/java/Gluti/helpers/InputHelper.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"garywongkai"},"content":"package Gluti.helpers;","lastModifiedDate":"2024-01-21"},{"lineNumber":2,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":3,"author":{"gitId":"garywongkai"},"content":"import Gluti.utils.Task;","lastModifiedDate":"2024-01-21"},{"lineNumber":4,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":5,"author":{"gitId":"garywongkai"},"content":"public class InputHelper {","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"garywongkai"},"content":" /*public String getinput(String command) {","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"garywongkai"},"content":" String function \u003d command.split(\" \")[0].toLowerCase();","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"garywongkai"},"content":" if (function.equals(\"list\")) {","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"garywongkai"},"content":" int num \u003d 1;","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"garywongkai"},"content":" for (Task x : storage) {","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"garywongkai"},"content":" System.out.println(String.valueOf(num++)+ \".\" +x.toString());","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"garywongkai"},"content":" } else if (function.equals(\"bye\")) {","lastModifiedDate":"2024-01-21"},{"lineNumber":14,"author":{"gitId":"garywongkai"},"content":" return \"____________________________________________________________\\n\" +","lastModifiedDate":"2024-01-21"},{"lineNumber":15,"author":{"gitId":"garywongkai"},"content":" \" Bye. Hope to see you again soon!\\n\" +","lastModifiedDate":"2024-01-21"},{"lineNumber":16,"author":{"gitId":"garywongkai"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-21"},{"lineNumber":17,"author":{"gitId":"garywongkai"},"content":" } else if (function.equals(\"deadEADLINE.getKeyword())) {","lastModifiedDate":"2024-01-21"},{"lineNumber":18,"author":{"gitId":"garywongkai"},"content":" return new DeadlineCommand(message);","lastModifiedDate":"2024-01-21"},{"lineNumber":19,"author":{"gitId":"garywongkai"},"content":" } else if (function.equals(Keyword.EVENTS.getKeyword())) {","lastModifiedDate":"2024-01-21"},{"lineNumber":20,"author":{"gitId":"garywongkai"},"content":" return new EventCommand(message);","lastModifiedDate":"2024-01-21"},{"lineNumber":21,"author":{"gitId":"garywongkai"},"content":" } else if (function.equals(Keyword.TODOS.getKeyword())) {","lastModifiedDate":"2024-01-21"},{"lineNumber":22,"author":{"gitId":"garywongkai"},"content":" return new TodoCommand(message);","lastModifiedDate":"2024-01-21"},{"lineNumber":23,"author":{"gitId":"garywongkai"},"content":" } else if (function.equals(Keyword.FIND.getKeyword())) {","lastModifiedDate":"2024-01-21"},{"lineNumber":24,"author":{"gitId":"garywongkai"},"content":" return new FindCommand(message);","lastModifiedDate":"2024-01-21"},{"lineNumber":25,"author":{"gitId":"garywongkai"},"content":" } else if (function.equals(Keyword.DELETE.getKeyword())) {","lastModifiedDate":"2024-01-21"},{"lineNumber":26,"author":{"gitId":"garywongkai"},"content":" return new DeleteCommand(message);","lastModifiedDate":"2024-01-21"},{"lineNumber":27,"author":{"gitId":"garywongkai"},"content":" } else if (function.equals(Keyword.HELP.getKeyword())) {","lastModifiedDate":"2024-01-21"},{"lineNumber":28,"author":{"gitId":"garywongkai"},"content":" return new HelpCommand();","lastModifiedDate":"2024-01-21"},{"lineNumber":29,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":30,"author":{"gitId":"garywongkai"},"content":" }*/","lastModifiedDate":"2024-01-21"},{"lineNumber":31,"author":{"gitId":"garywongkai"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"garywongkai":31}},{"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":"public class Deadline extends Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":4,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":5,"author":{"gitId":"garywongkai"},"content":" protected String by;","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"garywongkai"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"garywongkai"},"content":" super(description);","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"garywongkai"},"content":" this.by \u003d by;","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":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"garywongkai"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":14,"author":{"gitId":"garywongkai"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by +\")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":16,"author":{"gitId":"garywongkai"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"garywongkai":16}},{"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":"public class Event extends Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":4,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":5,"author":{"gitId":"garywongkai"},"content":" protected String[] date;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"garywongkai"},"content":" public Event(String description, String[] date) {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"garywongkai"},"content":" super(description);","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"garywongkai"},"content":" this.date \u003d date;","lastModifiedDate":"2024-01-29"},{"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 Event(String description, String date1, String date2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"garywongkai"},"content":" super(description);","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"garywongkai"},"content":" this.date \u003d new String[] {date1,date2};","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"garywongkai"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":18,"author":{"gitId":"garywongkai"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":19,"author":{"gitId":"garywongkai"},"content":" return \"[E]\" + super.toString() + \"(from:\" + date[0] + \"to:\"+ date[1] + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":21,"author":{"gitId":"garywongkai"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"garywongkai":21}},{"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 boolean getDoneness() {","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"garywongkai"},"content":" return isDone;","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":" public String getStatusIcon() {","lastModifiedDate":"2024-01-21"},{"lineNumber":17,"author":{"gitId":"garywongkai"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-21"},{"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":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":21,"author":{"gitId":"garywongkai"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":22,"author":{"gitId":"garywongkai"},"content":" return \"[\" + getStatusIcon() + \"] \" + description;","lastModifiedDate":"2024-01-21"},{"lineNumber":23,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":24,"author":{"gitId":"garywongkai"},"content":" public void setDone() {","lastModifiedDate":"2024-01-21"},{"lineNumber":25,"author":{"gitId":"garywongkai"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-21"},{"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":" public void setunDone() { isDone \u003d false; }","lastModifiedDate":"2024-01-21"},{"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":"public class Todo extends Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":4,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":5,"author":{"gitId":"garywongkai"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"garywongkai"},"content":" super(description);","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"garywongkai"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"garywongkai"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"garywongkai"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"garywongkai"},"content":"}","lastModifiedDate":"2024-01-21"}],"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":"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.utils.Task;","lastModifiedDate":"2024-01-21"},{"lineNumber":5,"author":{"gitId":"garywongkai"},"content":"import Gluti.utils.Todo;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"garywongkai"},"content":"import Gluti.utils.Deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"garywongkai"},"content":"import Gluti.utils.Event;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"garywongkai"},"content":"import Gluti.utils.GlutiException;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"garywongkai"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"garywongkai"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"garywongkai"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":14,"author":{"gitId":"garywongkai"},"content":"public class Gluti {","lastModifiedDate":"2024-01-21"},{"lineNumber":15,"author":{"gitId":"garywongkai"},"content":" public static void main(String[] args) throws GlutiException, IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"garywongkai"},"content":" FileStorage fStorage \u003d new FileStorage();","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"garywongkai"},"content":" ArrayList\u003cTask\u003e storage \u003d fStorage.readList();","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"garywongkai"},"content":" Scanner sc \u003d new Scanner(System.in); // Create a Scanner object","lastModifiedDate":"2024-01-21"},{"lineNumber":19,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":20,"author":{"gitId":"garywongkai"},"content":" String logo \u003d \" Hello! I\u0027m Gluti\\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"garywongkai"},"content":" \" What can I do for you?\";","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"garywongkai"},"content":" String end \u003d \" Bye. Hope to see you again soon!\";","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"garywongkai"},"content":" System.out.println(logo);","lastModifiedDate":"2024-01-21"},{"lineNumber":24,"author":{"gitId":"garywongkai"},"content":" //ArrayList\u003cTask\u003e storage \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"garywongkai"},"content":" String word \u003d \"\";","lastModifiedDate":"2024-01-21"},{"lineNumber":26,"author":{"gitId":"garywongkai"},"content":" String function \u003d word.split(\" \")[0].toLowerCase();","lastModifiedDate":"2024-01-21"},{"lineNumber":27,"author":{"gitId":"garywongkai"},"content":" while(!function.equals(\"bye\")) {","lastModifiedDate":"2024-01-21"},{"lineNumber":28,"author":{"gitId":"garywongkai"},"content":" word \u003d sc.nextLine();","lastModifiedDate":"2024-01-21"},{"lineNumber":29,"author":{"gitId":"garywongkai"},"content":" String[] input \u003d word.split(\" \");","lastModifiedDate":"2024-01-21"},{"lineNumber":30,"author":{"gitId":"garywongkai"},"content":" function \u003d input[0].toLowerCase();","lastModifiedDate":"2024-01-21"},{"lineNumber":31,"author":{"gitId":"garywongkai"},"content":" switch (function) {","lastModifiedDate":"2024-01-21"},{"lineNumber":32,"author":{"gitId":"garywongkai"},"content":" case \"bye\":","lastModifiedDate":"2024-01-21"},{"lineNumber":33,"author":{"gitId":"garywongkai"},"content":" break;","lastModifiedDate":"2024-01-21"},{"lineNumber":34,"author":{"gitId":"garywongkai"},"content":" case \"list\":","lastModifiedDate":"2024-01-21"},{"lineNumber":35,"author":{"gitId":"garywongkai"},"content":" int num \u003d 1;","lastModifiedDate":"2024-01-21"},{"lineNumber":36,"author":{"gitId":"garywongkai"},"content":" if (!storage.isEmpty()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"garywongkai"},"content":" for (Task x : storage) {","lastModifiedDate":"2024-01-21"},{"lineNumber":38,"author":{"gitId":"garywongkai"},"content":" System.out.println(num++ + \".\" + x.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":40,"author":{"gitId":"garywongkai"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"garywongkai"},"content":" System.out.println(\"List is Empty!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"garywongkai"},"content":" break;","lastModifiedDate":"2024-01-21"},{"lineNumber":44,"author":{"gitId":"garywongkai"},"content":" case \"mark\":","lastModifiedDate":"2024-01-21"},{"lineNumber":45,"author":{"gitId":"garywongkai"},"content":" int index \u003d Integer.parseInt(input[1]);","lastModifiedDate":"2024-01-21"},{"lineNumber":46,"author":{"gitId":"garywongkai"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"garywongkai"},"content":" storage.get(index - 1).setDone();","lastModifiedDate":"2024-01-21"},{"lineNumber":48,"author":{"gitId":"garywongkai"},"content":" Task task \u003d storage.get(index - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"garywongkai"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"garywongkai"},"content":" task.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"garywongkai"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"garywongkai"},"content":" throw new GlutiException(\"Make sure that you have selected the correct task!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"garywongkai"},"content":" //storage.get(index - 1).setDone();","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"garywongkai"},"content":" //Task task \u003d storage.get(index - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"garywongkai"},"content":" //System.out.println(\"Nice! I\u0027ve marked this task as done:\\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"garywongkai"},"content":" // task.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"garywongkai"},"content":" break;","lastModifiedDate":"2024-01-21"},{"lineNumber":59,"author":{"gitId":"garywongkai"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-21"},{"lineNumber":60,"author":{"gitId":"garywongkai"},"content":" index \u003d Integer.parseInt(input[1]);","lastModifiedDate":"2024-01-21"},{"lineNumber":61,"author":{"gitId":"garywongkai"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"garywongkai"},"content":" storage.get(index - 1).setunDone();","lastModifiedDate":"2024-01-21"},{"lineNumber":63,"author":{"gitId":"garywongkai"},"content":" Task task \u003d storage.get(index - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"garywongkai"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"garywongkai"},"content":" task.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"garywongkai"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"garywongkai"},"content":" throw new GlutiException(\"Make sure that you have selected the correct task!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"garywongkai"},"content":"// storage.get(index - 1).setunDone();","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"garywongkai"},"content":"// task \u003d storage.get(index - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"garywongkai"},"content":"// System.out.println(\"OK, I\u0027ve marked this task as not done yet:\\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"garywongkai"},"content":"// task.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"garywongkai"},"content":" break;","lastModifiedDate":"2024-01-21"},{"lineNumber":74,"author":{"gitId":"garywongkai"},"content":" case \"todo\":","lastModifiedDate":"2024-01-21"},{"lineNumber":75,"author":{"gitId":"garywongkai"},"content":" String[] tempinput \u003d word.split(\" \", 2);","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"garywongkai"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"garywongkai"},"content":" assert tempinput.length \u003e 2;","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"garywongkai"},"content":" Todo toDo \u003d new Todo(tempinput[1]);","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"garywongkai"},"content":" storage.add(toDo);","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"garywongkai"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"garywongkai"},"content":" toDo);","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"garywongkai"},"content":" System.out.println(\"Now you have \" + storage.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"garywongkai"},"content":" } catch (ArrayIndexOutOfBoundsException e){","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"garywongkai"},"content":" throw new GlutiException(\"Todo must have a description!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"garywongkai"},"content":" break;","lastModifiedDate":"2024-01-21"},{"lineNumber":87,"author":{"gitId":"garywongkai"},"content":" case \"event\":","lastModifiedDate":"2024-01-21"},{"lineNumber":88,"author":{"gitId":"garywongkai"},"content":" String[] tempinpute \u003d word.split(\" \", 2);","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"garywongkai"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"garywongkai"},"content":" assert tempinpute.length \u003d\u003d 2 ;","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"garywongkai"},"content":" assert tempinpute[0].length() \u003e 1 ;","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"garywongkai"},"content":" String description \u003d tempinpute[1].split(\"/from\",2)[0];","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"garywongkai"},"content":" String[] period \u003d tempinpute[1].split(\"/from\",2)[1].split(\"/to\",2);","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"garywongkai"},"content":" Event event \u003d new Event(description, period);","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"garywongkai"},"content":" storage.add(event);","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"garywongkai"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"garywongkai"},"content":" event);","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"garywongkai"},"content":" System.out.println(\"Now you have \" + storage.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"garywongkai"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"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-29"},{"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":" break;","lastModifiedDate":"2024-01-21"},{"lineNumber":104,"author":{"gitId":"garywongkai"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-21"},{"lineNumber":105,"author":{"gitId":"garywongkai"},"content":" String[] tempinputd \u003d word.split(\" \", 2);//[1].split(\" /by \", 2);","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"garywongkai"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"garywongkai"},"content":" assert tempinputd.length \u003d\u003d 2;","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"garywongkai"},"content":" assert tempinputd[0].length() \u003e 3;","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"garywongkai"},"content":" String description \u003d tempinputd[1].split(\"/by\", 2)[0];","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"garywongkai"},"content":" String time \u003d tempinputd[1].split(\"/by\", 2)[1];","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"garywongkai"},"content":" Deadline deadline \u003d new Deadline(description, time);","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"garywongkai"},"content":" storage.add(deadline);","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"garywongkai"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"garywongkai"},"content":" deadline);","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"garywongkai"},"content":" System.out.println(\"Now you have \" + storage.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":116,"author":{"gitId":"garywongkai"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":117,"author":{"gitId":"garywongkai"},"content":" throw new GlutiException(\"Deadline must be in this format \u003cdescription\u003e /by \u003cdate+time\u003e\");","lastModifiedDate":"2024-01-29"},{"lineNumber":118,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":119,"author":{"gitId":"garywongkai"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":120,"author":{"gitId":"garywongkai"},"content":" case \"delete\":","lastModifiedDate":"2024-01-29"},{"lineNumber":121,"author":{"gitId":"garywongkai"},"content":" index \u003d Integer.parseInt(input[1]);","lastModifiedDate":"2024-01-29"},{"lineNumber":122,"author":{"gitId":"garywongkai"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":123,"author":{"gitId":"garywongkai"},"content":" Task task \u003d storage.get(index - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":124,"author":{"gitId":"garywongkai"},"content":" storage.remove(index - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":125,"author":{"gitId":"garywongkai"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":126,"author":{"gitId":"garywongkai"},"content":" task.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":127,"author":{"gitId":"garywongkai"},"content":" System.out.println(\"Now you have \" + storage.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":128,"author":{"gitId":"garywongkai"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":129,"author":{"gitId":"garywongkai"},"content":" throw new GlutiException(\"Make sure that you have selected the correct task!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":130,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":131,"author":{"gitId":"garywongkai"},"content":" break;","lastModifiedDate":"2024-01-21"},{"lineNumber":132,"author":{"gitId":"garywongkai"},"content":" default:","lastModifiedDate":"2024-01-21"},{"lineNumber":133,"author":{"gitId":"garywongkai"},"content":"// storage.add(new Task(word));","lastModifiedDate":"2024-01-29"},{"lineNumber":134,"author":{"gitId":"garywongkai"},"content":"// System.out.println(\"added: \" + word + \"\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":135,"author":{"gitId":"garywongkai"},"content":" break;","lastModifiedDate":"2024-01-21"},{"lineNumber":136,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":137,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":138,"author":{"gitId":"garywongkai"},"content":" fStorage.saveList(storage);","lastModifiedDate":"2024-01-29"},{"lineNumber":139,"author":{"gitId":"garywongkai"},"content":" System.out.println(end);","lastModifiedDate":"2024-01-21"},{"lineNumber":140,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":141,"author":{"gitId":"garywongkai"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"garywongkai":141}},{"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":"public class FileStorage {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"garywongkai"},"content":" protected static final File DATA_FOLDER \u003d new File(\"./src/main/data\");","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"garywongkai"},"content":" protected static final File DATA_FILE \u003d new File(\"./src/main/data/Gluti.txt\");","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"garywongkai"},"content":" protected ArrayList\u003cTask\u003e tasklist \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"garywongkai"},"content":" public FileStorage() throws IOException, GlutiException {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"garywongkai"},"content":" checkifexist();","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"garywongkai"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"garywongkai"},"content":" BufferedReader reader \u003d new BufferedReader(new FileReader(DATA_FILE));","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"garywongkai"},"content":" String line \u003d reader.readLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"garywongkai"},"content":" while (line !\u003d null) {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"garywongkai"},"content":" tasklist.add(read(line));","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"garywongkai"},"content":" line \u003d reader.readLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"garywongkai"},"content":" reader.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"garywongkai"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"garywongkai"},"content":" e.printStackTrace();","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"garywongkai"},"content":" public Task read(String line) {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"garywongkai"},"content":" char tasktype \u003d line.charAt(1);","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"garywongkai"},"content":" char completion \u003d line.charAt(4);","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"garywongkai"},"content":" Task nextTask \u003d null;","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"garywongkai"},"content":" String description;","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"garywongkai"},"content":" int seperator;","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"garywongkai"},"content":" switch (tasktype) {","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"garywongkai"},"content":" case \u0027T\u0027:","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"garywongkai"},"content":" description \u003d line.substring(7);","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"garywongkai"},"content":" nextTask \u003d new Todo(description);","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"garywongkai"},"content":" if (completion \u003d\u003d \u0027X\u0027) {","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"garywongkai"},"content":" nextTask.setDone();","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"garywongkai"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"garywongkai"},"content":" case \u0027D\u0027:","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"garywongkai"},"content":" seperator \u003d line.indexOf(\"(by:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"garywongkai"},"content":" description \u003d line.substring(7, seperator);","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"garywongkai"},"content":" String by \u003d line.substring(seperator + 4, line.length() - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"garywongkai"},"content":" nextTask \u003d new Deadline(description, by);","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"garywongkai"},"content":" if (completion \u003d\u003d \u0027X\u0027) {","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"garywongkai"},"content":" nextTask.setDone();","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"garywongkai"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"garywongkai"},"content":" case \u0027E\u0027:","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"garywongkai"},"content":" seperator \u003d line.indexOf(\"(from: \");","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"garywongkai"},"content":" description \u003d line.substring(7, seperator);","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"garywongkai"},"content":" String[] date \u003d line.substring(seperator + 6, line.length() - 1).split(\"to:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"garywongkai"},"content":" nextTask \u003d new Event(description, date[0],date[1]);","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"garywongkai"},"content":" if (completion \u003d\u003d \u0027X\u0027) {","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"garywongkai"},"content":" nextTask.setDone();","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"garywongkai"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"garywongkai"},"content":" default:","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"garywongkai"},"content":" nextTask \u003d null;","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"garywongkai"},"content":" return nextTask;","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"garywongkai"},"content":" private void checkifexist() throws GlutiException {","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"garywongkai"},"content":" if (!DATA_FILE.exists()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"garywongkai"},"content":" if (!DATA_FOLDER.exists()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"garywongkai"},"content":" DATA_FOLDER.mkdirs();","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"garywongkai"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"garywongkai"},"content":" DATA_FILE.createNewFile();","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"garywongkai"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"garywongkai"},"content":" throw new GlutiException(\"Gluti detects IO Error!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"garywongkai"},"content":" public void saveList(ArrayList\u003cTask\u003e newTasks) throws GlutiException {","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"garywongkai"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"garywongkai"},"content":" FileWriter fileWriter \u003d new FileWriter(DATA_FILE);","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"garywongkai"},"content":" StringBuilder tasks \u003d new StringBuilder();","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"garywongkai"},"content":" for (Task newTask : newTasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"garywongkai"},"content":" tasks.append(newTask).append(System.lineSeparator());","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"garywongkai"},"content":" fileWriter.write(tasks.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"garywongkai"},"content":" fileWriter.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"garywongkai"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"garywongkai"},"content":" throw new GlutiException(\"Gluti detects IO Error!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"garywongkai"},"content":" public ArrayList\u003cTask\u003e readList() {","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"garywongkai"},"content":" return tasklist;","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"garywongkai"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"garywongkai":100}},{"path":"src/main/java/Gluti/helpers/InputHelper.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"garywongkai"},"content":"package Gluti.helpers;","lastModifiedDate":"2024-01-21"},{"lineNumber":2,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":3,"author":{"gitId":"garywongkai"},"content":"import Gluti.utils.Task;","lastModifiedDate":"2024-01-21"},{"lineNumber":4,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":5,"author":{"gitId":"garywongkai"},"content":"public class InputHelper {","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"garywongkai"},"content":" /*public String getinput(String command) {","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"garywongkai"},"content":" String function \u003d command.split(\" \")[0].toLowerCase();","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"garywongkai"},"content":" if (function.equals(\"list\")) {","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"garywongkai"},"content":" int num \u003d 1;","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"garywongkai"},"content":" for (Task x : storage) {","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"garywongkai"},"content":" System.out.println(String.valueOf(num++)+ \".\" +x.toString());","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"garywongkai"},"content":" } else if (function.equals(\"bye\")) {","lastModifiedDate":"2024-01-21"},{"lineNumber":14,"author":{"gitId":"garywongkai"},"content":" return \"____________________________________________________________\\n\" +","lastModifiedDate":"2024-01-21"},{"lineNumber":15,"author":{"gitId":"garywongkai"},"content":" \" Bye. Hope to see you again soon!\\n\" +","lastModifiedDate":"2024-01-21"},{"lineNumber":16,"author":{"gitId":"garywongkai"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-21"},{"lineNumber":17,"author":{"gitId":"garywongkai"},"content":" } else if (function.equals(\"deadEADLINE.getKeyword())) {","lastModifiedDate":"2024-01-21"},{"lineNumber":18,"author":{"gitId":"garywongkai"},"content":" return new DeadlineCommand(message);","lastModifiedDate":"2024-01-21"},{"lineNumber":19,"author":{"gitId":"garywongkai"},"content":" } else if (function.equals(Keyword.EVENTS.getKeyword())) {","lastModifiedDate":"2024-01-21"},{"lineNumber":20,"author":{"gitId":"garywongkai"},"content":" return new EventCommand(message);","lastModifiedDate":"2024-01-21"},{"lineNumber":21,"author":{"gitId":"garywongkai"},"content":" } else if (function.equals(Keyword.TODOS.getKeyword())) {","lastModifiedDate":"2024-01-21"},{"lineNumber":22,"author":{"gitId":"garywongkai"},"content":" return new TodoCommand(message);","lastModifiedDate":"2024-01-21"},{"lineNumber":23,"author":{"gitId":"garywongkai"},"content":" } else if (function.equals(Keyword.FIND.getKeyword())) {","lastModifiedDate":"2024-01-21"},{"lineNumber":24,"author":{"gitId":"garywongkai"},"content":" return new FindCommand(message);","lastModifiedDate":"2024-01-21"},{"lineNumber":25,"author":{"gitId":"garywongkai"},"content":" } else if (function.equals(Keyword.DELETE.getKeyword())) {","lastModifiedDate":"2024-01-21"},{"lineNumber":26,"author":{"gitId":"garywongkai"},"content":" return new DeleteCommand(message);","lastModifiedDate":"2024-01-21"},{"lineNumber":27,"author":{"gitId":"garywongkai"},"content":" } else if (function.equals(Keyword.HELP.getKeyword())) {","lastModifiedDate":"2024-01-21"},{"lineNumber":28,"author":{"gitId":"garywongkai"},"content":" return new HelpCommand();","lastModifiedDate":"2024-01-21"},{"lineNumber":29,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":30,"author":{"gitId":"garywongkai"},"content":" }*/","lastModifiedDate":"2024-01-21"},{"lineNumber":31,"author":{"gitId":"garywongkai"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"garywongkai":31}},{"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":"public class Deadline extends Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":4,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":5,"author":{"gitId":"garywongkai"},"content":" protected String by;","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"garywongkai"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"garywongkai"},"content":" super(description);","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"garywongkai"},"content":" this.by \u003d by;","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":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"garywongkai"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":14,"author":{"gitId":"garywongkai"},"content":" return \"[D]\" + super.toString() + \"(by:\" + by +\")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":16,"author":{"gitId":"garywongkai"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"garywongkai":16}},{"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":"public class Event extends Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":4,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":5,"author":{"gitId":"garywongkai"},"content":" protected String[] date;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"garywongkai"},"content":" public Event(String description, String[] date) {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"garywongkai"},"content":" super(description);","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"garywongkai"},"content":" this.date \u003d date;","lastModifiedDate":"2024-01-29"},{"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 Event(String description, String date1, String date2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"garywongkai"},"content":" super(description);","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"garywongkai"},"content":" this.date \u003d new String[] {date1,date2};","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"garywongkai"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":18,"author":{"gitId":"garywongkai"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":19,"author":{"gitId":"garywongkai"},"content":" return \"[E]\" + super.toString() + \"(from:\" + date[0] + \"to:\"+ date[1] + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":21,"author":{"gitId":"garywongkai"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"garywongkai":21}},{"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 boolean getDoneness() {","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"garywongkai"},"content":" return isDone;","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":" public String getStatusIcon() {","lastModifiedDate":"2024-01-21"},{"lineNumber":17,"author":{"gitId":"garywongkai"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-21"},{"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":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":21,"author":{"gitId":"garywongkai"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":22,"author":{"gitId":"garywongkai"},"content":" return \"[\" + getStatusIcon() + \"] \" + description;","lastModifiedDate":"2024-01-21"},{"lineNumber":23,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":24,"author":{"gitId":"garywongkai"},"content":" public void setDone() {","lastModifiedDate":"2024-01-21"},{"lineNumber":25,"author":{"gitId":"garywongkai"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-21"},{"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":" public void setunDone() { isDone \u003d false; }","lastModifiedDate":"2024-01-21"},{"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":"public class Todo extends Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":4,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":5,"author":{"gitId":"garywongkai"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"garywongkai"},"content":" super(description);","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"garywongkai"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"garywongkai"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"garywongkai"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"garywongkai"},"content":"}","lastModifiedDate":"2024-01-21"}],"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 6f9a06ae..6bef9c86 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":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":3}}}]}]},"authorFileTypeContributionMap":{"garywongkai":{"java":358,"md":0,"fxml":0,"sh":2,"bat":2,"gradle":0,"txt":15}},"authorContributionVariance":{"garywongkai":16480.742},"authorDisplayNameMap":{"garywongkai":"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":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":3}}}]},{"date":"2024-01-30","commitResults":[{"hash":"ee6726a12902ca52c8fee4a30687bd0f29afad6d","isMergeCommit":false,"messageTitle":"Checkpoint 3","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":3},"java":{"insertions":3,"deletions":3}}}]}]},"authorFileTypeContributionMap":{"garywongkai":{"java":358,"md":0,"fxml":0,"sh":2,"bat":2,"gradle":0,"txt":12}},"authorContributionVariance":{"garywongkai":15303.917},"authorDisplayNameMap":{"garywongkai":"WONG..I LI"}} diff --git a/gerteck_ip_master/authorship.json b/gerteck_ip_master/authorship.json index f34be77e..e73f4b08 100644 --- a/gerteck_ip_master/authorship.json +++ b/gerteck_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"gerteck"},"content":"//Deadline: tasks that need to be done before a specific date/time","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"gerteck"},"content":"//e.g., submit report /by 11/10/2019 5pm","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"gerteck"},"content":"public class Deadline extends Task{","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"gerteck"},"content":" private String dueDate;","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"gerteck"},"content":" public Deadline (String description, String dueDate) {","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"gerteck"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"gerteck"},"content":" this.dueDate \u003d dueDate;","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"gerteck"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"gerteck"},"content":" public String listTaskString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"gerteck"},"content":" return \"[D]\" + super.listTaskString()","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"gerteck"},"content":" + \" (by: \" + this.dueDate + \")\";","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"gerteck"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"gerteck":18}},{"path":"src/main/java/Ellie.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gerteck"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"gerteck"},"content":"public class Ellie {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"gerteck"},"content":" final static String horizontalLine \u003d \"____________________________________________________________\";","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"gerteck"},"content":" final static String logoEllie \u003d","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"gerteck"},"content":" \" _______ ___ ___ ___ _______ \\n\" +","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"gerteck"},"content":" \"|\\\\ ___ \\\\ |\\\\ \\\\ |\\\\ \\\\ |\\\\ \\\\|\\\\ ___ \\\\ \\n\" +","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"gerteck"},"content":" \"\\\\ \\\\ __/|\\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ __/| \\n\" +","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"gerteck"},"content":" \" \\\\ \\\\ \\\\_|/_\\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\_|/__ \\n\" +","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"gerteck"},"content":" \" \\\\ \\\\ \\\\_|\\\\ \\\\ \\\\ \\\\____\\\\ \\\\ \\\\____\\\\ \\\\ \\\\ \\\\ \\\\_|\\\\ \\\\ \\n\" +","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"gerteck"},"content":" \" \\\\ \\\\_______\\\\ \\\\_______\\\\ \\\\_______\\\\ \\\\__\\\\ \\\\_______\\\\ \\n\" +","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"gerteck"},"content":" \" \\\\|_______|\\\\|_______|\\\\|_______|\\\\|__|\\\\|_______| \\n\";","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"gerteck"},"content":" enum Command {","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"gerteck"},"content":" MARK,","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"gerteck"},"content":" UNMARK,","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"gerteck"},"content":" LIST,","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"gerteck"},"content":" DEADLINE,","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"gerteck"},"content":" EVENT,","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"gerteck"},"content":" TODO,","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"gerteck"},"content":" UNKNOWN,","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"gerteck"},"content":" HELP,","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"gerteck"},"content":" BYE,","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"gerteck"},"content":" DELETE,","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"gerteck"},"content":" private Tracker tracker;","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"gerteck"},"content":" public Ellie() {","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"gerteck"},"content":" tracker \u003d new Tracker();","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"gerteck"},"content":" public void start() {","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"gerteck"},"content":" hello();","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"gerteck"},"content":" Scanner reader \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-22"},{"lineNumber":39,"author":{"gitId":"gerteck"},"content":" Command command \u003d Command.UNKNOWN;","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"gerteck"},"content":" String input \u003d reader.nextLine();","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"gerteck"},"content":" while ( true ) {","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"gerteck"},"content":" String[] inputArray \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"gerteck"},"content":" String stringHeader \u003d inputArray[0].toLowerCase();","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"gerteck"},"content":" switch (stringHeader) {","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"gerteck"},"content":" case \"list\":","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"gerteck"},"content":" command \u003d Command.LIST;","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"gerteck"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"gerteck"},"content":" case \"mark\":","lastModifiedDate":"2024-01-23"},{"lineNumber":52,"author":{"gitId":"gerteck"},"content":" command \u003d Command.MARK;","lastModifiedDate":"2024-01-23"},{"lineNumber":53,"author":{"gitId":"gerteck"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":54,"author":{"gitId":"gerteck"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-23"},{"lineNumber":55,"author":{"gitId":"gerteck"},"content":" command \u003d Command.UNMARK;","lastModifiedDate":"2024-01-23"},{"lineNumber":56,"author":{"gitId":"gerteck"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":57,"author":{"gitId":"gerteck"},"content":" case \"delete\":","lastModifiedDate":"2024-01-23"},{"lineNumber":58,"author":{"gitId":"gerteck"},"content":" command \u003d Command.DELETE;","lastModifiedDate":"2024-01-23"},{"lineNumber":59,"author":{"gitId":"gerteck"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":60,"author":{"gitId":"gerteck"},"content":" case \"todo\":","lastModifiedDate":"2024-01-23"},{"lineNumber":61,"author":{"gitId":"gerteck"},"content":" command \u003d Command.TODO;","lastModifiedDate":"2024-01-23"},{"lineNumber":62,"author":{"gitId":"gerteck"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":63,"author":{"gitId":"gerteck"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-23"},{"lineNumber":64,"author":{"gitId":"gerteck"},"content":" command \u003d Command.DEADLINE;","lastModifiedDate":"2024-01-23"},{"lineNumber":65,"author":{"gitId":"gerteck"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":66,"author":{"gitId":"gerteck"},"content":" case \"event\":","lastModifiedDate":"2024-01-23"},{"lineNumber":67,"author":{"gitId":"gerteck"},"content":" command \u003d Command.EVENT;","lastModifiedDate":"2024-01-23"},{"lineNumber":68,"author":{"gitId":"gerteck"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":69,"author":{"gitId":"gerteck"},"content":" case \"help\":","lastModifiedDate":"2024-01-23"},{"lineNumber":70,"author":{"gitId":"gerteck"},"content":" command \u003d Command.HELP;","lastModifiedDate":"2024-01-23"},{"lineNumber":71,"author":{"gitId":"gerteck"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":72,"author":{"gitId":"gerteck"},"content":" case \"bye\":","lastModifiedDate":"2024-01-23"},{"lineNumber":73,"author":{"gitId":"gerteck"},"content":" command \u003d Command.BYE;","lastModifiedDate":"2024-01-23"},{"lineNumber":74,"author":{"gitId":"gerteck"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":75,"author":{"gitId":"gerteck"},"content":" default:","lastModifiedDate":"2024-01-23"},{"lineNumber":76,"author":{"gitId":"gerteck"},"content":" command \u003d Command.UNKNOWN;","lastModifiedDate":"2024-01-23"},{"lineNumber":77,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":78,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":79,"author":{"gitId":"gerteck"},"content":" // commands with no argument: BYE / LIST / UNKNOWN","lastModifiedDate":"2024-01-23"},{"lineNumber":80,"author":{"gitId":"gerteck"},"content":" if (command \u003d\u003d Command.BYE) {","lastModifiedDate":"2024-01-23"},{"lineNumber":81,"author":{"gitId":"gerteck"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":82,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":83,"author":{"gitId":"gerteck"},"content":" else if (command \u003d\u003d Command.LIST) {","lastModifiedDate":"2024-01-23"},{"lineNumber":84,"author":{"gitId":"gerteck"},"content":" tracker.listTasks();","lastModifiedDate":"2024-01-22"},{"lineNumber":85,"author":{"gitId":"gerteck"},"content":" input \u003d reader.nextLine();","lastModifiedDate":"2024-01-23"},{"lineNumber":86,"author":{"gitId":"gerteck"},"content":" continue;","lastModifiedDate":"2024-01-23"},{"lineNumber":87,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":88,"author":{"gitId":"gerteck"},"content":" else if (command \u003d\u003d Command.HELP) {","lastModifiedDate":"2024-01-23"},{"lineNumber":89,"author":{"gitId":"gerteck"},"content":" System.out.println(\"Here\u0027s a list of supported commands so far:\" +","lastModifiedDate":"2024-01-23"},{"lineNumber":90,"author":{"gitId":"gerteck"},"content":" \"\\n help \\n list \\n mark/unmark [int] \\n todo [task] \\n \" +","lastModifiedDate":"2024-01-23"},{"lineNumber":91,"author":{"gitId":"gerteck"},"content":" \"deadline [task] /by [date] \\n event [task] /from [date] /to [date] \\n bye \\n\");","lastModifiedDate":"2024-01-23"},{"lineNumber":92,"author":{"gitId":"gerteck"},"content":" input \u003d reader.nextLine();","lastModifiedDate":"2024-01-23"},{"lineNumber":93,"author":{"gitId":"gerteck"},"content":" continue;","lastModifiedDate":"2024-01-23"},{"lineNumber":94,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":95,"author":{"gitId":"gerteck"},"content":" else if (command \u003d\u003d Command.UNKNOWN) {","lastModifiedDate":"2024-01-23"},{"lineNumber":96,"author":{"gitId":"gerteck"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":97,"author":{"gitId":"gerteck"},"content":" throw new UnknownInputException(\"Command Unknown or Missing\");","lastModifiedDate":"2024-01-23"},{"lineNumber":98,"author":{"gitId":"gerteck"},"content":" } catch (UnknownInputException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":99,"author":{"gitId":"gerteck"},"content":" System.out.println(\"Sorry! Not sure what you\u0027re referring to (╥_╥)\");","lastModifiedDate":"2024-01-23"},{"lineNumber":100,"author":{"gitId":"gerteck"},"content":" System.out.println(\"Type \u0027help\u0027 to view the list of supported commands!\\n\");","lastModifiedDate":"2024-01-23"},{"lineNumber":101,"author":{"gitId":"gerteck"},"content":" input \u003d reader.nextLine();","lastModifiedDate":"2024-01-23"},{"lineNumber":102,"author":{"gitId":"gerteck"},"content":" continue;","lastModifiedDate":"2024-01-23"},{"lineNumber":103,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":104,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":105,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":106,"author":{"gitId":"gerteck"},"content":" // check for following input argument","lastModifiedDate":"2024-01-23"},{"lineNumber":107,"author":{"gitId":"gerteck"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":108,"author":{"gitId":"gerteck"},"content":" if (inputArray.length \u003c 2) {","lastModifiedDate":"2024-01-23"},{"lineNumber":109,"author":{"gitId":"gerteck"},"content":" throw new InvalidTaskInputException(\"command contains no argument\");","lastModifiedDate":"2024-01-23"},{"lineNumber":110,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":111,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":112,"author":{"gitId":"gerteck"},"content":" catch (InvalidTaskInputException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":113,"author":{"gitId":"gerteck"},"content":" System.out.println(\"Please input an argument! \\n [command] [argument]\\n\");","lastModifiedDate":"2024-01-23"},{"lineNumber":114,"author":{"gitId":"gerteck"},"content":" input \u003d reader.nextLine();","lastModifiedDate":"2024-01-23"},{"lineNumber":115,"author":{"gitId":"gerteck"},"content":" continue;","lastModifiedDate":"2024-01-23"},{"lineNumber":116,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":117,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":118,"author":{"gitId":"gerteck"},"content":" String stringBody \u003d inputArray[1];","lastModifiedDate":"2024-01-23"},{"lineNumber":119,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":120,"author":{"gitId":"gerteck"},"content":" if (command \u003d\u003d Command.MARK) {","lastModifiedDate":"2024-01-23"},{"lineNumber":121,"author":{"gitId":"gerteck"},"content":" if (isNumeric(stringBody)) {","lastModifiedDate":"2024-01-23"},{"lineNumber":122,"author":{"gitId":"gerteck"},"content":" int index \u003d Integer.parseInt(stringBody);","lastModifiedDate":"2024-01-23"},{"lineNumber":123,"author":{"gitId":"gerteck"},"content":" tracker.markTaskIndex(index);","lastModifiedDate":"2024-01-22"},{"lineNumber":124,"author":{"gitId":"gerteck"},"content":" } else {","lastModifiedDate":"2024-01-22"},{"lineNumber":125,"author":{"gitId":"gerteck"},"content":" System.out.println(\"Input a valid number to mark! \\n Usage: mark [int]\\n\");","lastModifiedDate":"2024-01-23"},{"lineNumber":126,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":127,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":128,"author":{"gitId":"gerteck"},"content":" else if (command \u003d\u003d Command.UNMARK) {","lastModifiedDate":"2024-01-23"},{"lineNumber":129,"author":{"gitId":"gerteck"},"content":" if (isNumeric(stringBody)) {","lastModifiedDate":"2024-01-23"},{"lineNumber":130,"author":{"gitId":"gerteck"},"content":" int index \u003d Integer.parseInt(stringBody);","lastModifiedDate":"2024-01-23"},{"lineNumber":131,"author":{"gitId":"gerteck"},"content":" tracker.unmarkTaskIndex(index);","lastModifiedDate":"2024-01-22"},{"lineNumber":132,"author":{"gitId":"gerteck"},"content":" } else {","lastModifiedDate":"2024-01-22"},{"lineNumber":133,"author":{"gitId":"gerteck"},"content":" System.out.println(\"Input a valid number to unmark! \\n Usage: unmark [int]\\n\");","lastModifiedDate":"2024-01-23"},{"lineNumber":134,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":135,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":136,"author":{"gitId":"gerteck"},"content":" else if (command \u003d\u003d Command.DELETE) {","lastModifiedDate":"2024-01-23"},{"lineNumber":137,"author":{"gitId":"gerteck"},"content":" if (isNumeric(stringBody)) {","lastModifiedDate":"2024-01-23"},{"lineNumber":138,"author":{"gitId":"gerteck"},"content":" int index \u003d Integer.parseInt(stringBody);","lastModifiedDate":"2024-01-23"},{"lineNumber":139,"author":{"gitId":"gerteck"},"content":" tracker.deleteTaskIndex(index);","lastModifiedDate":"2024-01-23"},{"lineNumber":140,"author":{"gitId":"gerteck"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":141,"author":{"gitId":"gerteck"},"content":" System.out.println(\"Input a valid number to delete! \\n Usage: delete [int]\\n\");","lastModifiedDate":"2024-01-23"},{"lineNumber":142,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":143,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":144,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":145,"author":{"gitId":"gerteck"},"content":" else if (command \u003d\u003d Command.TODO) {","lastModifiedDate":"2024-01-23"},{"lineNumber":146,"author":{"gitId":"gerteck"},"content":" Task task \u003d new Todo(stringBody);","lastModifiedDate":"2024-01-23"},{"lineNumber":147,"author":{"gitId":"gerteck"},"content":" tracker.addTask(task);","lastModifiedDate":"2024-01-23"},{"lineNumber":148,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":149,"author":{"gitId":"gerteck"},"content":" else if (command \u003d\u003d Command.DEADLINE) {","lastModifiedDate":"2024-01-23"},{"lineNumber":150,"author":{"gitId":"gerteck"},"content":" if (!stringBody.contains(\"/by\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":151,"author":{"gitId":"gerteck"},"content":" System.out.println(\"Please add a due date for your dateline using \u0027/by\u0027!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":152,"author":{"gitId":"gerteck"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":153,"author":{"gitId":"gerteck"},"content":" String[] deadlineArray \u003d stringBody.split(\"/by\");","lastModifiedDate":"2024-01-23"},{"lineNumber":154,"author":{"gitId":"gerteck"},"content":" String event \u003d deadlineArray[0].trim();","lastModifiedDate":"2024-01-23"},{"lineNumber":155,"author":{"gitId":"gerteck"},"content":" String dueDate \u003d deadlineArray[1].trim();","lastModifiedDate":"2024-01-23"},{"lineNumber":156,"author":{"gitId":"gerteck"},"content":" if (event.equals(\"\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":157,"author":{"gitId":"gerteck"},"content":" System.out.println(\"Please add event name.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":158,"author":{"gitId":"gerteck"},"content":" } else if (dueDate.equals(\"\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":159,"author":{"gitId":"gerteck"},"content":" System.out.println(\"Please add a deadline!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":160,"author":{"gitId":"gerteck"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":161,"author":{"gitId":"gerteck"},"content":" Task task \u003d new Deadline(event, dueDate);","lastModifiedDate":"2024-01-23"},{"lineNumber":162,"author":{"gitId":"gerteck"},"content":" tracker.addTask(task);","lastModifiedDate":"2024-01-23"},{"lineNumber":163,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":164,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":165,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":166,"author":{"gitId":"gerteck"},"content":" else if (command \u003d\u003d Command.EVENT) {","lastModifiedDate":"2024-01-23"},{"lineNumber":167,"author":{"gitId":"gerteck"},"content":" if (!stringBody.contains(\"/from\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":168,"author":{"gitId":"gerteck"},"content":" System.out.println(\"Please add a start date for your event using \u0027/from\u0027!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":169,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":170,"author":{"gitId":"gerteck"},"content":" else if (!stringBody.contains(\"/to\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":171,"author":{"gitId":"gerteck"},"content":" System.out.println(\"Please add an end date for your event using \u0027/to\u0027!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":172,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":173,"author":{"gitId":"gerteck"},"content":" else {","lastModifiedDate":"2024-01-22"},{"lineNumber":174,"author":{"gitId":"gerteck"},"content":" String[] deadlineArray \u003d stringBody.split(\"/from\");","lastModifiedDate":"2024-01-23"},{"lineNumber":175,"author":{"gitId":"gerteck"},"content":" String event \u003d deadlineArray[0].trim();","lastModifiedDate":"2024-01-23"},{"lineNumber":176,"author":{"gitId":"gerteck"},"content":" String eventDuration \u003d deadlineArray[1];","lastModifiedDate":"2024-01-23"},{"lineNumber":177,"author":{"gitId":"gerteck"},"content":" if (event.equals(\"\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":178,"author":{"gitId":"gerteck"},"content":" System.out.println(\"Please add event name.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":179,"author":{"gitId":"gerteck"},"content":" } else if (event.contains(\"/end\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":180,"author":{"gitId":"gerteck"},"content":" System.out.println(\"Please place /end [end time] after /from [start time]!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":181,"author":{"gitId":"gerteck"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":182,"author":{"gitId":"gerteck"},"content":" String[] duration \u003d eventDuration.split(\"/to\");","lastModifiedDate":"2024-01-23"},{"lineNumber":183,"author":{"gitId":"gerteck"},"content":" Task task \u003d new Event(event, duration[0].trim(), duration[1].trim());","lastModifiedDate":"2024-01-23"},{"lineNumber":184,"author":{"gitId":"gerteck"},"content":" tracker.addTask(task);","lastModifiedDate":"2024-01-23"},{"lineNumber":185,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":186,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":187,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":188,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":189,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":190,"author":{"gitId":"gerteck"},"content":" input \u003d reader.nextLine();","lastModifiedDate":"2024-01-22"},{"lineNumber":191,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":192,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":193,"author":{"gitId":"gerteck"},"content":" goodbye();","lastModifiedDate":"2024-01-22"},{"lineNumber":194,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":195,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":196,"author":{"gitId":"gerteck"},"content":" private static Boolean isNumeric(String string) {","lastModifiedDate":"2024-01-22"},{"lineNumber":197,"author":{"gitId":"gerteck"},"content":" return string.matches(\"\\\\d+\");","lastModifiedDate":"2024-01-22"},{"lineNumber":198,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":199,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":200,"author":{"gitId":"gerteck"},"content":" private void hello() {","lastModifiedDate":"2024-01-22"},{"lineNumber":201,"author":{"gitId":"gerteck"},"content":" System.out.println(\"Hello! I\u0027m Ellie, your CS2103T chat bot! I help by tracking your tasks!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":202,"author":{"gitId":"gerteck"},"content":" System.out.println(logoEllie + \"\\n\" + horizontalLine);","lastModifiedDate":"2024-01-23"},{"lineNumber":203,"author":{"gitId":"gerteck"},"content":" System.out.println(\"What can I do for you? Type \u0027help\u0027 to see available commands! \\n\");","lastModifiedDate":"2024-01-23"},{"lineNumber":204,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":205,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":206,"author":{"gitId":"gerteck"},"content":" private void goodbye() {","lastModifiedDate":"2024-01-22"},{"lineNumber":207,"author":{"gitId":"gerteck"},"content":" System.out.println(\"\\n Bye! Hope to see you again soon!\");","lastModifiedDate":"2024-01-22"},{"lineNumber":208,"author":{"gitId":"gerteck"},"content":" System.out.println(horizontalLine);","lastModifiedDate":"2024-01-22"},{"lineNumber":209,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":210,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":211,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":212,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"gerteck":210,"-":2}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"gerteck"},"content":"/* Events: tasks that start at a specific date/time and","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"gerteck"},"content":"* ends at a specific date/time e.g.,","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"gerteck"},"content":"* (a) event team project meeting /from 2-10-2019 /to 2-4pm","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"gerteck"},"content":"* (b) event orientation week /from 4-10-2019 /to 11-10-2019","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"gerteck"},"content":"* */","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"gerteck"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"gerteck"},"content":" private String startDate;","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"gerteck"},"content":" private String endDate;","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"gerteck"},"content":" public Event (String description, String startDate, String endDate) {","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"gerteck"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"gerteck"},"content":" this.startDate \u003d startDate;","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"gerteck"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"gerteck"},"content":" // project meeting (from: Aug 6th 2pm to: 4pm)","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"gerteck"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"gerteck"},"content":" public String listTaskString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"gerteck"},"content":" return \"[E]\" + super.listTaskString()","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"gerteck"},"content":" + \" (from: \" + startDate","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"gerteck"},"content":" + \" to: \" + endDate + \")\";","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"gerteck"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"gerteck":30}},{"path":"src/main/java/InvalidTaskInputException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"gerteck"},"content":"public class InvalidTaskInputException extends Exception {","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"gerteck"},"content":" public InvalidTaskInputException(String message) {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"gerteck"},"content":" super(message);","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"gerteck"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"gerteck":7}},{"path":"src/main/java/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gerteck"},"content":"public class Main {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"gerteck"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"gerteck"},"content":" Ellie myEllie \u003d new Ellie();","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"gerteck"},"content":" myEllie.start();","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"gerteck"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"gerteck":8}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gerteck"},"content":"public abstract class Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"gerteck"},"content":" protected String description;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"gerteck"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"gerteck"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"gerteck"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"gerteck"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"gerteck"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"gerteck"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"gerteck"},"content":" return this.description;","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"gerteck"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"gerteck"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"gerteck"},"content":" public String listTaskString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"gerteck"},"content":" return \"[\" + getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"gerteck"},"content":" public void markTask() {","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"gerteck"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"gerteck"},"content":" public void unmarkTask() {","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"gerteck"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"gerteck"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"gerteck":31}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"gerteck"},"content":"// To do class: tasks without any date/time attached to it","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"gerteck"},"content":"// e.g., visit new theme park","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"gerteck"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"gerteck"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"gerteck"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"gerteck"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"gerteck"},"content":" public String listTaskString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"gerteck"},"content":" return \"[T]\" + super.listTaskString();","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"gerteck"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"gerteck":15}},{"path":"src/main/java/Tracker.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gerteck"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"gerteck"},"content":"public class Tracker {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"gerteck"},"content":" private final ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"gerteck"},"content":" public Tracker(){","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"gerteck"},"content":" taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"gerteck"},"content":" public void addTask(Task element) {","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"gerteck"},"content":" taskList.add(element);","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"gerteck"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"gerteck"},"content":" System.out.println(\" \" + element.listTaskString());","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"gerteck"},"content":" System.out.println(\"Now you have \" + this.taskQuantity() + \" tasks in the list.\\n\");","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"gerteck"},"content":" public void listTasks() {","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"gerteck"},"content":" if (taskList.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"gerteck"},"content":" System.out.println(\"No items in list!\\n\");","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"gerteck"},"content":" return;","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"gerteck"},"content":" int index \u003d 0;","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"gerteck"},"content":" System.out.println(\"Here are your tasks!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"gerteck"},"content":" for (Task element: taskList) {","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"gerteck"},"content":" index++;","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"gerteck"},"content":" System.out.println(\" \" + index + \".\" + element.listTaskString());","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"gerteck"},"content":" System.out.print(\"\\n\");","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"gerteck"},"content":" public int taskQuantity() {","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"gerteck"},"content":" return taskList.size();","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"gerteck"},"content":" public void markTaskIndex(int index) {","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"gerteck"},"content":" if (index \u003e taskList.size()) {","lastModifiedDate":"2024-01-22"},{"lineNumber":39,"author":{"gitId":"gerteck"},"content":" System.out.println(\"Sorry! There doesn\u0027t seem to be enough tasks for there to be a task \" + index + \"!\\n\");","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"gerteck"},"content":" return;","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":42,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":43,"author":{"gitId":"gerteck"},"content":" Task task \u003d taskList.get(index - 1);","lastModifiedDate":"2024-01-22"},{"lineNumber":44,"author":{"gitId":"gerteck"},"content":" task.markTask();","lastModifiedDate":"2024-01-22"},{"lineNumber":45,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":46,"author":{"gitId":"gerteck"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-22"},{"lineNumber":47,"author":{"gitId":"gerteck"},"content":" System.out.println(\" \" + task.listTaskString() +\"\\n\");","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":49,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":50,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":51,"author":{"gitId":"gerteck"},"content":" public void unmarkTaskIndex(int index) {","lastModifiedDate":"2024-01-22"},{"lineNumber":52,"author":{"gitId":"gerteck"},"content":" if (index \u003e taskList.size()) {","lastModifiedDate":"2024-01-22"},{"lineNumber":53,"author":{"gitId":"gerteck"},"content":" System.out.println(\"Sorry! There doesn\u0027t seem to be enough tasks for there to be a task \" + index + \"!\\n\");","lastModifiedDate":"2024-01-23"},{"lineNumber":54,"author":{"gitId":"gerteck"},"content":" return;","lastModifiedDate":"2024-01-22"},{"lineNumber":55,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":56,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":57,"author":{"gitId":"gerteck"},"content":" Task task \u003d taskList.get(index - 1);","lastModifiedDate":"2024-01-22"},{"lineNumber":58,"author":{"gitId":"gerteck"},"content":" task.unmarkTask();","lastModifiedDate":"2024-01-22"},{"lineNumber":59,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":60,"author":{"gitId":"gerteck"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-22"},{"lineNumber":61,"author":{"gitId":"gerteck"},"content":" System.out.println(\" \" + task.listTaskString() + \"\\n\");","lastModifiedDate":"2024-01-23"},{"lineNumber":62,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":63,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":64,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":65,"author":{"gitId":"gerteck"},"content":" public void deleteTaskIndex (int index) {","lastModifiedDate":"2024-01-23"},{"lineNumber":66,"author":{"gitId":"gerteck"},"content":" if (index \u003e taskList.size()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":67,"author":{"gitId":"gerteck"},"content":" System.out.println(\"Sorry! There doesn\u0027t seem to be enough tasks for there to be a task \" + index + \"!\\n\");","lastModifiedDate":"2024-01-23"},{"lineNumber":68,"author":{"gitId":"gerteck"},"content":" return;","lastModifiedDate":"2024-01-23"},{"lineNumber":69,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":70,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":71,"author":{"gitId":"gerteck"},"content":" Task removedTask \u003d taskList.remove(index - 1);","lastModifiedDate":"2024-01-23"},{"lineNumber":72,"author":{"gitId":"gerteck"},"content":" System.out.println(\"Got it! I\u0027ve removed this task from your list:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":73,"author":{"gitId":"gerteck"},"content":" System.out.println(\" \" + removedTask.listTaskString() + \"\\n\");","lastModifiedDate":"2024-01-23"},{"lineNumber":74,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":75,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":76,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":77,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":78,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":79,"author":{"gitId":"gerteck"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"gerteck":79}},{"path":"src/main/java/UnknownInputException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gerteck"},"content":"public class UnknownInputException extends Exception {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"gerteck"},"content":" public UnknownInputException(String message) {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"gerteck"},"content":" super(message);","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"gerteck"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"gerteck":7}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"gerteck"},"content":"help","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"gerteck"},"content":"todo task A","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"gerteck"},"content":"deadline task B /by tomorrow!","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"gerteck"},"content":"event task C /from 23/1 /to 26/1","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"gerteck"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"gerteck"},"content":"mark 1","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"gerteck"},"content":"mark 2","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"gerteck"},"content":"mark 3","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"gerteck"},"content":"mark 4","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"gerteck"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"gerteck"},"content":"bye","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"gerteck":11}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"gerteck"},"content":" timeout /t -1","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"gerteck"},"content":"java -classpath ..\\bin Main \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"gerteck"},"content":"timeout /t -1","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"gerteck":4,"-":20}}] +[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"gerteck"},"content":"//Deadline: tasks that need to be done before a specific date/time","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"gerteck"},"content":"//e.g., submit report /by 11/10/2019 5pm","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"gerteck"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"gerteck"},"content":" private String dueDate;","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"gerteck"},"content":" public Deadline(String description, String dueDate) {","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"gerteck"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"gerteck"},"content":" this.dueDate \u003d dueDate;","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"gerteck"},"content":" public Deadline(String description, int isDone, String dueDate) {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"gerteck"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"gerteck"},"content":" this.dueDate \u003d dueDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"gerteck"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"gerteck"},"content":" public char getTaskType() {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"gerteck"},"content":" return \u0027D\u0027;","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"gerteck"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"gerteck"},"content":" public String listTaskString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"gerteck"},"content":" return \"[D]\" + super.listTaskString()","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"gerteck"},"content":" + \" (by: \" + this.dueDate + \")\";","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"gerteck"},"content":" public String getDueDate() {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"gerteck"},"content":" return this.dueDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"gerteck"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"gerteck":32}},{"path":"src/main/java/Ellie.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gerteck"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"gerteck"},"content":"public class Ellie {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"gerteck"},"content":" final static String horizontalLine \u003d \"____________________________________________________________\";","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"gerteck"},"content":" final static String logoEllie \u003d","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"gerteck"},"content":" \" _______ ___ ___ ___ _______ \\n\" +","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"gerteck"},"content":" \"|\\\\ ___ \\\\ |\\\\ \\\\ |\\\\ \\\\ |\\\\ \\\\|\\\\ ___ \\\\ \\n\" +","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"gerteck"},"content":" \"\\\\ \\\\ __/|\\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ __/| \\n\" +","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"gerteck"},"content":" \" \\\\ \\\\ \\\\_|/_\\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\_|/__ \\n\" +","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"gerteck"},"content":" \" \\\\ \\\\ \\\\_|\\\\ \\\\ \\\\ \\\\____\\\\ \\\\ \\\\____\\\\ \\\\ \\\\ \\\\ \\\\_|\\\\ \\\\ \\n\" +","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"gerteck"},"content":" \" \\\\ \\\\_______\\\\ \\\\_______\\\\ \\\\_______\\\\ \\\\__\\\\ \\\\_______\\\\ \\n\" +","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"gerteck"},"content":" \" \\\\|_______|\\\\|_______|\\\\|_______|\\\\|__|\\\\|_______| \\n\";","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"gerteck"},"content":" enum Command {","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"gerteck"},"content":" MARK,","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"gerteck"},"content":" UNMARK,","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"gerteck"},"content":" LIST,","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"gerteck"},"content":" DEADLINE,","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"gerteck"},"content":" EVENT,","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"gerteck"},"content":" TODO,","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"gerteck"},"content":" UNKNOWN,","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"gerteck"},"content":" HELP,","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"gerteck"},"content":" BYE,","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"gerteck"},"content":" DELETE,","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"gerteck"},"content":" private final Tracker tracker;","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"gerteck"},"content":" private final Storage storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"gerteck"},"content":" public Ellie() {","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"gerteck"},"content":" storage \u003d new Storage(\"./data/toDoList.txt\");","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"gerteck"},"content":" tracker \u003d new Tracker(storage);","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":40,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"gerteck"},"content":" public void start() {","lastModifiedDate":"2024-01-22"},{"lineNumber":42,"author":{"gitId":"gerteck"},"content":" hello();","lastModifiedDate":"2024-01-22"},{"lineNumber":43,"author":{"gitId":"gerteck"},"content":" Scanner reader \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-22"},{"lineNumber":44,"author":{"gitId":"gerteck"},"content":" Command command \u003d Command.UNKNOWN;","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"gerteck"},"content":" String input \u003d reader.nextLine();","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"gerteck"},"content":" while (true) {","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"gerteck"},"content":" String[] inputArray \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"gerteck"},"content":" String stringHeader \u003d inputArray[0].toLowerCase();","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":52,"author":{"gitId":"gerteck"},"content":" switch (stringHeader) {","lastModifiedDate":"2024-01-23"},{"lineNumber":53,"author":{"gitId":"gerteck"},"content":" case \"list\":","lastModifiedDate":"2024-01-23"},{"lineNumber":54,"author":{"gitId":"gerteck"},"content":" command \u003d Command.LIST;","lastModifiedDate":"2024-01-23"},{"lineNumber":55,"author":{"gitId":"gerteck"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":56,"author":{"gitId":"gerteck"},"content":" case \"mark\":","lastModifiedDate":"2024-01-23"},{"lineNumber":57,"author":{"gitId":"gerteck"},"content":" command \u003d Command.MARK;","lastModifiedDate":"2024-01-23"},{"lineNumber":58,"author":{"gitId":"gerteck"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":59,"author":{"gitId":"gerteck"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-23"},{"lineNumber":60,"author":{"gitId":"gerteck"},"content":" command \u003d Command.UNMARK;","lastModifiedDate":"2024-01-23"},{"lineNumber":61,"author":{"gitId":"gerteck"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":62,"author":{"gitId":"gerteck"},"content":" case \"delete\":","lastModifiedDate":"2024-01-23"},{"lineNumber":63,"author":{"gitId":"gerteck"},"content":" command \u003d Command.DELETE;","lastModifiedDate":"2024-01-23"},{"lineNumber":64,"author":{"gitId":"gerteck"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":65,"author":{"gitId":"gerteck"},"content":" case \"todo\":","lastModifiedDate":"2024-01-23"},{"lineNumber":66,"author":{"gitId":"gerteck"},"content":" command \u003d Command.TODO;","lastModifiedDate":"2024-01-23"},{"lineNumber":67,"author":{"gitId":"gerteck"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":68,"author":{"gitId":"gerteck"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-23"},{"lineNumber":69,"author":{"gitId":"gerteck"},"content":" command \u003d Command.DEADLINE;","lastModifiedDate":"2024-01-23"},{"lineNumber":70,"author":{"gitId":"gerteck"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":71,"author":{"gitId":"gerteck"},"content":" case \"event\":","lastModifiedDate":"2024-01-23"},{"lineNumber":72,"author":{"gitId":"gerteck"},"content":" command \u003d Command.EVENT;","lastModifiedDate":"2024-01-23"},{"lineNumber":73,"author":{"gitId":"gerteck"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":74,"author":{"gitId":"gerteck"},"content":" case \"help\":","lastModifiedDate":"2024-01-23"},{"lineNumber":75,"author":{"gitId":"gerteck"},"content":" command \u003d Command.HELP;","lastModifiedDate":"2024-01-23"},{"lineNumber":76,"author":{"gitId":"gerteck"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":77,"author":{"gitId":"gerteck"},"content":" case \"bye\":","lastModifiedDate":"2024-01-23"},{"lineNumber":78,"author":{"gitId":"gerteck"},"content":" command \u003d Command.BYE;","lastModifiedDate":"2024-01-23"},{"lineNumber":79,"author":{"gitId":"gerteck"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":80,"author":{"gitId":"gerteck"},"content":" default:","lastModifiedDate":"2024-01-23"},{"lineNumber":81,"author":{"gitId":"gerteck"},"content":" command \u003d Command.UNKNOWN;","lastModifiedDate":"2024-01-23"},{"lineNumber":82,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":83,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":84,"author":{"gitId":"gerteck"},"content":" // commands with no argument: BYE / LIST / UNKNOWN","lastModifiedDate":"2024-01-23"},{"lineNumber":85,"author":{"gitId":"gerteck"},"content":" if (command \u003d\u003d Command.BYE) {","lastModifiedDate":"2024-01-23"},{"lineNumber":86,"author":{"gitId":"gerteck"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":87,"author":{"gitId":"gerteck"},"content":" } else if (command \u003d\u003d Command.LIST) {","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"gerteck"},"content":" tracker.listTasks();","lastModifiedDate":"2024-01-22"},{"lineNumber":89,"author":{"gitId":"gerteck"},"content":" input \u003d reader.nextLine();","lastModifiedDate":"2024-01-23"},{"lineNumber":90,"author":{"gitId":"gerteck"},"content":" continue;","lastModifiedDate":"2024-01-23"},{"lineNumber":91,"author":{"gitId":"gerteck"},"content":" } else if (command \u003d\u003d Command.HELP) {","lastModifiedDate":"2024-01-28"},{"lineNumber":92,"author":{"gitId":"gerteck"},"content":" System.out.println(\"Here\u0027s a list of supported commands so far:\" +","lastModifiedDate":"2024-01-23"},{"lineNumber":93,"author":{"gitId":"gerteck"},"content":" \"\\n help \\n list \\n mark/unmark [int] \\n todo [task] \\n \" +","lastModifiedDate":"2024-01-23"},{"lineNumber":94,"author":{"gitId":"gerteck"},"content":" \"deadline [task] /by [date] \\n event [task] /from [date] /to [date] \\n bye \\n\");","lastModifiedDate":"2024-01-23"},{"lineNumber":95,"author":{"gitId":"gerteck"},"content":" input \u003d reader.nextLine();","lastModifiedDate":"2024-01-23"},{"lineNumber":96,"author":{"gitId":"gerteck"},"content":" continue;","lastModifiedDate":"2024-01-23"},{"lineNumber":97,"author":{"gitId":"gerteck"},"content":" } else if (command \u003d\u003d Command.UNKNOWN) {","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"gerteck"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":99,"author":{"gitId":"gerteck"},"content":" throw new UnknownInputException(\"Command Unknown or Missing\");","lastModifiedDate":"2024-01-23"},{"lineNumber":100,"author":{"gitId":"gerteck"},"content":" } catch (UnknownInputException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":101,"author":{"gitId":"gerteck"},"content":" System.out.println(\"Sorry! Not sure what you\u0027re referring to (╥_╥)\");","lastModifiedDate":"2024-01-23"},{"lineNumber":102,"author":{"gitId":"gerteck"},"content":" System.out.println(\"Type \u0027help\u0027 to view the list of supported commands!\\n\");","lastModifiedDate":"2024-01-23"},{"lineNumber":103,"author":{"gitId":"gerteck"},"content":" input \u003d reader.nextLine();","lastModifiedDate":"2024-01-23"},{"lineNumber":104,"author":{"gitId":"gerteck"},"content":" continue;","lastModifiedDate":"2024-01-23"},{"lineNumber":105,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":106,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":107,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":108,"author":{"gitId":"gerteck"},"content":" // check for following input argument","lastModifiedDate":"2024-01-23"},{"lineNumber":109,"author":{"gitId":"gerteck"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":110,"author":{"gitId":"gerteck"},"content":" if (inputArray.length \u003c 2) {","lastModifiedDate":"2024-01-23"},{"lineNumber":111,"author":{"gitId":"gerteck"},"content":" throw new InvalidTaskInputException(\"command contains no argument\");","lastModifiedDate":"2024-01-23"},{"lineNumber":112,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":113,"author":{"gitId":"gerteck"},"content":" } catch (InvalidTaskInputException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":114,"author":{"gitId":"gerteck"},"content":" System.out.println(\"Please input an argument! \\n [command] [argument]\\n\");","lastModifiedDate":"2024-01-23"},{"lineNumber":115,"author":{"gitId":"gerteck"},"content":" input \u003d reader.nextLine();","lastModifiedDate":"2024-01-23"},{"lineNumber":116,"author":{"gitId":"gerteck"},"content":" continue;","lastModifiedDate":"2024-01-23"},{"lineNumber":117,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":118,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":119,"author":{"gitId":"gerteck"},"content":" String stringBody \u003d inputArray[1];","lastModifiedDate":"2024-01-23"},{"lineNumber":120,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":121,"author":{"gitId":"gerteck"},"content":" if (command \u003d\u003d Command.MARK) {","lastModifiedDate":"2024-01-23"},{"lineNumber":122,"author":{"gitId":"gerteck"},"content":" if (isNumeric(stringBody)) {","lastModifiedDate":"2024-01-23"},{"lineNumber":123,"author":{"gitId":"gerteck"},"content":" int index \u003d Integer.parseInt(stringBody);","lastModifiedDate":"2024-01-23"},{"lineNumber":124,"author":{"gitId":"gerteck"},"content":" tracker.markTaskIndex(index);","lastModifiedDate":"2024-01-22"},{"lineNumber":125,"author":{"gitId":"gerteck"},"content":" } else {","lastModifiedDate":"2024-01-22"},{"lineNumber":126,"author":{"gitId":"gerteck"},"content":" System.out.println(\"Input a valid number to mark! \\n Usage: mark [int]\\n\");","lastModifiedDate":"2024-01-23"},{"lineNumber":127,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":128,"author":{"gitId":"gerteck"},"content":" } else if (command \u003d\u003d Command.UNMARK) {","lastModifiedDate":"2024-01-28"},{"lineNumber":129,"author":{"gitId":"gerteck"},"content":" if (isNumeric(stringBody)) {","lastModifiedDate":"2024-01-23"},{"lineNumber":130,"author":{"gitId":"gerteck"},"content":" int index \u003d Integer.parseInt(stringBody);","lastModifiedDate":"2024-01-23"},{"lineNumber":131,"author":{"gitId":"gerteck"},"content":" tracker.unmarkTaskIndex(index);","lastModifiedDate":"2024-01-22"},{"lineNumber":132,"author":{"gitId":"gerteck"},"content":" } else {","lastModifiedDate":"2024-01-22"},{"lineNumber":133,"author":{"gitId":"gerteck"},"content":" System.out.println(\"Input a valid number to unmark! \\n Usage: unmark [int]\\n\");","lastModifiedDate":"2024-01-23"},{"lineNumber":134,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":135,"author":{"gitId":"gerteck"},"content":" } else if (command \u003d\u003d Command.DELETE) {","lastModifiedDate":"2024-01-28"},{"lineNumber":136,"author":{"gitId":"gerteck"},"content":" if (isNumeric(stringBody)) {","lastModifiedDate":"2024-01-23"},{"lineNumber":137,"author":{"gitId":"gerteck"},"content":" int index \u003d Integer.parseInt(stringBody);","lastModifiedDate":"2024-01-23"},{"lineNumber":138,"author":{"gitId":"gerteck"},"content":" tracker.deleteTaskIndex(index);","lastModifiedDate":"2024-01-23"},{"lineNumber":139,"author":{"gitId":"gerteck"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":140,"author":{"gitId":"gerteck"},"content":" System.out.println(\"Input a valid number to delete! \\n Usage: delete [int]\\n\");","lastModifiedDate":"2024-01-23"},{"lineNumber":141,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":142,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":143,"author":{"gitId":"gerteck"},"content":" } else if (command \u003d\u003d Command.TODO) {","lastModifiedDate":"2024-01-28"},{"lineNumber":144,"author":{"gitId":"gerteck"},"content":" Task task \u003d new Todo(stringBody);","lastModifiedDate":"2024-01-23"},{"lineNumber":145,"author":{"gitId":"gerteck"},"content":" tracker.addTask(task);","lastModifiedDate":"2024-01-23"},{"lineNumber":146,"author":{"gitId":"gerteck"},"content":" } else if (command \u003d\u003d Command.DEADLINE) {","lastModifiedDate":"2024-01-28"},{"lineNumber":147,"author":{"gitId":"gerteck"},"content":" if (!stringBody.contains(\"/by\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":148,"author":{"gitId":"gerteck"},"content":" System.out.println(\"Please add a due date for your dateline using \u0027/by\u0027!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":149,"author":{"gitId":"gerteck"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":150,"author":{"gitId":"gerteck"},"content":" String[] deadlineArray \u003d stringBody.split(\"/by\");","lastModifiedDate":"2024-01-23"},{"lineNumber":151,"author":{"gitId":"gerteck"},"content":" String event \u003d deadlineArray[0].trim();","lastModifiedDate":"2024-01-23"},{"lineNumber":152,"author":{"gitId":"gerteck"},"content":" String dueDate \u003d deadlineArray[1].trim();","lastModifiedDate":"2024-01-23"},{"lineNumber":153,"author":{"gitId":"gerteck"},"content":" if (event.equals(\"\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":154,"author":{"gitId":"gerteck"},"content":" System.out.println(\"Please add event name.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":155,"author":{"gitId":"gerteck"},"content":" } else if (dueDate.equals(\"\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":156,"author":{"gitId":"gerteck"},"content":" System.out.println(\"Please add a deadline!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":157,"author":{"gitId":"gerteck"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":158,"author":{"gitId":"gerteck"},"content":" Task task \u003d new Deadline(event, dueDate);","lastModifiedDate":"2024-01-23"},{"lineNumber":159,"author":{"gitId":"gerteck"},"content":" tracker.addTask(task);","lastModifiedDate":"2024-01-23"},{"lineNumber":160,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":161,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":162,"author":{"gitId":"gerteck"},"content":" } else if (command \u003d\u003d Command.EVENT) {","lastModifiedDate":"2024-01-28"},{"lineNumber":163,"author":{"gitId":"gerteck"},"content":" if (!stringBody.contains(\"/from\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":164,"author":{"gitId":"gerteck"},"content":" System.out.println(\"Please add a start date for your event using \u0027/from\u0027!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":165,"author":{"gitId":"gerteck"},"content":" } else if (!stringBody.contains(\"/to\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":166,"author":{"gitId":"gerteck"},"content":" System.out.println(\"Please add an end date for your event using \u0027/to\u0027!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":167,"author":{"gitId":"gerteck"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":168,"author":{"gitId":"gerteck"},"content":" String[] deadlineArray \u003d stringBody.split(\"/from\");","lastModifiedDate":"2024-01-23"},{"lineNumber":169,"author":{"gitId":"gerteck"},"content":" String event \u003d deadlineArray[0].trim();","lastModifiedDate":"2024-01-23"},{"lineNumber":170,"author":{"gitId":"gerteck"},"content":" String eventDuration \u003d deadlineArray[1];","lastModifiedDate":"2024-01-23"},{"lineNumber":171,"author":{"gitId":"gerteck"},"content":" if (event.equals(\"\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":172,"author":{"gitId":"gerteck"},"content":" System.out.println(\"Please add event name.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":173,"author":{"gitId":"gerteck"},"content":" } else if (event.contains(\"/end\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":174,"author":{"gitId":"gerteck"},"content":" System.out.println(\"Please place /end [end time] after /from [start time]!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":175,"author":{"gitId":"gerteck"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":176,"author":{"gitId":"gerteck"},"content":" String[] duration \u003d eventDuration.split(\"/to\");","lastModifiedDate":"2024-01-23"},{"lineNumber":177,"author":{"gitId":"gerteck"},"content":" Task task \u003d new Event(event, duration[0].trim(), duration[1].trim());","lastModifiedDate":"2024-01-23"},{"lineNumber":178,"author":{"gitId":"gerteck"},"content":" tracker.addTask(task);","lastModifiedDate":"2024-01-23"},{"lineNumber":179,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":180,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":181,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":182,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":183,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":184,"author":{"gitId":"gerteck"},"content":" input \u003d reader.nextLine();","lastModifiedDate":"2024-01-22"},{"lineNumber":185,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":186,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":187,"author":{"gitId":"gerteck"},"content":" goodbye();","lastModifiedDate":"2024-01-22"},{"lineNumber":188,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":189,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":190,"author":{"gitId":"gerteck"},"content":" private static Boolean isNumeric(String string) {","lastModifiedDate":"2024-01-22"},{"lineNumber":191,"author":{"gitId":"gerteck"},"content":" return string.matches(\"\\\\d+\");","lastModifiedDate":"2024-01-22"},{"lineNumber":192,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":193,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":194,"author":{"gitId":"gerteck"},"content":" private void hello() {","lastModifiedDate":"2024-01-22"},{"lineNumber":195,"author":{"gitId":"gerteck"},"content":" System.out.println(\"Hello! I\u0027m Ellie, your CS2103T chat bot! I help by tracking your tasks!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":196,"author":{"gitId":"gerteck"},"content":" System.out.println(logoEllie + \"\\n\" + horizontalLine);","lastModifiedDate":"2024-01-23"},{"lineNumber":197,"author":{"gitId":"gerteck"},"content":" System.out.println(\"What can I do for you? Type \u0027help\u0027 to see available commands! \\n\");","lastModifiedDate":"2024-01-23"},{"lineNumber":198,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":199,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":200,"author":{"gitId":"gerteck"},"content":" private void goodbye() {","lastModifiedDate":"2024-01-22"},{"lineNumber":201,"author":{"gitId":"gerteck"},"content":" System.out.println(\"\\n Bye! Hope to see you again soon!\");","lastModifiedDate":"2024-01-22"},{"lineNumber":202,"author":{"gitId":"gerteck"},"content":" System.out.println(horizontalLine);","lastModifiedDate":"2024-01-22"},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":204,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":205,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":206,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"gerteck":204,"-":2}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gerteck"},"content":"/* Events: tasks that start at a specific date/time and","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"gerteck"},"content":" * ends at a specific date/time e.g.,","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"gerteck"},"content":" * (a) event team project meeting /from 2-10-2019 /to 2-4pm","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"gerteck"},"content":" * (b) event orientation week /from 4-10-2019 /to 11-10-2019","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"gerteck"},"content":" * */","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"gerteck"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"gerteck"},"content":" private String startDate;","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"gerteck"},"content":" private String endDate;","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"gerteck"},"content":" public Event(String description, String startDate, String endDate) {","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"gerteck"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"gerteck"},"content":" this.startDate \u003d startDate;","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"gerteck"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"gerteck"},"content":" public Event(String description, int isDone, String startDate, String endDate) {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"gerteck"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"gerteck"},"content":" this.startDate \u003d startDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"gerteck"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"gerteck"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"gerteck"},"content":" public char getTaskType() {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"gerteck"},"content":" return \u0027E\u0027;","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"gerteck"},"content":" // project meeting (from: Aug 6th 2pm to: 4pm)","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"gerteck"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"gerteck"},"content":" public String listTaskString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"gerteck"},"content":" return \"[E]\" + super.listTaskString()","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"gerteck"},"content":" + \" (from: \" + startDate","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"gerteck"},"content":" + \" to: \" + endDate + \")\";","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"gerteck"},"content":" public String getStartDate() {","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"gerteck"},"content":" return this.startDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"gerteck"},"content":" public String getEndDate() {","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"gerteck"},"content":" return this.endDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"gerteck"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"gerteck":46}},{"path":"src/main/java/InvalidTaskInputException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"gerteck"},"content":"public class InvalidTaskInputException extends Exception {","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"gerteck"},"content":" public InvalidTaskInputException(String message) {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"gerteck"},"content":" super(message);","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"gerteck"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"gerteck":7}},{"path":"src/main/java/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gerteck"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"gerteck"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"gerteck"},"content":"public class Main {","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"gerteck"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"gerteck"},"content":" Ellie myEllie \u003d new Ellie();","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"gerteck"},"content":" myEllie.start();","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"gerteck"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"gerteck":12}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gerteck"},"content":"import java.io.File;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"gerteck"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"gerteck"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"gerteck"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"gerteck"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"gerteck"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"gerteck"},"content":"// Purpose is to save tasks and load tasks","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"gerteck"},"content":"public class Storage {","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"gerteck"},"content":" private final String filePath;","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"gerteck"},"content":" private final File f;","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"gerteck"},"content":" // Constructor","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"gerteck"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"gerteck"},"content":" // Recommended file path: \"./data/toDoList.txt\"","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"gerteck"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"gerteck"},"content":" f \u003d new File(filePath);","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"gerteck"},"content":" // If file does not exist, create the file","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"gerteck"},"content":" if (!f.exists()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"gerteck"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"gerteck"},"content":" FileWriter fw \u003d new FileWriter(filePath);","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"gerteck"},"content":" fw.write(\"\");","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"gerteck"},"content":" fw.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"gerteck"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"gerteck"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"gerteck"},"content":" public void load(ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"gerteck"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"gerteck"},"content":" Task task;","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"gerteck"},"content":" Scanner scanner \u003d new Scanner(f);","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"gerteck"},"content":" if (!scanner.hasNext()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"gerteck"},"content":" System.out.println(\"No data loaded\");","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"gerteck"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"gerteck"},"content":" while (scanner.hasNext()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"gerteck"},"content":" String[] parts \u003d scanner.nextLine().split(\"\\\\|\");","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"gerteck"},"content":" switch(parts[0].charAt(0)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"gerteck"},"content":" case \u0027T\u0027:","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"gerteck"},"content":" task \u003d new Todo(parts[2], Integer.parseInt(parts[1]));","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"gerteck"},"content":" taskList.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"gerteck"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"gerteck"},"content":" case \u0027D\u0027:","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"gerteck"},"content":" task \u003d new Deadline(parts[2], Integer.parseInt(parts[1]), parts[3]);","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"gerteck"},"content":" taskList.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"gerteck"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"gerteck"},"content":" case \u0027E\u0027:","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"gerteck"},"content":" task \u003d new Event(parts[2], Integer.parseInt(parts[1]), parts[3], parts[4]);","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"gerteck"},"content":" taskList.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"gerteck"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"gerteck"},"content":" System.out.println(\"Data loaded\");","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"gerteck"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"gerteck"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"gerteck"},"content":" public void save(ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"gerteck"},"content":" if (taskList.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"gerteck"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"gerteck"},"content":" // Save tasks in txt file.","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"gerteck"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"gerteck"},"content":" FileWriter fw \u003d new FileWriter(f);","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"gerteck"},"content":" // type | 1/0 | \u003cevent-name\u003e | \u003cdate\u003e | \u003cdate\u003e","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"gerteck"},"content":" for (Task element : taskList) {","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"gerteck"},"content":" fw.write(element.getTaskType());","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"gerteck"},"content":" fw.write(\u0027|\u0027 + Integer.toString(element.getIsDone()) );","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"gerteck"},"content":" fw.write(\u0027|\u0027 + element.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"gerteck"},"content":" // add dates, if relevant","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"gerteck"},"content":" if (element instanceof Deadline) {","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"gerteck"},"content":" Deadline d \u003d (Deadline) element;","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"gerteck"},"content":" fw.write(\u0027|\u0027 + d.getDueDate());","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"gerteck"},"content":" if (element instanceof Event) {","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"gerteck"},"content":" Event e \u003d (Event) element;","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"gerteck"},"content":" fw.write(\u0027|\u0027 + e.getStartDate() + \u0027|\u0027 + e.getEndDate());","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":94,"author":{"gitId":"gerteck"},"content":" fw.write(System.lineSeparator());","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":96,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":97,"author":{"gitId":"gerteck"},"content":" fw.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":99,"author":{"gitId":"gerteck"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"gerteck"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":103,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":104,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":105,"author":{"gitId":"gerteck"},"content":" // Format of toDoList.txt: Each line represents a new todo","lastModifiedDate":"2024-01-28"},{"lineNumber":106,"author":{"gitId":"gerteck"},"content":" // type | 1/0 for marked status | \u003cevent-name\u003e |","lastModifiedDate":"2024-01-28"},{"lineNumber":107,"author":{"gitId":"gerteck"},"content":" // T | 1/0 | \u003cevent-name\u003e","lastModifiedDate":"2024-01-28"},{"lineNumber":108,"author":{"gitId":"gerteck"},"content":" // D | 1/0 | \u003cevent-name\u003e | \u003cdate\u003e","lastModifiedDate":"2024-01-28"},{"lineNumber":109,"author":{"gitId":"gerteck"},"content":" // E | 1/0 | \u003cevent-name\u003e | \u003cstart-date\u003e | \u003cend-date\u003e","lastModifiedDate":"2024-01-28"},{"lineNumber":110,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":111,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":112,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":113,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":114,"author":{"gitId":"gerteck"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"gerteck":114}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gerteck"},"content":"public abstract class Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"gerteck"},"content":" protected String description;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"gerteck"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"gerteck"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"gerteck"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"gerteck"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"gerteck"},"content":" public Task(String description, int isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"gerteck"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"gerteck"},"content":" this.isDone \u003d isDone !\u003d 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"gerteck"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"gerteck"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"gerteck"},"content":" return this.description;","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"gerteck"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"gerteck"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"gerteck"},"content":" public int getIsDone(){","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"gerteck"},"content":" return isDone ? 1 : 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"gerteck"},"content":" public String listTaskString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"gerteck"},"content":" return \"[\" + getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"gerteck"},"content":" public void markTask() {","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"gerteck"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"gerteck"},"content":" public void unmarkTask() {","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"gerteck"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":39,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":40,"author":{"gitId":"gerteck"},"content":" public abstract char getTaskType();","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"gerteck"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"gerteck":42}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"gerteck"},"content":"// To do class: tasks without any date/time attached to it","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"gerteck"},"content":"// e.g., visit new theme park","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"gerteck"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"gerteck"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"gerteck"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"gerteck"},"content":" public Todo(String description, int isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"gerteck"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"gerteck"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"gerteck"},"content":" public char getTaskType() {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"gerteck"},"content":" return \u0027T\u0027;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"gerteck"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"gerteck"},"content":" public String listTaskString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"gerteck"},"content":" return \"[T]\" + super.listTaskString();","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"gerteck"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"gerteck":24}},{"path":"src/main/java/Tracker.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gerteck"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"gerteck"},"content":"public class Tracker {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"gerteck"},"content":" private final ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"gerteck"},"content":" private final Storage storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"gerteck"},"content":" public Tracker(Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"gerteck"},"content":" taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"gerteck"},"content":" this.storage \u003d storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"gerteck"},"content":" storage.load(taskList);","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"gerteck"},"content":" public void addTask(Task element) {","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"gerteck"},"content":" taskList.add(element);","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"gerteck"},"content":" saveTasks();","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"gerteck"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"gerteck"},"content":" System.out.println(\" \" + element.listTaskString());","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"gerteck"},"content":" System.out.println(\"Now you have \" + this.taskQuantity() + \" tasks in the list.\\n\");","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"gerteck"},"content":" public void listTasks() {","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"gerteck"},"content":" if (taskList.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"gerteck"},"content":" System.out.println(\"No items in list!\\n\");","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"gerteck"},"content":" return;","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"gerteck"},"content":" int index \u003d 0;","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"gerteck"},"content":" System.out.println(\"Here are your tasks!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"gerteck"},"content":" for (Task element : taskList) {","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"gerteck"},"content":" index++;","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"gerteck"},"content":" System.out.println(\" \" + index + \".\" + element.listTaskString());","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"gerteck"},"content":" System.out.print(\"\\n\");","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":39,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":40,"author":{"gitId":"gerteck"},"content":" public int taskQuantity() {","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"gerteck"},"content":" return taskList.size();","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"gerteck"},"content":" public void markTaskIndex(int index) {","lastModifiedDate":"2024-01-22"},{"lineNumber":45,"author":{"gitId":"gerteck"},"content":" if (index \u003e taskList.size()) {","lastModifiedDate":"2024-01-22"},{"lineNumber":46,"author":{"gitId":"gerteck"},"content":" System.out.println(\"Sorry! There doesn\u0027t seem to be enough tasks for there to be a task \" + index + \"!\\n\");","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"gerteck"},"content":" return;","lastModifiedDate":"2024-01-22"},{"lineNumber":48,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":49,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":50,"author":{"gitId":"gerteck"},"content":" Task task \u003d taskList.get(index - 1);","lastModifiedDate":"2024-01-22"},{"lineNumber":51,"author":{"gitId":"gerteck"},"content":" task.markTask();","lastModifiedDate":"2024-01-22"},{"lineNumber":52,"author":{"gitId":"gerteck"},"content":" saveTasks();","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":54,"author":{"gitId":"gerteck"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-22"},{"lineNumber":55,"author":{"gitId":"gerteck"},"content":" System.out.println(\" \" + task.listTaskString() + \"\\n\");","lastModifiedDate":"2024-01-23"},{"lineNumber":56,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":57,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":58,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":59,"author":{"gitId":"gerteck"},"content":" public void unmarkTaskIndex(int index) {","lastModifiedDate":"2024-01-22"},{"lineNumber":60,"author":{"gitId":"gerteck"},"content":" if (index \u003e taskList.size()) {","lastModifiedDate":"2024-01-22"},{"lineNumber":61,"author":{"gitId":"gerteck"},"content":" System.out.println(\"Sorry! There doesn\u0027t seem to be enough tasks for there to be a task \" + index + \"!\\n\");","lastModifiedDate":"2024-01-23"},{"lineNumber":62,"author":{"gitId":"gerteck"},"content":" return;","lastModifiedDate":"2024-01-22"},{"lineNumber":63,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":64,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":65,"author":{"gitId":"gerteck"},"content":" Task task \u003d taskList.get(index - 1);","lastModifiedDate":"2024-01-22"},{"lineNumber":66,"author":{"gitId":"gerteck"},"content":" task.unmarkTask();","lastModifiedDate":"2024-01-22"},{"lineNumber":67,"author":{"gitId":"gerteck"},"content":" saveTasks();","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":69,"author":{"gitId":"gerteck"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-22"},{"lineNumber":70,"author":{"gitId":"gerteck"},"content":" System.out.println(\" \" + task.listTaskString() + \"\\n\");","lastModifiedDate":"2024-01-23"},{"lineNumber":71,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":72,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":73,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":74,"author":{"gitId":"gerteck"},"content":" public void deleteTaskIndex(int index) {","lastModifiedDate":"2024-01-23"},{"lineNumber":75,"author":{"gitId":"gerteck"},"content":" if (index \u003e taskList.size()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":76,"author":{"gitId":"gerteck"},"content":" System.out.println(\"Sorry! There doesn\u0027t seem to be enough tasks for there to be a task \" + index + \"!\\n\");","lastModifiedDate":"2024-01-23"},{"lineNumber":77,"author":{"gitId":"gerteck"},"content":" return;","lastModifiedDate":"2024-01-23"},{"lineNumber":78,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":79,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":80,"author":{"gitId":"gerteck"},"content":" Task removedTask \u003d taskList.remove(index - 1);","lastModifiedDate":"2024-01-23"},{"lineNumber":81,"author":{"gitId":"gerteck"},"content":" saveTasks();","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"gerteck"},"content":" System.out.println(\"Got it! I\u0027ve removed this task from your list:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":83,"author":{"gitId":"gerteck"},"content":" System.out.println(\" \" + removedTask.listTaskString() + \"\\n\");","lastModifiedDate":"2024-01-23"},{"lineNumber":84,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":85,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":86,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":87,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":88,"author":{"gitId":"gerteck"},"content":" private void saveTasks() {","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"gerteck"},"content":" storage.save(taskList);","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":93,"author":{"gitId":"gerteck"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"gerteck":93}},{"path":"src/main/java/UnknownInputException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gerteck"},"content":"public class UnknownInputException extends Exception {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"gerteck"},"content":" public UnknownInputException(String message) {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"gerteck"},"content":" super(message);","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"gerteck"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"gerteck"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"gerteck":7}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"gerteck"},"content":"help","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"gerteck"},"content":"todo task A","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"gerteck"},"content":"deadline task B /by tomorrow!","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"gerteck"},"content":"event task C /from 23/1 /to 26/1","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"gerteck"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"gerteck"},"content":"mark 1","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"gerteck"},"content":"mark 2","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"gerteck"},"content":"mark 3","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"gerteck"},"content":"mark 4","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"gerteck"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"gerteck"},"content":"bye","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"gerteck":11}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"gerteck"},"content":" timeout /t -1","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"gerteck"},"content":"java -classpath ..\\bin Main \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"gerteck"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"gerteck"},"content":"timeout /t -1","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"gerteck":4,"-":20}}] diff --git a/gerteck_ip_master/commits.json b/gerteck_ip_master/commits.json index 84b57d7d..a91c21e3 100644 --- a/gerteck_ip_master/commits.json +++ b/gerteck_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"gerteck":[{"date":"2024-01-22","commitResults":[{"hash":"46decc34997e0135237deca82a167e2d2bf88da4","isMergeCommit":false,"messageTitle":"L0: Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":1}}},{"hash":"1611027a7c82444b86f63e175f2e16358f68c575","isMergeCommit":false,"messageTitle":"L1: Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":15}}},{"hash":"a906f9021cc83e6c4bc4d85f594a7ce6376289ba","isMergeCommit":false,"messageTitle":"L2: Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":53,"deletions":9}}},{"hash":"33dd137d2a86ad1d636c6612d09200c619c7b1d1","isMergeCommit":false,"messageTitle":"A-Classes","messageBody":"","tags":["A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":10}}},{"hash":"69e0ccd2c5ab4d5926f38ccf0cd61ccb80756e7c","isMergeCommit":false,"messageTitle":"L3: Add Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":71,"deletions":4}}}]},{"date":"2024-01-23","commitResults":[{"hash":"027144935529c244d8c78689953c88a41416aa6c","isMergeCommit":false,"messageTitle":"Add Task subtypes D, T, E.","messageBody":"","tags":["A-Inheritance","A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":197,"deletions":28}}},{"hash":"c0f6e847aec1fe038acd0c3e07f6fbec9a6104ec","isMergeCommit":false,"messageTitle":"L4: Add support for three task types","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":8}}},{"hash":"04e46210a66130c8d31b15d621f1bd8af0405dfa","isMergeCommit":false,"messageTitle":"Added Automated Text UI Testing","messageBody":"","tags":["A-TextUITesting"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0},"java":{"insertions":17,"deletions":13},"bat":{"insertions":4,"deletions":1}}},{"hash":"ea73551de0ce4e368b5038052890008b2dd5ee01","isMergeCommit":false,"messageTitle":"Add Exception Classes","messageBody":"","tags":["Level-5","A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":11}}},{"hash":"dd5efa2458b608271d2cb578f6d2866f0e651112","isMergeCommit":false,"messageTitle":"Add Delete Functionality","messageBody":"","tags":["Level-6","A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":6}}}]}]},"authorFileTypeContributionMap":{"gerteck":{"java":405,"md":0,"fxml":0,"sh":0,"bat":4,"gradle":0,"txt":11}},"authorContributionVariance":{"gerteck":25056.639},"authorDisplayNameMap":{"gerteck":"CS2103T-T09-3 CHAN..TECK"}} +{"authorDailyContributionsMap":{"gerteck":[{"date":"2024-01-22","commitResults":[{"hash":"46decc34997e0135237deca82a167e2d2bf88da4","isMergeCommit":false,"messageTitle":"L0: Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":1}}},{"hash":"1611027a7c82444b86f63e175f2e16358f68c575","isMergeCommit":false,"messageTitle":"L1: Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":15}}},{"hash":"a906f9021cc83e6c4bc4d85f594a7ce6376289ba","isMergeCommit":false,"messageTitle":"L2: Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":53,"deletions":9}}},{"hash":"33dd137d2a86ad1d636c6612d09200c619c7b1d1","isMergeCommit":false,"messageTitle":"A-Classes","messageBody":"","tags":["A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":10}}},{"hash":"69e0ccd2c5ab4d5926f38ccf0cd61ccb80756e7c","isMergeCommit":false,"messageTitle":"L3: Add Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":71,"deletions":4}}}]},{"date":"2024-01-23","commitResults":[{"hash":"027144935529c244d8c78689953c88a41416aa6c","isMergeCommit":false,"messageTitle":"Add Task subtypes D, T, E.","messageBody":"","tags":["A-Inheritance","A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":197,"deletions":28}}},{"hash":"c0f6e847aec1fe038acd0c3e07f6fbec9a6104ec","isMergeCommit":false,"messageTitle":"L4: Add support for three task types","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":8}}},{"hash":"04e46210a66130c8d31b15d621f1bd8af0405dfa","isMergeCommit":false,"messageTitle":"Added Automated Text UI Testing","messageBody":"","tags":["A-TextUITesting"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0},"java":{"insertions":17,"deletions":13},"bat":{"insertions":4,"deletions":1}}},{"hash":"ea73551de0ce4e368b5038052890008b2dd5ee01","isMergeCommit":false,"messageTitle":"Add Exception Classes","messageBody":"","tags":["Level-5","A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":11}}},{"hash":"dd5efa2458b608271d2cb578f6d2866f0e651112","isMergeCommit":false,"messageTitle":"Add Delete Functionality","messageBody":"","tags":["Level-6","A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":6}}}]},{"date":"2024-01-28","commitResults":[{"hash":"288f69cd8898f4643c430585439509db89bab0ed","isMergeCommit":false,"messageTitle":"Refactor files to Add Storage Class","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":111,"deletions":73}}}]},{"date":"2024-01-30","commitResults":[{"hash":"bd26f9a0f66f060b98453d5f1b957309c7bdf150","isMergeCommit":false,"messageTitle":"L7: Add Save Functionality","messageBody":"Added save and load functionality to the Storage class.\nTracker calls storage to save and load at appropriate points\n","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1},"java":{"insertions":143,"deletions":5}}},{"hash":"4f87c821d515f20f00992f28119097ec674906cb","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"gerteck":{"java":581,"md":0,"fxml":0,"sh":0,"bat":4,"gradle":0,"txt":11}},"authorContributionVariance":{"gerteck":15251.1875},"authorDisplayNameMap":{"gerteck":"CS2103T-T09-3 CHAN..TECK"}} diff --git a/hjuntan_ip_master/authorship.json b/hjuntan_ip_master/authorship.json index 8135f543..6f6bd71c 100644 --- a/hjuntan_ip_master/authorship.json +++ b/hjuntan_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"hjuntan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"hjuntan"},"content":"import java.util.List;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"hjuntan"},"content":"public enum Command {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"hjuntan"},"content":" List, Mark, Unmark, Delete, Todo, Deadline, Event, Bye, Invalid;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"hjuntan"},"content":" private static List\u003cTask\u003e listOfTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"hjuntan"},"content":" private static String splitLine \u003d \"____________________________________________________________\";","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"hjuntan"},"content":" private static String exitString \u003d \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"hjuntan"},"content":" public static final boolean handleCommand(Command command, String detail){","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"hjuntan"},"content":" boolean isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"hjuntan"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"hjuntan"},"content":" switch (command){","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"hjuntan"},"content":" case List:","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"hjuntan"},"content":" if (listOfTasks.size() \u003d\u003d 0){","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"hjuntan"},"content":" throw new ToothlessException(\"Human list is empty like my tummy right now :/\");","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"hjuntan"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"hjuntan"},"content":" for (int i \u003d 0; i \u003c listOfTasks.size(); i++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"hjuntan"},"content":" Task t \u003d listOfTasks.get(i);","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"hjuntan"},"content":" printTaskState(t, i);","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"hjuntan"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"hjuntan"},"content":" case Mark:{","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"hjuntan"},"content":" int taskIndex \u003d getTaskIndex(detail);","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"hjuntan"},"content":" if (taskIndex \u003e\u003d listOfTasks.size() || taskIndex \u003c 0 || detail.equals(\"\")){","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"hjuntan"},"content":" throw new ToothlessException(\"Human trying to mark nothing ^O^. Foolish\");","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"hjuntan"},"content":" Task t \u003d listOfTasks.get(taskIndex);","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"hjuntan"},"content":" t.markAsDone();","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"hjuntan"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"hjuntan"},"content":" printTaskState(t, taskIndex);","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"hjuntan"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"hjuntan"},"content":" case Unmark:{","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"hjuntan"},"content":" int taskIndex \u003d getTaskIndex(detail);","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"hjuntan"},"content":" if (taskIndex \u003e\u003d listOfTasks.size() || taskIndex \u003c 0 || detail.equals(\"\")){","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"hjuntan"},"content":" throw new ToothlessException(\"Human trying to unmark nothing ^O^. Silly\");","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"hjuntan"},"content":" Task t \u003d listOfTasks.get(taskIndex);","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"hjuntan"},"content":" t.markAsNotDone();","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"hjuntan"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"hjuntan"},"content":" printTaskState(t, taskIndex);","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"hjuntan"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"hjuntan"},"content":" case Delete:{","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"hjuntan"},"content":" int taskIndex \u003d getTaskIndex(detail);","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"hjuntan"},"content":" if (taskIndex \u003e\u003d listOfTasks.size() || taskIndex \u003c 0 || detail.equals(\"\")){","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"hjuntan"},"content":" throw new ToothlessException(\"Human trying to delete nothing ^O^. Absurd\");","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"hjuntan"},"content":" Task t \u003d listOfTasks.get(taskIndex);","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"hjuntan"},"content":" listOfTasks.remove(taskIndex);","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"hjuntan"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"hjuntan"},"content":" printTaskState(t, taskIndex);","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"hjuntan"},"content":" System.out.format(\"Now you have %d tasks in the list.\\n\", listOfTasks.size());","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"hjuntan"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"hjuntan"},"content":" case Todo:","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"hjuntan"},"content":" case Deadline:","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"hjuntan"},"content":" case Event:{","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"hjuntan"},"content":" Task t \u003d createTask(command, detail);","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"hjuntan"},"content":" listOfTasks.add(t);","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"hjuntan"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"hjuntan"},"content":" printTaskState(t, listOfTasks.size() - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"hjuntan"},"content":" System.out.format(\"Now you have %d tasks in the list.\\n\", listOfTasks.size());","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"hjuntan"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"hjuntan"},"content":" case Bye:","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"hjuntan"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"hjuntan"},"content":" System.out.println(exitString);","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"hjuntan"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":73,"author":{"gitId":"hjuntan"},"content":" case Invalid:","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"hjuntan"},"content":" throw new ToothlessException(\"Me dragon, no understand this action :P\");","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":76,"author":{"gitId":"hjuntan"},"content":" } catch (ToothlessException e){","lastModifiedDate":"2024-01-24"},{"lineNumber":77,"author":{"gitId":"hjuntan"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-24"},{"lineNumber":78,"author":{"gitId":"hjuntan"},"content":" } finally {","lastModifiedDate":"2024-01-24"},{"lineNumber":79,"author":{"gitId":"hjuntan"},"content":" System.out.println(splitLine);","lastModifiedDate":"2024-01-24"},{"lineNumber":80,"author":{"gitId":"hjuntan"},"content":" return isDone;","lastModifiedDate":"2024-01-24"},{"lineNumber":81,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":82,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":83,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":84,"author":{"gitId":"hjuntan"},"content":" public static final Task createTask(Command c, String detail) throws ToothlessException{","lastModifiedDate":"2024-01-24"},{"lineNumber":85,"author":{"gitId":"hjuntan"},"content":" if(detail.equals(\"\")){","lastModifiedDate":"2024-01-24"},{"lineNumber":86,"author":{"gitId":"hjuntan"},"content":" throw new ToothlessException(\"Human task no name :(\");","lastModifiedDate":"2024-01-24"},{"lineNumber":87,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":88,"author":{"gitId":"hjuntan"},"content":" Task newTask;","lastModifiedDate":"2024-01-24"},{"lineNumber":89,"author":{"gitId":"hjuntan"},"content":" switch (c){","lastModifiedDate":"2024-01-24"},{"lineNumber":90,"author":{"gitId":"hjuntan"},"content":" case Todo:{","lastModifiedDate":"2024-01-24"},{"lineNumber":91,"author":{"gitId":"hjuntan"},"content":" newTask \u003d new Todo(detail);","lastModifiedDate":"2024-01-24"},{"lineNumber":92,"author":{"gitId":"hjuntan"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":93,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":94,"author":{"gitId":"hjuntan"},"content":" case Deadline:{","lastModifiedDate":"2024-01-24"},{"lineNumber":95,"author":{"gitId":"hjuntan"},"content":" int dateIndex \u003d detail.indexOf(\"/by\");","lastModifiedDate":"2024-01-24"},{"lineNumber":96,"author":{"gitId":"hjuntan"},"content":" if (dateIndex \u003d\u003d -1){","lastModifiedDate":"2024-01-24"},{"lineNumber":97,"author":{"gitId":"hjuntan"},"content":" throw new ToothlessException(\"Human deadline no deadline @_@\");","lastModifiedDate":"2024-01-24"},{"lineNumber":98,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":99,"author":{"gitId":"hjuntan"},"content":" String description \u003d detail.substring(0, dateIndex - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":100,"author":{"gitId":"hjuntan"},"content":" String date \u003d detail.substring(dateIndex + 4);","lastModifiedDate":"2024-01-24"},{"lineNumber":101,"author":{"gitId":"hjuntan"},"content":" newTask \u003d new Deadline(description, date);","lastModifiedDate":"2024-01-24"},{"lineNumber":102,"author":{"gitId":"hjuntan"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":103,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":104,"author":{"gitId":"hjuntan"},"content":" default: {","lastModifiedDate":"2024-01-24"},{"lineNumber":105,"author":{"gitId":"hjuntan"},"content":" int date1Index \u003d detail.indexOf(\"/from\");","lastModifiedDate":"2024-01-24"},{"lineNumber":106,"author":{"gitId":"hjuntan"},"content":" if (date1Index \u003d\u003d -1){","lastModifiedDate":"2024-01-24"},{"lineNumber":107,"author":{"gitId":"hjuntan"},"content":" throw new ToothlessException(\"Human event no start date D:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":108,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":109,"author":{"gitId":"hjuntan"},"content":" String description \u003d detail.substring(0, date1Index - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":110,"author":{"gitId":"hjuntan"},"content":" detail \u003d detail.substring(date1Index + 6);","lastModifiedDate":"2024-01-24"},{"lineNumber":111,"author":{"gitId":"hjuntan"},"content":" int date2Index \u003d detail.indexOf(\"/to\");","lastModifiedDate":"2024-01-24"},{"lineNumber":112,"author":{"gitId":"hjuntan"},"content":" if (date2Index \u003d\u003d -1){","lastModifiedDate":"2024-01-24"},{"lineNumber":113,"author":{"gitId":"hjuntan"},"content":" throw new ToothlessException(\"Human event no end date D:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":114,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":115,"author":{"gitId":"hjuntan"},"content":" String startDate \u003d detail.substring(0, date2Index - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":116,"author":{"gitId":"hjuntan"},"content":" String endDate \u003d detail.substring(date2Index + 4);","lastModifiedDate":"2024-01-24"},{"lineNumber":117,"author":{"gitId":"hjuntan"},"content":" newTask \u003d new Event(description, startDate, endDate);","lastModifiedDate":"2024-01-24"},{"lineNumber":118,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":119,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":120,"author":{"gitId":"hjuntan"},"content":" return newTask;","lastModifiedDate":"2024-01-24"},{"lineNumber":121,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":122,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":123,"author":{"gitId":"hjuntan"},"content":" public static int getTaskIndex(String detail) throws ToothlessException{","lastModifiedDate":"2024-01-24"},{"lineNumber":124,"author":{"gitId":"hjuntan"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":125,"author":{"gitId":"hjuntan"},"content":" int taskIndex \u003d Integer.valueOf(detail);","lastModifiedDate":"2024-01-24"},{"lineNumber":126,"author":{"gitId":"hjuntan"},"content":" return taskIndex - 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":127,"author":{"gitId":"hjuntan"},"content":" } catch (NumberFormatException e){","lastModifiedDate":"2024-01-24"},{"lineNumber":128,"author":{"gitId":"hjuntan"},"content":" throw new ToothlessException(\"Number put is not number.\\nPlease put real number ._.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":129,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":130,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":131,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":132,"author":{"gitId":"hjuntan"},"content":" public static void printTaskState(Task task, int index){","lastModifiedDate":"2024-01-24"},{"lineNumber":133,"author":{"gitId":"hjuntan"},"content":" System.out.format(\"%d. [\"+ task.getTaskIcon()+\"][\"+ task.getStatusIcon() + \"] \" + task + \"\\n\", index + 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":134,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":135,"author":{"gitId":"hjuntan"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"hjuntan":135}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"hjuntan"},"content":"public class Deadline extends Task{","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"hjuntan"},"content":" private String date;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"hjuntan"},"content":" public Deadline(String description, String date){","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"hjuntan"},"content":" super.description \u003d description;","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"hjuntan"},"content":" this.date \u003d date;","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"hjuntan"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"hjuntan"},"content":" public String getTaskIcon() {","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"hjuntan"},"content":" return \"D\";","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"hjuntan"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"hjuntan"},"content":" public String toString(){","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"hjuntan"},"content":" return this.description + \" (by: \"+ this.date + \")\";","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"hjuntan"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"hjuntan":18}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"hjuntan"},"content":"public class Event extends Task{","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"hjuntan"},"content":" private String startDate;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"hjuntan"},"content":" private String endDate;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"hjuntan"},"content":" public Event(String description, String startDate, String endDate){","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"hjuntan"},"content":" super.description \u003d description;","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"hjuntan"},"content":" this.startDate \u003d startDate;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"hjuntan"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"hjuntan"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"hjuntan"},"content":" public String getTaskIcon() {","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"hjuntan"},"content":" return \"E\";","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"hjuntan"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"hjuntan"},"content":" public String toString(){","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"hjuntan"},"content":" return this.description + \" (from: \" + this.startDate + \" to: \" + this.endDate + \")\";","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"hjuntan"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"hjuntan":20}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"hjuntan"},"content":"public abstract class Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"hjuntan"},"content":" protected String description;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"hjuntan"},"content":" private boolean isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"hjuntan"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"hjuntan"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"hjuntan"},"content":" return this.description;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"hjuntan"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"hjuntan"},"content":" return this.isDone ? \"X\": \" \"; // mark done task with X","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"hjuntan"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"hjuntan"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"hjuntan"},"content":" public void markAsNotDone(){","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"hjuntan"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"hjuntan"},"content":" public abstract String getTaskIcon();","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"hjuntan"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"hjuntan":23}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"hjuntan"},"content":"public class Todo extends Task{","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"hjuntan"},"content":" public Todo(String description){","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"hjuntan"},"content":" super.description \u003d description;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"hjuntan"},"content":" public String getTaskIcon(){","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"hjuntan"},"content":" return \"T\";","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"hjuntan"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"hjuntan":10}},{"path":"src/main/java/Toothless.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"hjuntan"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"hjuntan"},"content":"public class Toothless {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"hjuntan"},"content":" private static String splitLine \u003d \"____________________________________________________________\";","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"hjuntan"},"content":" private static String chatBotName \u003d \"Toothless\";","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"hjuntan"},"content":" private static String greetingString \u003d \"Hi! \"+ chatBotName +\" is \" + chatBotName + \"!\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"hjuntan"},"content":" + \"What can \" + chatBotName + \" do for human?\\n\" + splitLine;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"hjuntan"},"content":" public static void main(String[] args){","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"hjuntan"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"hjuntan"},"content":" System.out.println(splitLine + \"\\n\" + greetingString);","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"hjuntan"},"content":" String input;","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"hjuntan"},"content":" Command command;","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"hjuntan"},"content":" boolean isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"hjuntan"},"content":" while(!isDone){","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"hjuntan"},"content":" input \u003d sc.nextLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"hjuntan"},"content":" System.out.println(splitLine);","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"hjuntan"},"content":" int detailIndex \u003d input.indexOf(\" \");","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"hjuntan"},"content":" String detail;","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"hjuntan"},"content":" if (detailIndex \u003d\u003d -1){","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"hjuntan"},"content":" detail \u003d \"\";","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"hjuntan"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"hjuntan"},"content":" detail \u003d input.substring(detailIndex + 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"hjuntan"},"content":" if(input.startsWith(\"unmark\")){","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"hjuntan"},"content":" command \u003d Command.Unmark;","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"hjuntan"},"content":" else if(input.startsWith(\"mark\")){","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"hjuntan"},"content":" command \u003d Command.Mark;","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"hjuntan"},"content":" else if(input.startsWith(\"delete\")){","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"hjuntan"},"content":" command \u003d Command.Delete;","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"hjuntan"},"content":" else if (input.startsWith(\"todo\")){","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"hjuntan"},"content":" command \u003d Command.Todo;","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"hjuntan"},"content":" else if (input.startsWith(\"deadline\")){","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"hjuntan"},"content":" command \u003d Command.Deadline;","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"hjuntan"},"content":" else if (input.startsWith(\"event\")){","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"hjuntan"},"content":" command \u003d Command.Event;","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"hjuntan"},"content":" else if (input.startsWith(\"list\")){","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"hjuntan"},"content":" command \u003d Command.List;","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"hjuntan"},"content":" else if(input.startsWith(\"bye\")){","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"hjuntan"},"content":" command \u003d Command.Bye;","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"hjuntan"},"content":" } else{","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"hjuntan"},"content":" command \u003d Command.Invalid;","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":55,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":56,"author":{"gitId":"hjuntan"},"content":" isDone \u003d Command.handleCommand(command, detail);","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":59,"author":{"gitId":"hjuntan"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"hjuntan":59}},{"path":"src/main/java/ToothlessException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"hjuntan"},"content":"public class ToothlessException extends Exception{","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"hjuntan"},"content":" ToothlessException(String message){","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"hjuntan"},"content":" super(message);","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"hjuntan"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"hjuntan":5}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"hjuntan"},"content":"todo simple task","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"hjuntan"},"content":"deadline simple assignment /by today","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"hjuntan"},"content":"event simple celebration /from 26 Jan 4pm /to 26 Jan 6pm","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"hjuntan"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"hjuntan"},"content":"mark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"hjuntan"},"content":"mark 3","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"hjuntan"},"content":"unmark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"hjuntan"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"hjuntan"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"hjuntan":9}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"hjuntan"},"content":"java -classpath ..\\bin Toothless \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"hjuntan":1,"-":20}}] +[{"path":"src/main/java/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"hjuntan"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"hjuntan"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"hjuntan"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"hjuntan"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"hjuntan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"hjuntan"},"content":"import java.util.List;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"hjuntan"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"hjuntan"},"content":"public enum Command {","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"hjuntan"},"content":" List, Mark, Unmark, Delete, Todo, Deadline, Event, Bye, Invalid;","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"hjuntan"},"content":" private static List\u003cTask\u003e listOfTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"hjuntan"},"content":" private static String splitLine \u003d \"____________________________________________________________\";","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"hjuntan"},"content":" private static String exitString \u003d \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"hjuntan"},"content":" public static final boolean handleCommand(Command command, String detail){","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"hjuntan"},"content":" boolean isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"hjuntan"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"hjuntan"},"content":" switch (command){","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"hjuntan"},"content":" case List:","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"hjuntan"},"content":" if (listOfTasks.size() \u003d\u003d 0){","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"hjuntan"},"content":" throw new ToothlessException(\"Human list is empty like my tummy right now :/\");","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"hjuntan"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"hjuntan"},"content":" for (int i \u003d 0; i \u003c listOfTasks.size(); i++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"hjuntan"},"content":" Task t \u003d listOfTasks.get(i);","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"hjuntan"},"content":" printTaskState(t, i);","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"hjuntan"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"hjuntan"},"content":" case Mark:{","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"hjuntan"},"content":" int taskIndex \u003d getTaskIndex(detail);","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"hjuntan"},"content":" if (taskIndex \u003e\u003d listOfTasks.size() || taskIndex \u003c 0 || detail.equals(\"\")){","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"hjuntan"},"content":" throw new ToothlessException(\"Human trying to mark nothing ^O^. Foolish\");","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"hjuntan"},"content":" Task t \u003d listOfTasks.get(taskIndex);","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"hjuntan"},"content":" t.markAsDone();","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"hjuntan"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"hjuntan"},"content":" printTaskState(t, taskIndex);","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"hjuntan"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"hjuntan"},"content":" case Unmark:{","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"hjuntan"},"content":" int taskIndex \u003d getTaskIndex(detail);","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"hjuntan"},"content":" if (taskIndex \u003e\u003d listOfTasks.size() || taskIndex \u003c 0 || detail.equals(\"\")){","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"hjuntan"},"content":" throw new ToothlessException(\"Human trying to unmark nothing ^O^. Silly\");","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"hjuntan"},"content":" Task t \u003d listOfTasks.get(taskIndex);","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"hjuntan"},"content":" t.markAsNotDone();","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"hjuntan"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"hjuntan"},"content":" printTaskState(t, taskIndex);","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"hjuntan"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"hjuntan"},"content":" case Delete:{","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"hjuntan"},"content":" int taskIndex \u003d getTaskIndex(detail);","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"hjuntan"},"content":" if (taskIndex \u003e\u003d listOfTasks.size() || taskIndex \u003c 0 || detail.equals(\"\")){","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"hjuntan"},"content":" throw new ToothlessException(\"Human trying to delete nothing ^O^. Absurd\");","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"hjuntan"},"content":" Task t \u003d listOfTasks.get(taskIndex);","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"hjuntan"},"content":" listOfTasks.remove(taskIndex);","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"hjuntan"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"hjuntan"},"content":" printTaskState(t, taskIndex);","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"hjuntan"},"content":" System.out.format(\"Now you have %d tasks in the list.\\n\", listOfTasks.size());","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"hjuntan"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"hjuntan"},"content":" case Todo:","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"hjuntan"},"content":" case Deadline:","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"hjuntan"},"content":" case Event:{","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"hjuntan"},"content":" Task t \u003d createTask(command, detail);","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"hjuntan"},"content":" listOfTasks.add(t);","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"hjuntan"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"hjuntan"},"content":" printTaskState(t, listOfTasks.size() - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"hjuntan"},"content":" System.out.format(\"Now you have %d tasks in the list.\\n\", listOfTasks.size());","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"hjuntan"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":73,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"hjuntan"},"content":" case Bye:","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"hjuntan"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":76,"author":{"gitId":"hjuntan"},"content":" System.out.println(exitString);","lastModifiedDate":"2024-01-24"},{"lineNumber":77,"author":{"gitId":"hjuntan"},"content":" writeTasks();","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"hjuntan"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":79,"author":{"gitId":"hjuntan"},"content":" case Invalid:","lastModifiedDate":"2024-01-24"},{"lineNumber":80,"author":{"gitId":"hjuntan"},"content":" throw new ToothlessException(\"Me dragon, no understand this action :P\");","lastModifiedDate":"2024-01-24"},{"lineNumber":81,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":82,"author":{"gitId":"hjuntan"},"content":" } catch (ToothlessException e){","lastModifiedDate":"2024-01-24"},{"lineNumber":83,"author":{"gitId":"hjuntan"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-24"},{"lineNumber":84,"author":{"gitId":"hjuntan"},"content":" } finally {","lastModifiedDate":"2024-01-24"},{"lineNumber":85,"author":{"gitId":"hjuntan"},"content":" System.out.println(splitLine);","lastModifiedDate":"2024-01-24"},{"lineNumber":86,"author":{"gitId":"hjuntan"},"content":" return isDone;","lastModifiedDate":"2024-01-24"},{"lineNumber":87,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":88,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":89,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":90,"author":{"gitId":"hjuntan"},"content":" public static final Task createTask(Command c, String detail) throws ToothlessException{","lastModifiedDate":"2024-01-24"},{"lineNumber":91,"author":{"gitId":"hjuntan"},"content":" if(detail.equals(\"\")){","lastModifiedDate":"2024-01-24"},{"lineNumber":92,"author":{"gitId":"hjuntan"},"content":" throw new ToothlessException(\"Human task no name :(\");","lastModifiedDate":"2024-01-24"},{"lineNumber":93,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":94,"author":{"gitId":"hjuntan"},"content":" Task newTask;","lastModifiedDate":"2024-01-24"},{"lineNumber":95,"author":{"gitId":"hjuntan"},"content":" switch (c){","lastModifiedDate":"2024-01-24"},{"lineNumber":96,"author":{"gitId":"hjuntan"},"content":" case Todo:{","lastModifiedDate":"2024-01-24"},{"lineNumber":97,"author":{"gitId":"hjuntan"},"content":" newTask \u003d new Todo(detail);","lastModifiedDate":"2024-01-24"},{"lineNumber":98,"author":{"gitId":"hjuntan"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":99,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":100,"author":{"gitId":"hjuntan"},"content":" case Deadline:{","lastModifiedDate":"2024-01-24"},{"lineNumber":101,"author":{"gitId":"hjuntan"},"content":" int dateIndex \u003d detail.indexOf(\"/by\");","lastModifiedDate":"2024-01-24"},{"lineNumber":102,"author":{"gitId":"hjuntan"},"content":" if (dateIndex \u003d\u003d -1){","lastModifiedDate":"2024-01-24"},{"lineNumber":103,"author":{"gitId":"hjuntan"},"content":" throw new ToothlessException(\"Human deadline no deadline @_@\");","lastModifiedDate":"2024-01-24"},{"lineNumber":104,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":105,"author":{"gitId":"hjuntan"},"content":" String description \u003d detail.substring(0, dateIndex - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":106,"author":{"gitId":"hjuntan"},"content":" String date \u003d detail.substring(dateIndex + 4);","lastModifiedDate":"2024-01-24"},{"lineNumber":107,"author":{"gitId":"hjuntan"},"content":" newTask \u003d new Deadline(description, date);","lastModifiedDate":"2024-01-24"},{"lineNumber":108,"author":{"gitId":"hjuntan"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":109,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":110,"author":{"gitId":"hjuntan"},"content":" default: {","lastModifiedDate":"2024-01-24"},{"lineNumber":111,"author":{"gitId":"hjuntan"},"content":" int date1Index \u003d detail.indexOf(\"/from\");","lastModifiedDate":"2024-01-24"},{"lineNumber":112,"author":{"gitId":"hjuntan"},"content":" if (date1Index \u003d\u003d -1){","lastModifiedDate":"2024-01-24"},{"lineNumber":113,"author":{"gitId":"hjuntan"},"content":" throw new ToothlessException(\"Human event no start date D:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":114,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":115,"author":{"gitId":"hjuntan"},"content":" String description \u003d detail.substring(0, date1Index - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":116,"author":{"gitId":"hjuntan"},"content":" detail \u003d detail.substring(date1Index + 6);","lastModifiedDate":"2024-01-24"},{"lineNumber":117,"author":{"gitId":"hjuntan"},"content":" int date2Index \u003d detail.indexOf(\"/to\");","lastModifiedDate":"2024-01-24"},{"lineNumber":118,"author":{"gitId":"hjuntan"},"content":" if (date2Index \u003d\u003d -1){","lastModifiedDate":"2024-01-24"},{"lineNumber":119,"author":{"gitId":"hjuntan"},"content":" throw new ToothlessException(\"Human event no end date D:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":120,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":121,"author":{"gitId":"hjuntan"},"content":" String startDate \u003d detail.substring(0, date2Index - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":122,"author":{"gitId":"hjuntan"},"content":" String endDate \u003d detail.substring(date2Index + 4);","lastModifiedDate":"2024-01-24"},{"lineNumber":123,"author":{"gitId":"hjuntan"},"content":" newTask \u003d new Event(description, startDate, endDate);","lastModifiedDate":"2024-01-24"},{"lineNumber":124,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":125,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":126,"author":{"gitId":"hjuntan"},"content":" return newTask;","lastModifiedDate":"2024-01-24"},{"lineNumber":127,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":128,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":129,"author":{"gitId":"hjuntan"},"content":" public static void loadTasks(String filepath) throws FileNotFoundException, ToothlessException{","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"hjuntan"},"content":" File file \u003d new File(filepath);","lastModifiedDate":"2024-01-30"},{"lineNumber":131,"author":{"gitId":"hjuntan"},"content":" Scanner sc \u003d new Scanner(file);","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"hjuntan"},"content":" while (sc.hasNext()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":133,"author":{"gitId":"hjuntan"},"content":" Task task;","lastModifiedDate":"2024-01-30"},{"lineNumber":134,"author":{"gitId":"hjuntan"},"content":" String[] storedTask \u003d sc.nextLine().split(\" \\\\| \");","lastModifiedDate":"2024-01-30"},{"lineNumber":135,"author":{"gitId":"hjuntan"},"content":" switch (storedTask[0]){","lastModifiedDate":"2024-01-30"},{"lineNumber":136,"author":{"gitId":"hjuntan"},"content":" case \"T\":","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"hjuntan"},"content":" task \u003d new Todo(storedTask[2], storedTask[1].equals(\"1\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"hjuntan"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":139,"author":{"gitId":"hjuntan"},"content":" case \"D\":","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"hjuntan"},"content":" task \u003d new Deadline(storedTask[2], storedTask[3], storedTask[1].equals(\"1\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":141,"author":{"gitId":"hjuntan"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"hjuntan"},"content":" case \"E\":","lastModifiedDate":"2024-01-30"},{"lineNumber":143,"author":{"gitId":"hjuntan"},"content":" task \u003d new Event(storedTask[2], storedTask[3], storedTask[4], storedTask[1].equals(\"1\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":144,"author":{"gitId":"hjuntan"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":145,"author":{"gitId":"hjuntan"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":146,"author":{"gitId":"hjuntan"},"content":" throw new ToothlessException(\"File corrupted O_O. Try again later.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":147,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":148,"author":{"gitId":"hjuntan"},"content":" listOfTasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":149,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":150,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":151,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":152,"author":{"gitId":"hjuntan"},"content":" public static void writeTasks(){","lastModifiedDate":"2024-01-30"},{"lineNumber":153,"author":{"gitId":"hjuntan"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":154,"author":{"gitId":"hjuntan"},"content":" new File(\"./data/toothless.txt\").getParentFile().mkdirs();","lastModifiedDate":"2024-01-30"},{"lineNumber":155,"author":{"gitId":"hjuntan"},"content":" FileWriter writer \u003d new FileWriter(\"./data/toothless.txt\");","lastModifiedDate":"2024-01-30"},{"lineNumber":156,"author":{"gitId":"hjuntan"},"content":" for (Task task : listOfTasks){","lastModifiedDate":"2024-01-30"},{"lineNumber":157,"author":{"gitId":"hjuntan"},"content":" writer.write(task.toWrite() + \"\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":158,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":159,"author":{"gitId":"hjuntan"},"content":" writer.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":160,"author":{"gitId":"hjuntan"},"content":" } catch (FileNotFoundException e){","lastModifiedDate":"2024-01-30"},{"lineNumber":161,"author":{"gitId":"hjuntan"},"content":" System.err.println(\"Unable to find task list :(\");","lastModifiedDate":"2024-01-30"},{"lineNumber":162,"author":{"gitId":"hjuntan"},"content":" } catch (IOException e){","lastModifiedDate":"2024-01-30"},{"lineNumber":163,"author":{"gitId":"hjuntan"},"content":" System.err.println(\"Unable to save task :(\");","lastModifiedDate":"2024-01-30"},{"lineNumber":164,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":165,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":166,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":167,"author":{"gitId":"hjuntan"},"content":" public static int getTaskIndex(String detail) throws ToothlessException{","lastModifiedDate":"2024-01-24"},{"lineNumber":168,"author":{"gitId":"hjuntan"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":169,"author":{"gitId":"hjuntan"},"content":" int taskIndex \u003d Integer.valueOf(detail);","lastModifiedDate":"2024-01-24"},{"lineNumber":170,"author":{"gitId":"hjuntan"},"content":" return taskIndex - 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":171,"author":{"gitId":"hjuntan"},"content":" } catch (NumberFormatException e){","lastModifiedDate":"2024-01-24"},{"lineNumber":172,"author":{"gitId":"hjuntan"},"content":" throw new ToothlessException(\"Number put is not number.\\nPlease put real number ._.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":173,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":174,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":175,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":176,"author":{"gitId":"hjuntan"},"content":" public static void printTaskState(Task task, int index){","lastModifiedDate":"2024-01-24"},{"lineNumber":177,"author":{"gitId":"hjuntan"},"content":" System.out.format(\"%d. [\"+ task.getTaskIcon()+\"][\"+ task.getStatusIcon() + \"] \" + task + \"\\n\", index + 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":178,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":179,"author":{"gitId":"hjuntan"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"hjuntan":179}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"hjuntan"},"content":"public class Deadline extends Task{","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"hjuntan"},"content":" private String date;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"hjuntan"},"content":" public Deadline(String description, String date){","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"hjuntan"},"content":" super.description \u003d description;","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"hjuntan"},"content":" this.date \u003d date;","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"hjuntan"},"content":" public Deadline(String description, String date, boolean isDone){","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"hjuntan"},"content":" super.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"hjuntan"},"content":" super.isDone \u003d isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"hjuntan"},"content":" this.date \u003d date;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"hjuntan"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"hjuntan"},"content":" public String getTaskIcon() {","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"hjuntan"},"content":" return \"D\";","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"hjuntan"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"hjuntan"},"content":" public String toWrite(){","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"hjuntan"},"content":" return \"D | \" + super.toWrite() + \" | \" + this.date;","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"hjuntan"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"hjuntan"},"content":" public String toString(){","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"hjuntan"},"content":" return this.description + \" (by: \"+ this.date + \")\";","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"hjuntan"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"hjuntan":29}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"hjuntan"},"content":"public class Event extends Task{","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"hjuntan"},"content":" private String startDate;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"hjuntan"},"content":" private String endDate;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"hjuntan"},"content":" public Event(String description, String startDate, String endDate){","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"hjuntan"},"content":" super.description \u003d description;","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"hjuntan"},"content":" this.startDate \u003d startDate;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"hjuntan"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"hjuntan"},"content":" public Event(String description, String startDate, String endDate, boolean isDone){","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"hjuntan"},"content":" super.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"hjuntan"},"content":" super.isDone \u003d isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"hjuntan"},"content":" this.startDate \u003d startDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"hjuntan"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"hjuntan"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"hjuntan"},"content":" public String getTaskIcon() {","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"hjuntan"},"content":" return \"E\";","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"hjuntan"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"hjuntan"},"content":" public String toWrite(){","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"hjuntan"},"content":" return \"E | \" + super.toWrite() + \" | \" + this.startDate + \" | \" + this.endDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"hjuntan"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"hjuntan"},"content":" public String toString(){","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"hjuntan"},"content":" return this.description + \" (from: \" + this.startDate + \" to: \" + this.endDate + \")\";","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"hjuntan"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"hjuntan":32}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"hjuntan"},"content":"public abstract class Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"hjuntan"},"content":" protected String description;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"hjuntan"},"content":" protected boolean isDone \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"hjuntan"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"hjuntan"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"hjuntan"},"content":" return this.description;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"hjuntan"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"hjuntan"},"content":" return this.isDone ? \"X\": \" \"; // mark done task with X","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"hjuntan"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"hjuntan"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"hjuntan"},"content":" public void markAsNotDone(){","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"hjuntan"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"hjuntan"},"content":" public String toWrite(){","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"hjuntan"},"content":" return (isDone ? 1 : 0) + \" | \" + this.description;","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"hjuntan"},"content":" public abstract String getTaskIcon();","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"hjuntan"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"hjuntan":27}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"hjuntan"},"content":"public class Todo extends Task{","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"hjuntan"},"content":" public Todo(String description){","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"hjuntan"},"content":" super.description \u003d description;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"hjuntan"},"content":" public Todo(String description, boolean isDone){","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"hjuntan"},"content":" super.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"hjuntan"},"content":" super.isDone \u003d isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"hjuntan"},"content":" public String getTaskIcon(){","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"hjuntan"},"content":" return \"T\";","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"hjuntan"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"hjuntan"},"content":" public String toWrite(){","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"hjuntan"},"content":" return \"T | \" + super.toWrite();","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"hjuntan"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"hjuntan":20}},{"path":"src/main/java/Toothless.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"hjuntan"},"content":"import java.io.File;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"hjuntan"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"hjuntan"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"hjuntan"},"content":"public class Toothless {","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"hjuntan"},"content":" private String splitLine \u003d \"____________________________________________________________\";","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"hjuntan"},"content":" private String chatBotName \u003d \"Toothless\";","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"hjuntan"},"content":" private String greetingString \u003d \"Hi! \"+ chatBotName +\" is \" + chatBotName + \"!\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"hjuntan"},"content":" + \"What can \" + chatBotName + \" do for human?\\n\" + splitLine;","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"hjuntan"},"content":" public Toothless(String filepath){","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"hjuntan"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"hjuntan"},"content":" Command.loadTasks(filepath);","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"hjuntan"},"content":" } catch (FileNotFoundException e){","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"hjuntan"},"content":" System.out.println(\"Can\u0027t Find Task File!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"hjuntan"},"content":" } catch (ToothlessException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"hjuntan"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"hjuntan"},"content":" public void start(Scanner sc) {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"hjuntan"},"content":" String input;","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"hjuntan"},"content":" Command command;","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"hjuntan"},"content":" boolean isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"hjuntan"},"content":" System.out.println(splitLine + \"\\n\" + greetingString);","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"hjuntan"},"content":" while(!isDone){","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"hjuntan"},"content":" input \u003d sc.nextLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"hjuntan"},"content":" System.out.println(splitLine);","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"hjuntan"},"content":" int detailIndex \u003d input.indexOf(\" \");","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"hjuntan"},"content":" String detail;","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"hjuntan"},"content":" if (detailIndex \u003d\u003d -1){","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"hjuntan"},"content":" detail \u003d \"\";","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"hjuntan"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"hjuntan"},"content":" detail \u003d input.substring(detailIndex + 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"hjuntan"},"content":" if(input.startsWith(\"unmark\")){","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"hjuntan"},"content":" command \u003d Command.Unmark;","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"hjuntan"},"content":" else if(input.startsWith(\"mark\")){","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"hjuntan"},"content":" command \u003d Command.Mark;","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"hjuntan"},"content":" else if(input.startsWith(\"delete\")){","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"hjuntan"},"content":" command \u003d Command.Delete;","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"hjuntan"},"content":" else if (input.startsWith(\"todo\")){","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"hjuntan"},"content":" command \u003d Command.Todo;","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"hjuntan"},"content":" else if (input.startsWith(\"deadline\")){","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"hjuntan"},"content":" command \u003d Command.Deadline;","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":53,"author":{"gitId":"hjuntan"},"content":" else if (input.startsWith(\"event\")){","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"hjuntan"},"content":" command \u003d Command.Event;","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":56,"author":{"gitId":"hjuntan"},"content":" else if (input.startsWith(\"list\")){","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"hjuntan"},"content":" command \u003d Command.List;","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":59,"author":{"gitId":"hjuntan"},"content":" else if(input.startsWith(\"bye\")){","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"hjuntan"},"content":" command \u003d Command.Bye;","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"hjuntan"},"content":" } else{","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"hjuntan"},"content":" command \u003d Command.Invalid;","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":64,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":65,"author":{"gitId":"hjuntan"},"content":" isDone \u003d Command.handleCommand(command, detail);","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":68,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"hjuntan"},"content":" public static void main(String[] args){","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"hjuntan"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"hjuntan"},"content":" Toothless toothless \u003d new Toothless(\"./data/toothless.txt\");","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"hjuntan"},"content":" toothless.start(sc);","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"hjuntan"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"hjuntan":76}},{"path":"src/main/java/ToothlessException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"hjuntan"},"content":"public class ToothlessException extends Exception{","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"hjuntan"},"content":" ToothlessException(String message){","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"hjuntan"},"content":" super(message);","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"hjuntan"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"hjuntan":5}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"hjuntan"},"content":"todo simple task","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"hjuntan"},"content":"deadline simple assignment /by today","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"hjuntan"},"content":"event simple celebration /from 26 Jan 4pm /to 26 Jan 6pm","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"hjuntan"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"hjuntan"},"content":"mark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"hjuntan"},"content":"mark 3","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"hjuntan"},"content":"unmark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"hjuntan"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"hjuntan"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"hjuntan":9}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"hjuntan"},"content":"java -classpath ..\\bin Toothless \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"hjuntan":1,"-":20}}] diff --git a/hjuntan_ip_master/commits.json b/hjuntan_ip_master/commits.json index 663fefc2..e191d9a9 100644 --- a/hjuntan_ip_master/commits.json +++ b/hjuntan_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"hjuntan":[{"date":"2024-01-23","commitResults":[{"hash":"1386db393d79c421c2508153acf4f5a661aa8a45","isMergeCommit":false,"messageTitle":"Implement skeletal version of chatbbot Change name of chatbot from Duke to Toothless","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":10}}},{"hash":"3f369398882df76950b1a1c957ec8427d9882da1","isMergeCommit":false,"messageTitle":"Toothless will now echo the command entered by the user, and exit when the user types the command \"bye\"","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":1}}},{"hash":"aaf328ec6841185e1ede057c62991a967ff081dc","isMergeCommit":false,"messageTitle":"Add the ability to store whatever text entered by the user and display them back to the user when requested using the command \"list\".","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":9}}},{"hash":"d6fae37a3ac3a6399714c7ae9404500cba364206","isMergeCommit":false,"messageTitle":"Changed loop logic of chatbot","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":4}}},{"hash":"cf03063ba127d97ac21e7dc1d80570f13135aa40","isMergeCommit":false,"messageTitle":"Added the mark feature to Task","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":1}}},{"hash":"25109cbdeae80a5b794e683c1738c7bfc9cb263d","isMergeCommit":false,"messageTitle":"Added the ability to mark and unmark tasks as done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":9}}},{"hash":"23571cfaa90200220d44bfe9986111aaeb1b35f9","isMergeCommit":false,"messageTitle":"Implement the ability to create a todo, which is similar to task.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":15}}},{"hash":"4a89a2e63add42cceb0ab5f04286b92c7b98ff40","isMergeCommit":false,"messageTitle":"Implement the ability to create deadlines","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":2}}},{"hash":"194d6123ae42eb075791df70b0c4903f7634e0d4","isMergeCommit":false,"messageTitle":"Implement the ability to create events","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":1}}}]},{"date":"2024-01-24","commitResults":[{"hash":"4ce83d4eb85c643fd42b77f9f4cf3821167dd5d6","isMergeCommit":false,"messageTitle":"Added a semi-automated testing of Toothless","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"bat":{"insertions":1,"deletions":1}}},{"hash":"3761e595117bcba5b0caecdc50c5254cf911f1ee","isMergeCommit":false,"messageTitle":"Refactor code to handle commands as enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":119,"deletions":62}}},{"hash":"fbe46c4d8cf5071a9e8abf948ebfce53233bd87f","isMergeCommit":false,"messageTitle":"Handle some errors for mark, unmark, todo, deadline, event","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":9}}},{"hash":"0a33e835e2d0e134ad6eef10ad6b2949b18663ce","isMergeCommit":false,"messageTitle":"Better handle errors of mark and unmark","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":14}}},{"hash":"a53dd4a101782872c7fcaa1da8a0562c6eb7e97b","isMergeCommit":false,"messageTitle":"Handle minor error of list","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":0}}},{"hash":"f7354ca671f6cebcc424df4a694754b61e1a979e","isMergeCommit":false,"messageTitle":"Implement to ability to delete task","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":3}}}]}]},"authorFileTypeContributionMap":{"hjuntan":{"java":270,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":9}},"authorContributionVariance":{"hjuntan":17020.805},"authorDisplayNameMap":{"hjuntan":"CS2103T-T15-2 TAN .. JUN"}} +{"authorDailyContributionsMap":{"hjuntan":[{"date":"2024-01-23","commitResults":[{"hash":"1386db393d79c421c2508153acf4f5a661aa8a45","isMergeCommit":false,"messageTitle":"Implement skeletal version of chatbbot Change name of chatbot from Duke to Toothless","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":10}}},{"hash":"3f369398882df76950b1a1c957ec8427d9882da1","isMergeCommit":false,"messageTitle":"Toothless will now echo the command entered by the user, and exit when the user types the command \"bye\"","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":1}}},{"hash":"aaf328ec6841185e1ede057c62991a967ff081dc","isMergeCommit":false,"messageTitle":"Add the ability to store whatever text entered by the user and display them back to the user when requested using the command \"list\".","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":9}}},{"hash":"d6fae37a3ac3a6399714c7ae9404500cba364206","isMergeCommit":false,"messageTitle":"Changed loop logic of chatbot","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":4}}},{"hash":"cf03063ba127d97ac21e7dc1d80570f13135aa40","isMergeCommit":false,"messageTitle":"Added the mark feature to Task","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":1}}},{"hash":"25109cbdeae80a5b794e683c1738c7bfc9cb263d","isMergeCommit":false,"messageTitle":"Added the ability to mark and unmark tasks as done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":9}}},{"hash":"23571cfaa90200220d44bfe9986111aaeb1b35f9","isMergeCommit":false,"messageTitle":"Implement the ability to create a todo, which is similar to task.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":15}}},{"hash":"4a89a2e63add42cceb0ab5f04286b92c7b98ff40","isMergeCommit":false,"messageTitle":"Implement the ability to create deadlines","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":2}}},{"hash":"194d6123ae42eb075791df70b0c4903f7634e0d4","isMergeCommit":false,"messageTitle":"Implement the ability to create events","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":1}}}]},{"date":"2024-01-24","commitResults":[{"hash":"4ce83d4eb85c643fd42b77f9f4cf3821167dd5d6","isMergeCommit":false,"messageTitle":"Added a semi-automated testing of Toothless","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"bat":{"insertions":1,"deletions":1}}},{"hash":"3761e595117bcba5b0caecdc50c5254cf911f1ee","isMergeCommit":false,"messageTitle":"Refactor code to handle commands as enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":119,"deletions":62}}},{"hash":"fbe46c4d8cf5071a9e8abf948ebfce53233bd87f","isMergeCommit":false,"messageTitle":"Handle some errors for mark, unmark, todo, deadline, event","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":9}}},{"hash":"0a33e835e2d0e134ad6eef10ad6b2949b18663ce","isMergeCommit":false,"messageTitle":"Better handle errors of mark and unmark","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":14}}},{"hash":"a53dd4a101782872c7fcaa1da8a0562c6eb7e97b","isMergeCommit":false,"messageTitle":"Handle minor error of list","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":0}}},{"hash":"f7354ca671f6cebcc424df4a694754b61e1a979e","isMergeCommit":false,"messageTitle":"Implement to ability to delete task","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":3}}}]},{"date":"2024-01-29","commitResults":[{"hash":"290df0236a345a20ef002a1ef58a060312e92b10","isMergeCommit":false,"messageTitle":"Add a data file path","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":5}}}]},{"date":"2024-01-30","commitResults":[{"hash":"64b3a9207350afe3c5b0ae33dabe97c136848677","isMergeCommit":false,"messageTitle":"Implement a method to store tasks in a txt file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":2}}},{"hash":"fd81a6c0576bc240bb4ea0e1febf7411e070f9dc","isMergeCommit":false,"messageTitle":"Add ability to load task into array list from text file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":6}}},{"hash":"c1a5972b9e1ed5e921b093957fb30b5674e80f9b","isMergeCommit":false,"messageTitle":"Bug fix to load tasks properly","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":6}}},{"hash":"4f604d9999ec75ebdd2f28655b8218135ea2b68e","isMergeCommit":false,"messageTitle":"Clean up code","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":5}}},{"hash":"f886a7873c74b7d656a13c822d92cdd183f9d5bc","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"hjuntan":{"java":368,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":9}},"authorContributionVariance":{"hjuntan":10564.243},"authorDisplayNameMap":{"hjuntan":"CS2103T-T15-2 TAN .. JUN"}} diff --git a/irwynliong_ip_master/authorship.json b/irwynliong_ip_master/authorship.json index d6061294..f2dcfaf8 100644 --- a/irwynliong_ip_master/authorship.json +++ b/irwynliong_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/CommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"irwynliong"},"content":"public class CommandException extends InputException {","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"irwynliong"},"content":" public CommandException() {","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"irwynliong"},"content":" super(","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"irwynliong"},"content":" \"Sorry, Invalid Command\\n\"","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"irwynliong"},"content":" + \"use /by (date/time) for deadlines or use /from (date/time) and /to (date/time) for events\\n\"","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"irwynliong"},"content":" + \"Please try again!\\n\"","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"irwynliong"},"content":" );","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"irwynliong"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"irwynliong":9}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"irwynliong"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"irwynliong"},"content":" protected String by;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"irwynliong"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"irwynliong"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"irwynliong"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"irwynliong"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"irwynliong"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"irwynliong"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"irwynliong"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"irwynliong":14}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"irwynliong"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"irwynliong"},"content":" protected String start;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"irwynliong"},"content":" protected String end;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"irwynliong"},"content":" public Event (String description, String start, String end) {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"irwynliong"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"irwynliong"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"irwynliong"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"irwynliong"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"irwynliong"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"irwynliong"},"content":" return \"[E]\" + super.toString() + \" (from: \" + start + \" to: \" + end + \")\";","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"irwynliong"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"irwynliong":16}},{"path":"src/main/java/InputException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"irwynliong"},"content":"public class InputException extends IrwynException {","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"irwynliong"},"content":" public InputException(String msg) {","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"irwynliong"},"content":" super(msg);","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"irwynliong"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"irwynliong":5}},{"path":"src/main/java/Irwyn.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"irwynliong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"irwynliong"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"irwynliong"},"content":"public class Irwyn {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"irwynliong"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"irwynliong"},"content":" String linebreak \u003d \"____________________________________________________________\\n\";","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"irwynliong"},"content":" ArrayList\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"irwynliong"},"content":" String start \u003d linebreak","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"irwynliong"},"content":" + \"Hello! I\u0027m Irwyn\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"irwynliong"},"content":" + \"What can I do for you?\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"irwynliong"},"content":" + linebreak;","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"irwynliong"},"content":" System.out.println(start);","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"irwynliong"},"content":" Scanner input \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"irwynliong"},"content":" String userInput \u003d input.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"irwynliong"},"content":" while (!userInput.isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"irwynliong"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"irwynliong"},"content":" if (userInput.equals(\"bye\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"irwynliong"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"irwynliong"},"content":" } else if (userInput.startsWith(\"mark\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"irwynliong"},"content":" int index \u003d Integer.parseInt(userInput.split(\" \")[1]) - 1;","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"irwynliong"},"content":" list.get(index).isDone \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"irwynliong"},"content":" System.out.println(linebreak","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"irwynliong"},"content":" + \"Nice! I\u0027ve marked this task as done:\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"irwynliong"},"content":" + \" \" + list.get(index) + \"\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"irwynliong"},"content":" + linebreak);","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"irwynliong"},"content":" } else if (userInput.startsWith(\"unmark\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"irwynliong"},"content":" int index \u003d Integer.parseInt(userInput.split(\" \")[1]) - 1;","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"irwynliong"},"content":" list.get(index).isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"irwynliong"},"content":" System.out.println(linebreak","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"irwynliong"},"content":" + \"OK, I\u0027ve marked this task as not done yet:\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"irwynliong"},"content":" + \" \" + list.get(index) + \"\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"irwynliong"},"content":" + linebreak);","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"irwynliong"},"content":" } else if (userInput.equals(\"list\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"irwynliong"},"content":" System.out.println(linebreak","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"irwynliong"},"content":" + \"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"irwynliong"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"irwynliong"},"content":" System.out.println(i + 1 + \".\" + list.get(i));","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"irwynliong"},"content":" System.out.println(linebreak);","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"irwynliong"},"content":" } else if (userInput.startsWith(\"todo\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"irwynliong"},"content":" if (userInput.trim().equals(\"todo\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"irwynliong"},"content":" throw new InputException(\"Description of a todo cannot be empty!\\n\");","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"irwynliong"},"content":" String taskDescription \u003d userInput.substring(5);","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"irwynliong"},"content":" list.add(new ToDo(taskDescription));","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"irwynliong"},"content":" System.out.println(linebreak","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"irwynliong"},"content":" + \"Got it. I\u0027ve added this task:\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"irwynliong"},"content":" + \" \" + list.get(list.size() - 1) + \"\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"irwynliong"},"content":" + \"Now you have \" + list.size() + \" tasks in the list.\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"irwynliong"},"content":" + linebreak);","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"irwynliong"},"content":" } else if (userInput.startsWith(\"deadline\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"irwynliong"},"content":" if (!userInput.contains(\" /by \")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":55,"author":{"gitId":"irwynliong"},"content":" throw new CommandException();","lastModifiedDate":"2024-01-26"},{"lineNumber":56,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":57,"author":{"gitId":"irwynliong"},"content":" String[] parts \u003d userInput.split(\" /by \");","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"irwynliong"},"content":" String taskDescription \u003d parts[0].substring(9);","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"irwynliong"},"content":" String by \u003d parts[1];","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"irwynliong"},"content":" list.add(new Deadline(taskDescription, by));","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"irwynliong"},"content":" System.out.println(linebreak","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"irwynliong"},"content":" + \"Got it. I\u0027ve added this task:\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"irwynliong"},"content":" + \" \" + list.get(list.size() - 1) + \"\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"irwynliong"},"content":" + \"Now you have \" + list.size() + \" tasks in the list.\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"irwynliong"},"content":" + linebreak);","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"irwynliong"},"content":" } else if (userInput.startsWith(\"event\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"irwynliong"},"content":" if (!userInput.contains(\" /from \") || !userInput.contains(\" /to \")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":68,"author":{"gitId":"irwynliong"},"content":" throw new CommandException();","lastModifiedDate":"2024-01-26"},{"lineNumber":69,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":70,"author":{"gitId":"irwynliong"},"content":" String[] parts \u003d userInput.split(\" /from | /to \");","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"irwynliong"},"content":" String taskDescription \u003d parts[0].substring(6);","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"irwynliong"},"content":" String from \u003d parts[1];","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"irwynliong"},"content":" String to \u003d parts[2];","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"irwynliong"},"content":" list.add(new Event(taskDescription, from, to));","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"irwynliong"},"content":" System.out.println(linebreak","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"irwynliong"},"content":" + \"Got it. I\u0027ve added this task:\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"irwynliong"},"content":" + \" \" + list.get(list.size() - 1) + \"\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"irwynliong"},"content":" + \"Now you have \" + list.size() + \" tasks in the list.\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":79,"author":{"gitId":"irwynliong"},"content":" + linebreak);","lastModifiedDate":"2024-01-25"},{"lineNumber":80,"author":{"gitId":"irwynliong"},"content":" } else if (userInput.startsWith(\"delete\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":81,"author":{"gitId":"irwynliong"},"content":" int index \u003d Integer.parseInt(userInput.split(\" \")[1]) - 1;","lastModifiedDate":"2024-01-26"},{"lineNumber":82,"author":{"gitId":"irwynliong"},"content":" Task removedTask \u003d list.remove(index);","lastModifiedDate":"2024-01-26"},{"lineNumber":83,"author":{"gitId":"irwynliong"},"content":" System.out.println(linebreak","lastModifiedDate":"2024-01-26"},{"lineNumber":84,"author":{"gitId":"irwynliong"},"content":" + \"Noted. I\u0027ve removed this task:\\n\"","lastModifiedDate":"2024-01-26"},{"lineNumber":85,"author":{"gitId":"irwynliong"},"content":" + \" \" + removedTask + \"\\n\"","lastModifiedDate":"2024-01-26"},{"lineNumber":86,"author":{"gitId":"irwynliong"},"content":" + \"Now you have \" + list.size() + \" tasks in the list.\\n\"","lastModifiedDate":"2024-01-26"},{"lineNumber":87,"author":{"gitId":"irwynliong"},"content":" + linebreak);","lastModifiedDate":"2024-01-26"},{"lineNumber":88,"author":{"gitId":"irwynliong"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":89,"author":{"gitId":"irwynliong"},"content":" throw new TaskException();","lastModifiedDate":"2024-01-26"},{"lineNumber":90,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":91,"author":{"gitId":"irwynliong"},"content":" } catch (InputException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":92,"author":{"gitId":"irwynliong"},"content":" System.out.println(linebreak","lastModifiedDate":"2024-01-25"},{"lineNumber":93,"author":{"gitId":"irwynliong"},"content":" + e.getMessage()","lastModifiedDate":"2024-01-26"},{"lineNumber":94,"author":{"gitId":"irwynliong"},"content":" + linebreak);","lastModifiedDate":"2024-01-25"},{"lineNumber":95,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":96,"author":{"gitId":"irwynliong"},"content":" userInput \u003d input.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":97,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":98,"author":{"gitId":"irwynliong"},"content":" String end \u003d linebreak","lastModifiedDate":"2024-01-25"},{"lineNumber":99,"author":{"gitId":"irwynliong"},"content":" + \"Bye. Hope to see you again soon!\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":100,"author":{"gitId":"irwynliong"},"content":" + linebreak;","lastModifiedDate":"2024-01-25"},{"lineNumber":101,"author":{"gitId":"irwynliong"},"content":" System.out.println(end);","lastModifiedDate":"2024-01-25"},{"lineNumber":102,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":103,"author":{"gitId":"irwynliong"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"irwynliong":103}},{"path":"src/main/java/IrwynException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"irwynliong"},"content":"public class IrwynException extends Exception {","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"irwynliong"},"content":" public IrwynException(String msg) {","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"irwynliong"},"content":" super(msg);","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"irwynliong"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"irwynliong":5}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"irwynliong"},"content":"public class Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"irwynliong"},"content":" protected String description;","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"irwynliong"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"irwynliong"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"irwynliong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"irwynliong"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"irwynliong"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"irwynliong"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"irwynliong"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"irwynliong"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"irwynliong"},"content":" return \"[\" + getStatusIcon() + \"] \" + description; // Override toString method to print task status","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"irwynliong"},"content":"}","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"irwynliong":19}},{"path":"src/main/java/TaskException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"irwynliong"},"content":"public class TaskException extends InputException {","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"irwynliong"},"content":" public TaskException() {","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"irwynliong"},"content":" super(","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"irwynliong"},"content":" \"Invalid task type\\n\"","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"irwynliong"},"content":" + \"Please use either todo | event | deadline\\n\"","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"irwynliong"},"content":" );","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"irwynliong"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"irwynliong":8}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"irwynliong"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"irwynliong"},"content":" public ToDo(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"irwynliong"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"irwynliong"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"irwynliong"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"irwynliong"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"irwynliong"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"irwynliong":11}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"irwynliong"},"content":"todo level-3","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"irwynliong"},"content":"todo level-4","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"irwynliong"},"content":"deadline project duke /by Thursday 2359hrs","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"irwynliong"},"content":"event hackathon /from Saturday 1000hrs /to Sunday 2000hrs","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"irwynliong"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"irwynliong"},"content":"mark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"irwynliong"},"content":"mark 2","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"irwynliong"},"content":"mark 3","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"irwynliong"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"irwynliong"},"content":"unmark 3","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"irwynliong"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"irwynliong"},"content":"bye","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"irwynliong":12}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"irwynliong"},"content":"echo ********** BUILD SUCCESS **********","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"irwynliong"},"content":"java -classpath ..\\bin Irwyn \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"irwynliong":2,"-":19}}] +[{"path":"src/main/java/Exceptions/CommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"irwynliong"},"content":"package Exceptions;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"irwynliong"},"content":"public class CommandException extends InputException {","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"irwynliong"},"content":" public CommandException() {","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"irwynliong"},"content":" super(","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"irwynliong"},"content":" \"Sorry, Invalid Command\\n\"","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"irwynliong"},"content":" + \"use /by (date/time) for deadlines or use /from (date/time) and /to (date/time) for events\\n\"","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"irwynliong"},"content":" + \"Please try again!\\n\"","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"irwynliong"},"content":" );","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"irwynliong"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"irwynliong":11}},{"path":"src/main/java/Exceptions/InputException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"irwynliong"},"content":"package Exceptions;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"irwynliong"},"content":"public class InputException extends IrwynException {","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"irwynliong"},"content":" public InputException(String msg) {","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"irwynliong"},"content":" super(msg);","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"irwynliong"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"irwynliong":7}},{"path":"src/main/java/Exceptions/IrwynException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"irwynliong"},"content":"package Exceptions;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"irwynliong"},"content":"public class IrwynException extends Exception {","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"irwynliong"},"content":" public IrwynException(String msg) {","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"irwynliong"},"content":" super(msg);","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"irwynliong"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"irwynliong":7}},{"path":"src/main/java/Exceptions/TaskException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"irwynliong"},"content":"package Exceptions;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"irwynliong"},"content":"public class TaskException extends InputException {","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"irwynliong"},"content":" public TaskException() {","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"irwynliong"},"content":" super(","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"irwynliong"},"content":" \"Invalid task type\\n\"","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"irwynliong"},"content":" + \"Please use either todo | event | deadline\\n\"","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"irwynliong"},"content":" );","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"irwynliong"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"irwynliong":10}},{"path":"src/main/java/Irwyn.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"irwynliong"},"content":"import Exceptions.CommandException;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"irwynliong"},"content":"import Exceptions.InputException;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"irwynliong"},"content":"import Exceptions.TaskException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"irwynliong"},"content":"import Tasks.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"irwynliong"},"content":"import Tasks.Event;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"irwynliong"},"content":"import Tasks.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"irwynliong"},"content":"import Tasks.ToDo;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"irwynliong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"irwynliong"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"irwynliong"},"content":"public class Irwyn {","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"irwynliong"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"irwynliong"},"content":" String linebreak \u003d \"____________________________________________________________\\n\";","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"irwynliong"},"content":" ArrayList\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"irwynliong"},"content":" String start \u003d linebreak","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"irwynliong"},"content":" + \"Hello! I\u0027m Irwyn\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"irwynliong"},"content":" + \"What can I do for you?\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"irwynliong"},"content":" + linebreak;","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"irwynliong"},"content":" System.out.println(start);","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"irwynliong"},"content":" Scanner input \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"irwynliong"},"content":" String userInput \u003d input.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"irwynliong"},"content":" while (!userInput.isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"irwynliong"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"irwynliong"},"content":" if (userInput.equals(\"bye\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"irwynliong"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"irwynliong"},"content":" } else if (userInput.startsWith(\"mark\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"irwynliong"},"content":" int index \u003d Integer.parseInt(userInput.split(\" \")[1]) - 1;","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"irwynliong"},"content":" list.get(index).mark();","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"irwynliong"},"content":" System.out.println(linebreak","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"irwynliong"},"content":" + \"Nice! I\u0027ve marked this task as done:\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"irwynliong"},"content":" + \" \" + list.get(index) + \"\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"irwynliong"},"content":" + linebreak);","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"irwynliong"},"content":" } else if (userInput.startsWith(\"unmark\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"irwynliong"},"content":" int index \u003d Integer.parseInt(userInput.split(\" \")[1]) - 1;","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"irwynliong"},"content":" list.get(index).unmark();","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"irwynliong"},"content":" System.out.println(linebreak","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"irwynliong"},"content":" + \"OK, I\u0027ve marked this task as not done yet:\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"irwynliong"},"content":" + \" \" + list.get(index) + \"\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"irwynliong"},"content":" + linebreak);","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"irwynliong"},"content":" } else if (userInput.equals(\"list\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"irwynliong"},"content":" System.out.println(linebreak","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"irwynliong"},"content":" + \"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"irwynliong"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"irwynliong"},"content":" System.out.println(i + 1 + \".\" + list.get(i));","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"irwynliong"},"content":" System.out.println(linebreak);","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"irwynliong"},"content":" } else if (userInput.startsWith(\"todo\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"irwynliong"},"content":" if (userInput.trim().equals(\"todo\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":53,"author":{"gitId":"irwynliong"},"content":" throw new InputException(\"Description of a todo cannot be empty!\\n\");","lastModifiedDate":"2024-01-26"},{"lineNumber":54,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":55,"author":{"gitId":"irwynliong"},"content":" String taskDescription \u003d userInput.substring(5);","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"irwynliong"},"content":" list.add(new ToDo(taskDescription));","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"irwynliong"},"content":" System.out.println(linebreak","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"irwynliong"},"content":" + \"Got it. I\u0027ve added this task:\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"irwynliong"},"content":" + \" \" + list.get(list.size() - 1) + \"\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"irwynliong"},"content":" + \"Now you have \" + list.size() + \" tasks in the list.\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"irwynliong"},"content":" + linebreak);","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"irwynliong"},"content":" } else if (userInput.startsWith(\"deadline\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"irwynliong"},"content":" if (!userInput.contains(\" /by \")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":64,"author":{"gitId":"irwynliong"},"content":" throw new CommandException();","lastModifiedDate":"2024-01-26"},{"lineNumber":65,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":66,"author":{"gitId":"irwynliong"},"content":" String[] parts \u003d userInput.split(\" /by \");","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"irwynliong"},"content":" String taskDescription \u003d parts[0].substring(9);","lastModifiedDate":"2024-01-25"},{"lineNumber":68,"author":{"gitId":"irwynliong"},"content":" String by \u003d parts[1];","lastModifiedDate":"2024-01-25"},{"lineNumber":69,"author":{"gitId":"irwynliong"},"content":" list.add(new Deadline(taskDescription, by));","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"irwynliong"},"content":" System.out.println(linebreak","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"irwynliong"},"content":" + \"Got it. I\u0027ve added this task:\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"irwynliong"},"content":" + \" \" + list.get(list.size() - 1) + \"\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"irwynliong"},"content":" + \"Now you have \" + list.size() + \" tasks in the list.\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"irwynliong"},"content":" + linebreak);","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"irwynliong"},"content":" } else if (userInput.startsWith(\"event\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"irwynliong"},"content":" if (!userInput.contains(\" /from \") || !userInput.contains(\" /to \")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":77,"author":{"gitId":"irwynliong"},"content":" throw new CommandException();","lastModifiedDate":"2024-01-26"},{"lineNumber":78,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":79,"author":{"gitId":"irwynliong"},"content":" String[] parts \u003d userInput.split(\" /from | /to \");","lastModifiedDate":"2024-01-25"},{"lineNumber":80,"author":{"gitId":"irwynliong"},"content":" String taskDescription \u003d parts[0].substring(6);","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"irwynliong"},"content":" String from \u003d parts[1];","lastModifiedDate":"2024-01-25"},{"lineNumber":82,"author":{"gitId":"irwynliong"},"content":" String to \u003d parts[2];","lastModifiedDate":"2024-01-25"},{"lineNumber":83,"author":{"gitId":"irwynliong"},"content":" list.add(new Event(taskDescription, from, to));","lastModifiedDate":"2024-01-25"},{"lineNumber":84,"author":{"gitId":"irwynliong"},"content":" System.out.println(linebreak","lastModifiedDate":"2024-01-25"},{"lineNumber":85,"author":{"gitId":"irwynliong"},"content":" + \"Got it. I\u0027ve added this task:\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":86,"author":{"gitId":"irwynliong"},"content":" + \" \" + list.get(list.size() - 1) + \"\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":87,"author":{"gitId":"irwynliong"},"content":" + \"Now you have \" + list.size() + \" tasks in the list.\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":88,"author":{"gitId":"irwynliong"},"content":" + linebreak);","lastModifiedDate":"2024-01-25"},{"lineNumber":89,"author":{"gitId":"irwynliong"},"content":" } else if (userInput.startsWith(\"delete\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":90,"author":{"gitId":"irwynliong"},"content":" int index \u003d Integer.parseInt(userInput.split(\" \")[1]) - 1;","lastModifiedDate":"2024-01-26"},{"lineNumber":91,"author":{"gitId":"irwynliong"},"content":" Task removedTask \u003d list.remove(index);","lastModifiedDate":"2024-01-26"},{"lineNumber":92,"author":{"gitId":"irwynliong"},"content":" System.out.println(linebreak","lastModifiedDate":"2024-01-26"},{"lineNumber":93,"author":{"gitId":"irwynliong"},"content":" + \"Noted. I\u0027ve removed this task:\\n\"","lastModifiedDate":"2024-01-26"},{"lineNumber":94,"author":{"gitId":"irwynliong"},"content":" + \" \" + removedTask + \"\\n\"","lastModifiedDate":"2024-01-26"},{"lineNumber":95,"author":{"gitId":"irwynliong"},"content":" + \"Now you have \" + list.size() + \" tasks in the list.\\n\"","lastModifiedDate":"2024-01-26"},{"lineNumber":96,"author":{"gitId":"irwynliong"},"content":" + linebreak);","lastModifiedDate":"2024-01-26"},{"lineNumber":97,"author":{"gitId":"irwynliong"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":98,"author":{"gitId":"irwynliong"},"content":" throw new TaskException();","lastModifiedDate":"2024-01-26"},{"lineNumber":99,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":100,"author":{"gitId":"irwynliong"},"content":" } catch (InputException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":101,"author":{"gitId":"irwynliong"},"content":" System.out.println(linebreak","lastModifiedDate":"2024-01-25"},{"lineNumber":102,"author":{"gitId":"irwynliong"},"content":" + e.getMessage()","lastModifiedDate":"2024-01-26"},{"lineNumber":103,"author":{"gitId":"irwynliong"},"content":" + linebreak);","lastModifiedDate":"2024-01-25"},{"lineNumber":104,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":105,"author":{"gitId":"irwynliong"},"content":" userInput \u003d input.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":106,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":107,"author":{"gitId":"irwynliong"},"content":" String end \u003d linebreak","lastModifiedDate":"2024-01-25"},{"lineNumber":108,"author":{"gitId":"irwynliong"},"content":" + \"Bye. Hope to see you again soon!\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":109,"author":{"gitId":"irwynliong"},"content":" + linebreak;","lastModifiedDate":"2024-01-25"},{"lineNumber":110,"author":{"gitId":"irwynliong"},"content":" System.out.println(end);","lastModifiedDate":"2024-01-25"},{"lineNumber":111,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":112,"author":{"gitId":"irwynliong"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"irwynliong":112}},{"path":"src/main/java/Tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"irwynliong"},"content":"package Tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"irwynliong"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"irwynliong"},"content":" protected String by;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"irwynliong"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"irwynliong"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"irwynliong"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"irwynliong"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"irwynliong"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"irwynliong"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"irwynliong"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"irwynliong":16}},{"path":"src/main/java/Tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"irwynliong"},"content":"package Tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"irwynliong"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"irwynliong"},"content":" protected String start;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"irwynliong"},"content":" protected String end;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"irwynliong"},"content":" public Event (String description, String start, String end) {","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"irwynliong"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"irwynliong"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"irwynliong"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"irwynliong"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"irwynliong"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"irwynliong"},"content":" return \"[E]\" + super.toString() + \" (from: \" + start + \" to: \" + end + \")\";","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"irwynliong"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"irwynliong":18}},{"path":"src/main/java/Tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"irwynliong"},"content":"package Tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"irwynliong"},"content":"public class Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"irwynliong"},"content":" protected String description;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"irwynliong"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"irwynliong"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"irwynliong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"irwynliong"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"irwynliong"},"content":" public void mark() {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"irwynliong"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"irwynliong"},"content":" public void unmark() {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"irwynliong"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"irwynliong"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"irwynliong"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"irwynliong"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"irwynliong"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"irwynliong"},"content":" return \"[\" + getStatusIcon() + \"] \" + description; // Override toString method to print task status","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"irwynliong"},"content":"}","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"irwynliong":26}},{"path":"src/main/java/Tasks/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"irwynliong"},"content":"package Tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"irwynliong"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"irwynliong"},"content":" public ToDo(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"irwynliong"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"irwynliong"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"irwynliong"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"irwynliong"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"irwynliong"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"irwynliong":13}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"irwynliong"},"content":"todo level-3","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"irwynliong"},"content":"todo level-4","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"irwynliong"},"content":"deadline project duke /by Thursday 2359hrs","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"irwynliong"},"content":"event hackathon /from Saturday 1000hrs /to Sunday 2000hrs","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"irwynliong"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"irwynliong"},"content":"mark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"irwynliong"},"content":"mark 2","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"irwynliong"},"content":"mark 3","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"irwynliong"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"irwynliong"},"content":"unmark 3","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"irwynliong"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"irwynliong"},"content":"bye","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"irwynliong":12}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"irwynliong"},"content":"echo ********** BUILD SUCCESS **********","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"irwynliong"},"content":"java -classpath ..\\bin Irwyn \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"irwynliong":2,"-":19}}] diff --git a/irwynliong_ip_master/commits.json b/irwynliong_ip_master/commits.json index 212da139..41bf45e0 100644 --- a/irwynliong_ip_master/commits.json +++ b/irwynliong_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"irwynliong":[{"date":"2024-01-25","commitResults":[{"hash":"fb2d401cc5cb1f4649b979a1d35b916529f86de4","isMergeCommit":false,"messageTitle":"Level 0. Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":0}}},{"hash":"45ebb4c5e3a13ad9683fa6bf5488f711da002d85","isMergeCommit":false,"messageTitle":"Level 1. Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":4}}},{"hash":"c547c1a901f66757b66a22d5143c2cffd03a4965","isMergeCommit":false,"messageTitle":"Level 2. Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":8}}},{"hash":"6971bf606881f4333683fcb2c49fcb3c9c730a7a","isMergeCommit":false,"messageTitle":"Level 3. Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":5}}},{"hash":"8b59bf92f338abe7a4b9fd7349b8ff2137352811","isMergeCommit":false,"messageTitle":"Level 4. ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":71,"deletions":0}}},{"hash":"e6b16b8e510f70842142f18e03bef72fefad3fa9","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":12,"deletions":0},"bat":{"insertions":2,"deletions":2}}}]},{"date":"2024-01-26","commitResults":[{"hash":"7d590b742089b40b2d5f3cb6d4f475fe1399c157","isMergeCommit":false,"messageTitle":"Level 5. Handle Errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":93,"deletions":54}}},{"hash":"92f7734f56fc90c645c58f015f787faa7ac775cf","isMergeCommit":false,"messageTitle":"Level 6. Delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"4e3e288f3f0c0e7480eac329fee89aef63c5fba8","isMergeCommit":false,"messageTitle":"Level 6. Delete","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":10}}},{"hash":"e72874297301170d70ed678883f298f05bc2ffbe","isMergeCommit":false,"messageTitle":"Revert \"Level 6. Delete\"","messageBody":"This reverts commit 4e3e288f3f0c0e7480eac329fee89aef63c5fba8.\n","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}},{"hash":"6ab6167bb2b4f2c2e53e4fe1bbee543a90d0f751","isMergeCommit":false,"messageTitle":"Revert \"Revert \"Level 6. Delete\"\"","messageBody":"This reverts commit e72874297301170d70ed678883f298f05bc2ffbe.\n","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":10}}}]}]},"authorFileTypeContributionMap":{"irwynliong":{"java":190,"md":0,"fxml":0,"sh":0,"bat":2,"gradle":0,"txt":12}},"authorContributionVariance":{"irwynliong":6701.6875},"authorDisplayNameMap":{"irwynliong":"CS2103T-W09-4 LION..RWYN"}} +{"authorDailyContributionsMap":{"irwynliong":[{"date":"2024-01-25","commitResults":[{"hash":"fb2d401cc5cb1f4649b979a1d35b916529f86de4","isMergeCommit":false,"messageTitle":"Level 0. Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":0}}},{"hash":"45ebb4c5e3a13ad9683fa6bf5488f711da002d85","isMergeCommit":false,"messageTitle":"Level 1. Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":4}}},{"hash":"c547c1a901f66757b66a22d5143c2cffd03a4965","isMergeCommit":false,"messageTitle":"Level 2. Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":8}}},{"hash":"6971bf606881f4333683fcb2c49fcb3c9c730a7a","isMergeCommit":false,"messageTitle":"Level 3. Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":5}}},{"hash":"8b59bf92f338abe7a4b9fd7349b8ff2137352811","isMergeCommit":false,"messageTitle":"Level 4. ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":71,"deletions":0}}},{"hash":"e6b16b8e510f70842142f18e03bef72fefad3fa9","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":12,"deletions":0},"bat":{"insertions":2,"deletions":2}}}]},{"date":"2024-01-26","commitResults":[{"hash":"7d590b742089b40b2d5f3cb6d4f475fe1399c157","isMergeCommit":false,"messageTitle":"Level 5. Handle Errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":93,"deletions":54}}},{"hash":"92f7734f56fc90c645c58f015f787faa7ac775cf","isMergeCommit":false,"messageTitle":"Level 6. Delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"4e3e288f3f0c0e7480eac329fee89aef63c5fba8","isMergeCommit":false,"messageTitle":"Level 6. Delete","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":10}}},{"hash":"e72874297301170d70ed678883f298f05bc2ffbe","isMergeCommit":false,"messageTitle":"Revert \"Level 6. Delete\"","messageBody":"This reverts commit 4e3e288f3f0c0e7480eac329fee89aef63c5fba8.\n","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}},{"hash":"6ab6167bb2b4f2c2e53e4fe1bbee543a90d0f751","isMergeCommit":false,"messageTitle":"Revert \"Revert \"Level 6. Delete\"\"","messageBody":"This reverts commit e72874297301170d70ed678883f298f05bc2ffbe.\n","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":10}}}]},{"date":"2024-01-30","commitResults":[{"hash":"d77a077f40d85f3c2d51907c20c315164337d8ac","isMergeCommit":false,"messageTitle":"Divide classes into packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":3}}},{"hash":"76f4380c2ba488ad3922139f2d775644653e5a5e","isMergeCommit":true,"messageTitle":"Merge pull request #1 from irwynliong/heads/A-Packages","messageBody":"Divide classes into packages","fileTypesAndContributionMap":{}},{"hash":"ea7591f73d38b07828b942797b4d1a08ada18b19","isMergeCommit":true,"messageTitle":"Merge pull request #2 from irwynliong/add-gradle-support","messageBody":"Add gradle support","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"irwynliong":{"java":220,"md":0,"fxml":0,"sh":0,"bat":2,"gradle":0,"txt":12}},"authorContributionVariance":{"irwynliong":4873.9165},"authorDisplayNameMap":{"irwynliong":"CS2103T-W09-4 LION..RWYN"}} diff --git a/jinhanfromNUS_ip_master/commits.json b/jinhanfromNUS_ip_master/commits.json index 6ed73016..263c14cf 100644 --- a/jinhanfromNUS_ip_master/commits.json +++ b/jinhanfromNUS_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"jinhanfromNUS":[{"date":"2024-01-25","commitResults":[{"hash":"6b6e7f19c88b577048199715bdcadda087ae8f4f","isMergeCommit":false,"messageTitle":"Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":6}}},{"hash":"b308943ece82526c3b708a8b9d0f3c6942abb327","isMergeCommit":false,"messageTitle":"Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":90,"deletions":23}}},{"hash":"e7f6c754fc529a5292291313b4987fd07cf6c9c9","isMergeCommit":false,"messageTitle":"ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":122,"deletions":31}}},{"hash":"58bc70be496e3c3427317a8450ea05b5b3a2ccfb","isMergeCommit":false,"messageTitle":"Handle Errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"988e0c46b085f6f72c7d51da59b481a75e82a4e8","isMergeCommit":false,"messageTitle":"Delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":0}}}]},{"date":"2024-01-27","commitResults":[{"hash":"3ed231f2609f86b20cde1767748058bc91d3ffd9","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["Version-3.0"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"jinhanfromNUS":{"java":224,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":1}},"authorContributionVariance":{"jinhanfromNUS":11408.988},"authorDisplayNameMap":{"jinhanfromNUS":"CS2103T-F11-2 HO J.. HAN"}} +{"authorDailyContributionsMap":{"jinhanfromNUS":[{"date":"2024-01-25","commitResults":[{"hash":"6b6e7f19c88b577048199715bdcadda087ae8f4f","isMergeCommit":false,"messageTitle":"Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":6}}},{"hash":"b308943ece82526c3b708a8b9d0f3c6942abb327","isMergeCommit":false,"messageTitle":"Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":90,"deletions":23}}},{"hash":"e7f6c754fc529a5292291313b4987fd07cf6c9c9","isMergeCommit":false,"messageTitle":"ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":122,"deletions":31}}},{"hash":"58bc70be496e3c3427317a8450ea05b5b3a2ccfb","isMergeCommit":false,"messageTitle":"Handle Errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"988e0c46b085f6f72c7d51da59b481a75e82a4e8","isMergeCommit":false,"messageTitle":"Delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":0}}}]},{"date":"2024-01-27","commitResults":[{"hash":"3ed231f2609f86b20cde1767748058bc91d3ffd9","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["Version-3.0","!A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"jinhanfromNUS":{"java":224,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":1}},"authorContributionVariance":{"jinhanfromNUS":11408.988},"authorDisplayNameMap":{"jinhanfromNUS":"CS2103T-F11-2 HO J.. HAN"}} diff --git a/mahadhir247_ip_master/authorship.json b/mahadhir247_ip_master/authorship.json index 86a901b9..aa80dac5 100644 --- a/mahadhir247_ip_master/authorship.json +++ b/mahadhir247_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Buddy.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"mahadhir247"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"mahadhir247"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"mahadhir247"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"mahadhir247"},"content":"public class Buddy {","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"mahadhir247"},"content":" private final String lineBreak \u003d \"____________________________________________________________\\n\";","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"mahadhir247"},"content":" ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"mahadhir247"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"mahadhir247"},"content":" private void greet() {","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"mahadhir247"},"content":" String logo \u003d","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"mahadhir247"},"content":" \" ____ _ _ \\n\" +","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"mahadhir247"},"content":" \" | _ \\\\ | | | | \\n\" +","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"mahadhir247"},"content":" \" | |_) |_ _ __| | __| |_ _ \\n\" +","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"mahadhir247"},"content":" \" | _ \u003c| | | |/ _` |/ _` | | | |\\n\" +","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"mahadhir247"},"content":" \" | |_) | |_| | (_| | (_| | |_| |\\n\" +","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"mahadhir247"},"content":" \" |____/ \\\\__,_|\\\\__,_|\\\\__,_|\\\\__, |\\n\" +","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"mahadhir247"},"content":" \" __/ |\\n\" +","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"mahadhir247"},"content":" \" |___/ \\n\";","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"mahadhir247"},"content":" System.out.println(lineBreak + logo + lineBreak + \" Hello friend!\\n\" + \" How can I help you?\\n\" + lineBreak);","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"mahadhir247"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"mahadhir247"},"content":" private void exit() {","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"mahadhir247"},"content":" System.out.println(lineBreak + \" Bye. Hope to see you again soon!\\n\" + lineBreak);","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"mahadhir247"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"mahadhir247"},"content":" private void run() {","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"mahadhir247"},"content":" boolean running \u003d true;","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"mahadhir247"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"mahadhir247"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"mahadhir247"},"content":" while (running) {","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"mahadhir247"},"content":" String input \u003d sc.nextLine().trim();","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"mahadhir247"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"mahadhir247"},"content":" if (!input.equals(\"\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"mahadhir247"},"content":" Command command;","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"mahadhir247"},"content":" command \u003d setCommand(input);","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"mahadhir247"},"content":" running \u003d command(command, input);","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"mahadhir247"},"content":" sc.close();","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"mahadhir247"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"mahadhir247"},"content":" private boolean command(Command cmd, String input) {","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"mahadhir247"},"content":" switch (cmd) {","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"mahadhir247"},"content":" case BYE:","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"mahadhir247"},"content":" return false;","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"mahadhir247"},"content":" case LIST:","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"mahadhir247"},"content":" System.out.print(lineBreak);","lastModifiedDate":"2024-01-22"},{"lineNumber":47,"author":{"gitId":"mahadhir247"},"content":" System.out.println(\"Here you go bud!:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"mahadhir247"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"mahadhir247"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2024-01-22"},{"lineNumber":50,"author":{"gitId":"mahadhir247"},"content":" System.out.println((i + 1) + \". \"+ taskList.get(i));","lastModifiedDate":"2024-01-22"},{"lineNumber":51,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":52,"author":{"gitId":"mahadhir247"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"mahadhir247"},"content":" System.out.println(lineBreak);","lastModifiedDate":"2024-01-22"},{"lineNumber":54,"author":{"gitId":"mahadhir247"},"content":" return true;","lastModifiedDate":"2024-01-23"},{"lineNumber":55,"author":{"gitId":"mahadhir247"},"content":" case MARK:","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"mahadhir247"},"content":" case UNMARK:","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"mahadhir247"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"mahadhir247"},"content":" int intIdx \u003d input.indexOf(\" \") + 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"mahadhir247"},"content":" int taskIdx \u003d Integer.parseInt(input.substring(intIdx)) - 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"mahadhir247"},"content":" Task task \u003d taskList.get(taskIdx);","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"mahadhir247"},"content":" task.changeStatus(cmd);","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"mahadhir247"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"mahadhir247"},"content":" String msg \u003d \"I\u0027ve updated this task for you!\\n\" + task + \"\\n\";","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"mahadhir247"},"content":" System.out.println(lineBreak + msg + lineBreak);","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"mahadhir247"},"content":" return true;","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"mahadhir247"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"mahadhir247"},"content":" System.out.println(lineBreak + \"The index you provided is out of bounds!\\n\" + lineBreak);","lastModifiedDate":"2024-01-25"},{"lineNumber":68,"author":{"gitId":"mahadhir247"},"content":" return true;","lastModifiedDate":"2024-01-25"},{"lineNumber":69,"author":{"gitId":"mahadhir247"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"mahadhir247"},"content":" System.out.println(lineBreak + \"I don\u0027t know which task you are talking about!\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"mahadhir247"},"content":" \"Please provide a valid integer!\\n\" + lineBreak);","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"mahadhir247"},"content":" return true;","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"mahadhir247"},"content":" case TODO:","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"mahadhir247"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"mahadhir247"},"content":" int todoIdx \u003d input.indexOf(\" \");","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"mahadhir247"},"content":" if (todoIdx \u003e\u003d 0) {","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"mahadhir247"},"content":" Todo todo \u003d new Todo(input.substring(todoIdx + 1));","lastModifiedDate":"2024-01-25"},{"lineNumber":79,"author":{"gitId":"mahadhir247"},"content":" addTask(todo);","lastModifiedDate":"2024-01-24"},{"lineNumber":80,"author":{"gitId":"mahadhir247"},"content":" return true;","lastModifiedDate":"2024-01-24"},{"lineNumber":81,"author":{"gitId":"mahadhir247"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":82,"author":{"gitId":"mahadhir247"},"content":" throw new BuddyException(\"Please provide a task to do!\\n\");","lastModifiedDate":"2024-01-25"},{"lineNumber":83,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":84,"author":{"gitId":"mahadhir247"},"content":" } catch (BuddyException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":85,"author":{"gitId":"mahadhir247"},"content":" System.out.println(lineBreak + e.getMessage() + lineBreak);","lastModifiedDate":"2024-01-25"},{"lineNumber":86,"author":{"gitId":"mahadhir247"},"content":" return true;","lastModifiedDate":"2024-01-25"},{"lineNumber":87,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":88,"author":{"gitId":"mahadhir247"},"content":" case DELETE:","lastModifiedDate":"2024-01-25"},{"lineNumber":89,"author":{"gitId":"mahadhir247"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":90,"author":{"gitId":"mahadhir247"},"content":" int deleteIdx \u003d input.indexOf(\" \");","lastModifiedDate":"2024-01-25"},{"lineNumber":91,"author":{"gitId":"mahadhir247"},"content":" if (deleteIdx \u003e\u003d 0) {","lastModifiedDate":"2024-01-25"},{"lineNumber":92,"author":{"gitId":"mahadhir247"},"content":" int toDelete \u003d Integer.parseInt(input.substring(deleteIdx + 1)) - 1;","lastModifiedDate":"2024-01-25"},{"lineNumber":93,"author":{"gitId":"mahadhir247"},"content":" deleteTask(taskList.get(toDelete));","lastModifiedDate":"2024-01-25"},{"lineNumber":94,"author":{"gitId":"mahadhir247"},"content":" return true;","lastModifiedDate":"2024-01-25"},{"lineNumber":95,"author":{"gitId":"mahadhir247"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":96,"author":{"gitId":"mahadhir247"},"content":" throw new BuddyException(\"Please provide a valid task to delete!\\n\");","lastModifiedDate":"2024-01-25"},{"lineNumber":97,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":98,"author":{"gitId":"mahadhir247"},"content":" } catch (BuddyException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":99,"author":{"gitId":"mahadhir247"},"content":" System.out.println(lineBreak + e.getMessage() + lineBreak);","lastModifiedDate":"2024-01-25"},{"lineNumber":100,"author":{"gitId":"mahadhir247"},"content":" return true;","lastModifiedDate":"2024-01-25"},{"lineNumber":101,"author":{"gitId":"mahadhir247"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":102,"author":{"gitId":"mahadhir247"},"content":" System.out.println(lineBreak + \"The index you provided is out of bounds!\\n\" + lineBreak);","lastModifiedDate":"2024-01-25"},{"lineNumber":103,"author":{"gitId":"mahadhir247"},"content":" return true;","lastModifiedDate":"2024-01-25"},{"lineNumber":104,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":105,"author":{"gitId":"mahadhir247"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-25"},{"lineNumber":106,"author":{"gitId":"mahadhir247"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":107,"author":{"gitId":"mahadhir247"},"content":" int deadlineIdx \u003d input.indexOf(\" \");","lastModifiedDate":"2024-01-25"},{"lineNumber":108,"author":{"gitId":"mahadhir247"},"content":" if (deadlineIdx \u003e\u003d 0) {","lastModifiedDate":"2024-01-25"},{"lineNumber":109,"author":{"gitId":"mahadhir247"},"content":" int deadlineEndIdx \u003d input.indexOf(\"/by\");","lastModifiedDate":"2024-01-24"},{"lineNumber":110,"author":{"gitId":"mahadhir247"},"content":" if (deadlineEndIdx \u003e\u003d 0) {","lastModifiedDate":"2024-01-25"},{"lineNumber":111,"author":{"gitId":"mahadhir247"},"content":" String deadlineEnd \u003d input.substring(deadlineEndIdx + 4);","lastModifiedDate":"2024-01-24"},{"lineNumber":112,"author":{"gitId":"mahadhir247"},"content":" Deadline deadline \u003d new Deadline(input.substring(deadlineIdx + 1, deadlineEndIdx - 1),","lastModifiedDate":"2024-01-25"},{"lineNumber":113,"author":{"gitId":"mahadhir247"},"content":" deadlineEnd);","lastModifiedDate":"2024-01-25"},{"lineNumber":114,"author":{"gitId":"mahadhir247"},"content":" addTask(deadline);","lastModifiedDate":"2024-01-24"},{"lineNumber":115,"author":{"gitId":"mahadhir247"},"content":" return true;","lastModifiedDate":"2024-01-24"},{"lineNumber":116,"author":{"gitId":"mahadhir247"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":117,"author":{"gitId":"mahadhir247"},"content":" throw new BuddyException(\"Please prove a deadline for the task using /by!\\n\");","lastModifiedDate":"2024-01-25"},{"lineNumber":118,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":119,"author":{"gitId":"mahadhir247"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":120,"author":{"gitId":"mahadhir247"},"content":" throw new BuddyException(\"Please provide a task to do!\\n\");","lastModifiedDate":"2024-01-25"},{"lineNumber":121,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":122,"author":{"gitId":"mahadhir247"},"content":" } catch (BuddyException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":123,"author":{"gitId":"mahadhir247"},"content":" System.out.println(lineBreak + e.getMessage() + lineBreak);","lastModifiedDate":"2024-01-25"},{"lineNumber":124,"author":{"gitId":"mahadhir247"},"content":" return true;","lastModifiedDate":"2024-01-25"},{"lineNumber":125,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":126,"author":{"gitId":"mahadhir247"},"content":" case EVENT:","lastModifiedDate":"2024-01-25"},{"lineNumber":127,"author":{"gitId":"mahadhir247"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":128,"author":{"gitId":"mahadhir247"},"content":" int eventIdx \u003d input.indexOf(\" \");","lastModifiedDate":"2024-01-25"},{"lineNumber":129,"author":{"gitId":"mahadhir247"},"content":" if (eventIdx \u003e\u003d 0) {","lastModifiedDate":"2024-01-25"},{"lineNumber":130,"author":{"gitId":"mahadhir247"},"content":" int eventStartIdx \u003d input.indexOf(\"/from\");","lastModifiedDate":"2024-01-24"},{"lineNumber":131,"author":{"gitId":"mahadhir247"},"content":" int eventEndIdx \u003d input.indexOf(\"/to\");","lastModifiedDate":"2024-01-24"},{"lineNumber":132,"author":{"gitId":"mahadhir247"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":133,"author":{"gitId":"mahadhir247"},"content":" if (eventStartIdx \u003e\u003d 0 \u0026\u0026 eventEndIdx \u003e\u003d 0) {","lastModifiedDate":"2024-01-25"},{"lineNumber":134,"author":{"gitId":"mahadhir247"},"content":" String eventStart \u003d input.substring(eventStartIdx + 6, eventEndIdx);","lastModifiedDate":"2024-01-24"},{"lineNumber":135,"author":{"gitId":"mahadhir247"},"content":" String eventEnd \u003d input.substring(eventEndIdx + 4);","lastModifiedDate":"2024-01-24"},{"lineNumber":136,"author":{"gitId":"mahadhir247"},"content":" Event event \u003d new Event(input.substring(eventIdx + 1, eventStartIdx - 1), eventStart, eventEnd);","lastModifiedDate":"2024-01-25"},{"lineNumber":137,"author":{"gitId":"mahadhir247"},"content":" addTask(event);","lastModifiedDate":"2024-01-24"},{"lineNumber":138,"author":{"gitId":"mahadhir247"},"content":" return true;","lastModifiedDate":"2024-01-23"},{"lineNumber":139,"author":{"gitId":"mahadhir247"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":140,"author":{"gitId":"mahadhir247"},"content":" throw new BuddyException(\"Please provide a valid time range using /from and /to!\\n\");","lastModifiedDate":"2024-01-25"},{"lineNumber":141,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":142,"author":{"gitId":"mahadhir247"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":143,"author":{"gitId":"mahadhir247"},"content":" throw new BuddyException(\"Please provide an event!\\n\");","lastModifiedDate":"2024-01-25"},{"lineNumber":144,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":145,"author":{"gitId":"mahadhir247"},"content":" } catch (BuddyException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":146,"author":{"gitId":"mahadhir247"},"content":" System.out.println(lineBreak + e.getMessage() + lineBreak);","lastModifiedDate":"2024-01-25"},{"lineNumber":147,"author":{"gitId":"mahadhir247"},"content":" return true;","lastModifiedDate":"2024-01-25"},{"lineNumber":148,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":149,"author":{"gitId":"mahadhir247"},"content":" default:","lastModifiedDate":"2024-01-23"},{"lineNumber":150,"author":{"gitId":"mahadhir247"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":151,"author":{"gitId":"mahadhir247"},"content":" throw new BuddyException(\"Sorry friend but that\u0027s not a valid command!\\n\");","lastModifiedDate":"2024-01-25"},{"lineNumber":152,"author":{"gitId":"mahadhir247"},"content":" } catch (BuddyException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":153,"author":{"gitId":"mahadhir247"},"content":" System.out.println(lineBreak + e.getMessage() + lineBreak);","lastModifiedDate":"2024-01-25"},{"lineNumber":154,"author":{"gitId":"mahadhir247"},"content":" return true;","lastModifiedDate":"2024-01-23"},{"lineNumber":155,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":156,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":157,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":158,"author":{"gitId":"mahadhir247"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":159,"author":{"gitId":"mahadhir247"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-24"},{"lineNumber":160,"author":{"gitId":"mahadhir247"},"content":" taskList.add(task);","lastModifiedDate":"2024-01-25"},{"lineNumber":161,"author":{"gitId":"mahadhir247"},"content":" String msg \u003d \"Alrighty! I\u0027ve added the task to your list!\\n\" + task + \"\\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":162,"author":{"gitId":"mahadhir247"},"content":" \"You have \" + taskList.size() + \" tasks!\\n\";","lastModifiedDate":"2024-01-24"},{"lineNumber":163,"author":{"gitId":"mahadhir247"},"content":" System.out.println(lineBreak + msg + lineBreak);","lastModifiedDate":"2024-01-24"},{"lineNumber":164,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":165,"author":{"gitId":"mahadhir247"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":166,"author":{"gitId":"mahadhir247"},"content":" public void deleteTask(Task task) {","lastModifiedDate":"2024-01-25"},{"lineNumber":167,"author":{"gitId":"mahadhir247"},"content":" taskList.remove(task);","lastModifiedDate":"2024-01-25"},{"lineNumber":168,"author":{"gitId":"mahadhir247"},"content":" String msg \u003d \"I\u0027ve removed the task from your list!\\n\" + task + \"\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":169,"author":{"gitId":"mahadhir247"},"content":" \"You have \" + taskList.size() + \" tasks!\\n\";","lastModifiedDate":"2024-01-25"},{"lineNumber":170,"author":{"gitId":"mahadhir247"},"content":" System.out.println(lineBreak + msg + lineBreak);","lastModifiedDate":"2024-01-25"},{"lineNumber":171,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":172,"author":{"gitId":"mahadhir247"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":173,"author":{"gitId":"mahadhir247"},"content":" public Command setCommand(String input) {","lastModifiedDate":"2024-01-25"},{"lineNumber":174,"author":{"gitId":"mahadhir247"},"content":" if (input.startsWith(\"mark\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":175,"author":{"gitId":"mahadhir247"},"content":" return Command.MARK;","lastModifiedDate":"2024-01-25"},{"lineNumber":176,"author":{"gitId":"mahadhir247"},"content":" } else if (input.startsWith(\"unmark\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":177,"author":{"gitId":"mahadhir247"},"content":" return Command.UNMARK;","lastModifiedDate":"2024-01-25"},{"lineNumber":178,"author":{"gitId":"mahadhir247"},"content":" } else if (input.startsWith(\"todo\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":179,"author":{"gitId":"mahadhir247"},"content":" return Command.TODO;","lastModifiedDate":"2024-01-25"},{"lineNumber":180,"author":{"gitId":"mahadhir247"},"content":" } else if (input.startsWith(\"deadline\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":181,"author":{"gitId":"mahadhir247"},"content":" return Command.DEADLINE;","lastModifiedDate":"2024-01-25"},{"lineNumber":182,"author":{"gitId":"mahadhir247"},"content":" } else if (input.startsWith(\"event\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":183,"author":{"gitId":"mahadhir247"},"content":" return Command.EVENT;","lastModifiedDate":"2024-01-25"},{"lineNumber":184,"author":{"gitId":"mahadhir247"},"content":" } else if (input.startsWith(\"delete\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":185,"author":{"gitId":"mahadhir247"},"content":" return Command.DELETE;","lastModifiedDate":"2024-01-25"},{"lineNumber":186,"author":{"gitId":"mahadhir247"},"content":" } else if (input.startsWith(\"bye\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":187,"author":{"gitId":"mahadhir247"},"content":" return Command.BYE;","lastModifiedDate":"2024-01-25"},{"lineNumber":188,"author":{"gitId":"mahadhir247"},"content":" } else if (input.startsWith(\"list\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":189,"author":{"gitId":"mahadhir247"},"content":" return Command.LIST;","lastModifiedDate":"2024-01-25"},{"lineNumber":190,"author":{"gitId":"mahadhir247"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":191,"author":{"gitId":"mahadhir247"},"content":" return Command.INVALID;","lastModifiedDate":"2024-01-25"},{"lineNumber":192,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":193,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":194,"author":{"gitId":"mahadhir247"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":195,"author":{"gitId":"mahadhir247"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-22"},{"lineNumber":196,"author":{"gitId":"mahadhir247"},"content":" Buddy buddy \u003d new Buddy();","lastModifiedDate":"2024-01-22"},{"lineNumber":197,"author":{"gitId":"mahadhir247"},"content":" buddy.greet();","lastModifiedDate":"2024-01-22"},{"lineNumber":198,"author":{"gitId":"mahadhir247"},"content":" buddy.run();","lastModifiedDate":"2024-01-23"},{"lineNumber":199,"author":{"gitId":"mahadhir247"},"content":" buddy.exit();","lastModifiedDate":"2024-01-22"},{"lineNumber":200,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":201,"author":{"gitId":"mahadhir247"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"mahadhir247":201}},{"path":"src/main/java/BuddyException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"mahadhir247"},"content":"public class BuddyException extends Exception {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"mahadhir247"},"content":" public BuddyException(String msg) {","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"mahadhir247"},"content":" super(msg);","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"mahadhir247"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"mahadhir247":5}},{"path":"src/main/java/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"mahadhir247"},"content":"public enum Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"mahadhir247"},"content":" BYE, LIST, MARK, UNMARK, TODO, DEADLINE, EVENT, DELETE, INVALID","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"mahadhir247"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"mahadhir247":3}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"mahadhir247"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"mahadhir247"},"content":" protected String by;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"mahadhir247"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"mahadhir247"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"mahadhir247"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"mahadhir247"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"mahadhir247"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"mahadhir247"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"mahadhir247"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"mahadhir247"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"mahadhir247"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"mahadhir247":13}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"mahadhir247"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"mahadhir247"},"content":" protected String from;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"mahadhir247"},"content":" protected String to;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"mahadhir247"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"mahadhir247"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"mahadhir247"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"mahadhir247"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"mahadhir247"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"mahadhir247"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"mahadhir247"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"mahadhir247"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"mahadhir247"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from + \"to: \" + to + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"mahadhir247"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"mahadhir247":15}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"mahadhir247"},"content":"public class Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"mahadhir247"},"content":" protected String description;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"mahadhir247"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"mahadhir247"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"mahadhir247"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"mahadhir247"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"mahadhir247"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"mahadhir247"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"mahadhir247"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"mahadhir247"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"mahadhir247"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"mahadhir247"},"content":" public void changeStatus(Command cmd) {","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"mahadhir247"},"content":" if (cmd.equals(Command.MARK)) {","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"mahadhir247"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"mahadhir247"},"content":" } else if (cmd.equals(Command.UNMARK)) {","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"mahadhir247"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"mahadhir247"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"mahadhir247"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"mahadhir247"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"mahadhir247"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"mahadhir247"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"mahadhir247":26}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"mahadhir247"},"content":"public class Todo extends Task{","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"mahadhir247"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"mahadhir247"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"mahadhir247"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"mahadhir247"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"mahadhir247"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"mahadhir247"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"mahadhir247"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"mahadhir247":10}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"mahadhir247"},"content":"todo borrow book","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"mahadhir247"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"mahadhir247"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"mahadhir247"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"mahadhir247"},"content":"mark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"mahadhir247"},"content":"mark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"mahadhir247"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"mahadhir247"},"content":"unmark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"mahadhir247"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"mahadhir247"},"content":"delete 1","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"mahadhir247"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"mahadhir247":11}},{"path":"text-ui-test/inputWithErrors.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"mahadhir247"},"content":"unmark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"mahadhir247"},"content":"todo","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"mahadhir247"},"content":"deadline task","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"mahadhir247"},"content":"event task /from","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"mahadhir247"},"content":"todo task","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"mahadhir247"},"content":"mark 99","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"mahadhir247"},"content":"delete 99","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"mahadhir247":7}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"mahadhir247"},"content":"java -classpath ..\\bin Buddy \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":20,"mahadhir247":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":"mahadhir247"},"content":"java -classpath ../bin Buddy \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":37,"mahadhir247":1}}] +[{"path":"src/main/java/Buddy.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"mahadhir247"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"mahadhir247"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"mahadhir247"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"mahadhir247"},"content":"public class Buddy {","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"mahadhir247"},"content":" public enum Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"mahadhir247"},"content":" BYE, LIST, MARK, UNMARK, TODO, DEADLINE, EVENT, DELETE, INVALID","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"mahadhir247"},"content":" private final String LINE_BREAK \u003d \"____________________________________________________________\\n\";","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"mahadhir247"},"content":" ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"mahadhir247"},"content":" Storage storage \u003d new Storage(\"buddy.txt\");","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"mahadhir247"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"mahadhir247"},"content":" private void greet() {","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"mahadhir247"},"content":" String logo \u003d","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"mahadhir247"},"content":" \" ____ _ _ \\n\" +","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"mahadhir247"},"content":" \" | _ \\\\ | | | | \\n\" +","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"mahadhir247"},"content":" \" | |_) |_ _ __| | __| |_ _ \\n\" +","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"mahadhir247"},"content":" \" | _ \u003c| | | |/ _` |/ _` | | | |\\n\" +","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"mahadhir247"},"content":" \" | |_) | |_| | (_| | (_| | |_| |\\n\" +","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"mahadhir247"},"content":" \" |____/ \\\\__,_|\\\\__,_|\\\\__,_|\\\\__, |\\n\" +","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"mahadhir247"},"content":" \" __/ |\\n\" +","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"mahadhir247"},"content":" \" |___/ \\n\";","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"mahadhir247"},"content":" System.out.println(LINE_BREAK + logo + LINE_BREAK","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"mahadhir247"},"content":" + \" Hello friend!\\n\" + \" How can I help you?\\n\" + LINE_BREAK);","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"mahadhir247"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"mahadhir247"},"content":" private void exit() {","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"mahadhir247"},"content":" System.out.println(LINE_BREAK + \" Bye. Hope to see you again soon!\\n\" + LINE_BREAK);","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"mahadhir247"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"mahadhir247"},"content":" private void run() {","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"mahadhir247"},"content":" boolean isRunning \u003d true;","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"mahadhir247"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"mahadhir247"},"content":" taskList \u003d storage.load();","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"mahadhir247"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"mahadhir247"},"content":" while (isRunning) {","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"mahadhir247"},"content":" String input \u003d sc.nextLine().trim();","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"mahadhir247"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"mahadhir247"},"content":" if (!input.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"mahadhir247"},"content":" String[] inputSplit \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"mahadhir247"},"content":" Command command \u003d getCommand(inputSplit[0]);","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"mahadhir247"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"mahadhir247"},"content":" switch (command) {","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"mahadhir247"},"content":" case BYE:","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"mahadhir247"},"content":" isRunning \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"mahadhir247"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"mahadhir247"},"content":" case LIST:","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"mahadhir247"},"content":" System.out.print(LINE_BREAK);","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"mahadhir247"},"content":" System.out.println(\"Here you go bud!:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"mahadhir247"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2024-01-22"},{"lineNumber":50,"author":{"gitId":"mahadhir247"},"content":" System.out.println((i + 1) + \". \"+ taskList.get(i));","lastModifiedDate":"2024-01-22"},{"lineNumber":51,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":52,"author":{"gitId":"mahadhir247"},"content":" System.out.print(LINE_BREAK);","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"mahadhir247"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"mahadhir247"},"content":" case MARK:","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"mahadhir247"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"mahadhir247"},"content":" if (inputSplit.length \u003d\u003d 1) {","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"mahadhir247"},"content":" throw new IllegalArgumentException(\"Please provide a task number!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"mahadhir247"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"mahadhir247"},"content":" int index \u003d Integer.parseInt(inputSplit[1].trim()) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"mahadhir247"},"content":" if (index \u003e\u003d taskList.size()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"mahadhir247"},"content":" throw new ArrayIndexOutOfBoundsException(\"Not a valid task buddy!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"mahadhir247"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"mahadhir247"},"content":" taskList.get(index).mark();","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"mahadhir247"},"content":" System.out.println(LINE_BREAK + \"I\u0027ve updated the following task!:\\n\"","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"mahadhir247"},"content":" + taskList.get(index) + \"\\n\" + LINE_BREAK);","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"mahadhir247"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"mahadhir247"},"content":" } catch (NumberFormatException nfe) {","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"mahadhir247"},"content":" System.out.println(LINE_BREAK + \"Not a valid task buddy!\\n\" + LINE_BREAK);","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"mahadhir247"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"mahadhir247"},"content":" } catch (IllegalArgumentException | IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"mahadhir247"},"content":" System.out.println(LINE_BREAK + e.getMessage() + \"\\n\" + LINE_BREAK);","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"mahadhir247"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"mahadhir247"},"content":" case UNMARK:","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"mahadhir247"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"mahadhir247"},"content":" if (inputSplit.length \u003d\u003d 1) {","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"mahadhir247"},"content":" throw new IllegalArgumentException(\"Please provide a task number!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"mahadhir247"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"mahadhir247"},"content":" int index \u003d Integer.parseInt(inputSplit[1].trim()) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"mahadhir247"},"content":" if (index \u003e\u003d taskList.size()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"mahadhir247"},"content":" throw new ArrayIndexOutOfBoundsException(\"Not a valid task buddy!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"mahadhir247"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"mahadhir247"},"content":" taskList.get(index).unmark();","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"mahadhir247"},"content":" System.out.println(LINE_BREAK + \"I\u0027ve updated the following task!:\\n\"","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"mahadhir247"},"content":" + taskList.get(index) + \"\\n\" + LINE_BREAK);","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"mahadhir247"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"mahadhir247"},"content":" } catch (NumberFormatException nfe) {","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"mahadhir247"},"content":" System.out.println(LINE_BREAK + \"Not a valid task buddy!\\n\" + LINE_BREAK);","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"mahadhir247"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"mahadhir247"},"content":" } catch (IllegalArgumentException | IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"mahadhir247"},"content":" System.out.println(LINE_BREAK + e.getMessage() + \"\\n\" + LINE_BREAK);","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"mahadhir247"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":98,"author":{"gitId":"mahadhir247"},"content":" case DELETE:","lastModifiedDate":"2024-01-25"},{"lineNumber":99,"author":{"gitId":"mahadhir247"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":100,"author":{"gitId":"mahadhir247"},"content":" if (inputSplit.length \u003d\u003d 1) {","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"mahadhir247"},"content":" throw new IllegalArgumentException(\"Please provide a task number!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"mahadhir247"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"mahadhir247"},"content":" int index \u003d Integer.parseInt(inputSplit[1].trim()) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"mahadhir247"},"content":" if (index \u003e\u003d taskList.size()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"mahadhir247"},"content":" throw new ArrayIndexOutOfBoundsException(\"Not a valid task buddy!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"mahadhir247"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"mahadhir247"},"content":" deleteTask(taskList.get(index));","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"mahadhir247"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"mahadhir247"},"content":" } catch (IllegalArgumentException | IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"mahadhir247"},"content":" System.out.println(LINE_BREAK + e.getMessage() + \"\\n\" + LINE_BREAK);","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"mahadhir247"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"mahadhir247"},"content":" case TODO:","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"mahadhir247"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"mahadhir247"},"content":" if (inputSplit.length \u003d\u003d 1) {","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"mahadhir247"},"content":" throw new IllegalArgumentException(\"Please provide a valid task!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"mahadhir247"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"mahadhir247"},"content":" Todo todo \u003d new Todo(inputSplit[1].trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"mahadhir247"},"content":" addTask(todo);","lastModifiedDate":"2024-01-30"},{"lineNumber":123,"author":{"gitId":"mahadhir247"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":124,"author":{"gitId":"mahadhir247"},"content":" } catch (IllegalArgumentException iae) {","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"mahadhir247"},"content":" System.out.println(LINE_BREAK + iae.getMessage() + \"\\n\" + LINE_BREAK);","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"mahadhir247"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":127,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":128,"author":{"gitId":"mahadhir247"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-25"},{"lineNumber":129,"author":{"gitId":"mahadhir247"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":130,"author":{"gitId":"mahadhir247"},"content":" if (inputSplit.length \u003d\u003d 1) {","lastModifiedDate":"2024-01-30"},{"lineNumber":131,"author":{"gitId":"mahadhir247"},"content":" throw new IllegalArgumentException(\"Please provide a task and deadline!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":133,"author":{"gitId":"mahadhir247"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":134,"author":{"gitId":"mahadhir247"},"content":" String[] timeSplit \u003d inputSplit[1].split(\"/by\", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":135,"author":{"gitId":"mahadhir247"},"content":" if (timeSplit.length \u003c\u003d 1 || timeSplit[1].isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":136,"author":{"gitId":"mahadhir247"},"content":" throw new IllegalArgumentException(\"Please provide a deadline!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":138,"author":{"gitId":"mahadhir247"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":139,"author":{"gitId":"mahadhir247"},"content":" Deadline deadline \u003d new Deadline(","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"mahadhir247"},"content":" timeSplit[0].trim(), timeSplit[1].trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":141,"author":{"gitId":"mahadhir247"},"content":" addTask(deadline);","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"mahadhir247"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":143,"author":{"gitId":"mahadhir247"},"content":" } catch (IllegalArgumentException iae) {","lastModifiedDate":"2024-01-30"},{"lineNumber":144,"author":{"gitId":"mahadhir247"},"content":" System.out.println(LINE_BREAK + iae.getMessage() + \"\\n\" + LINE_BREAK);","lastModifiedDate":"2024-01-30"},{"lineNumber":145,"author":{"gitId":"mahadhir247"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":146,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":147,"author":{"gitId":"mahadhir247"},"content":" case EVENT:","lastModifiedDate":"2024-01-25"},{"lineNumber":148,"author":{"gitId":"mahadhir247"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":149,"author":{"gitId":"mahadhir247"},"content":" if (inputSplit.length \u003d\u003d 1) {","lastModifiedDate":"2024-01-30"},{"lineNumber":150,"author":{"gitId":"mahadhir247"},"content":" throw new IllegalArgumentException(\"Please provide a task and date/time range!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":151,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":152,"author":{"gitId":"mahadhir247"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":153,"author":{"gitId":"mahadhir247"},"content":" String[] timeSplit \u003d inputSplit[1].split(\"/from\", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":154,"author":{"gitId":"mahadhir247"},"content":" if (timeSplit.length \u003c\u003d 1 || timeSplit[1].isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":155,"author":{"gitId":"mahadhir247"},"content":" throw new IllegalArgumentException(\"Please provide a start date/time!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":156,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":157,"author":{"gitId":"mahadhir247"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":158,"author":{"gitId":"mahadhir247"},"content":" String[] timeSplit2 \u003d timeSplit[1].split(\"/to\", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":159,"author":{"gitId":"mahadhir247"},"content":" if (timeSplit2.length \u003c\u003d 1 || timeSplit2[1].isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":160,"author":{"gitId":"mahadhir247"},"content":" throw new IllegalArgumentException(\"Please provide an end date/time!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":161,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":162,"author":{"gitId":"mahadhir247"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":163,"author":{"gitId":"mahadhir247"},"content":" Event event \u003d new Event(","lastModifiedDate":"2024-01-30"},{"lineNumber":164,"author":{"gitId":"mahadhir247"},"content":" timeSplit[0].trim(), timeSplit2[0].trim(), timeSplit2[1].trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":165,"author":{"gitId":"mahadhir247"},"content":" addTask(event);","lastModifiedDate":"2024-01-30"},{"lineNumber":166,"author":{"gitId":"mahadhir247"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":167,"author":{"gitId":"mahadhir247"},"content":" } catch (IllegalArgumentException iae) {","lastModifiedDate":"2024-01-30"},{"lineNumber":168,"author":{"gitId":"mahadhir247"},"content":" System.out.println(LINE_BREAK + iae.getMessage() + \"\\n\" + LINE_BREAK);","lastModifiedDate":"2024-01-30"},{"lineNumber":169,"author":{"gitId":"mahadhir247"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":170,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":171,"author":{"gitId":"mahadhir247"},"content":" default:","lastModifiedDate":"2024-01-23"},{"lineNumber":172,"author":{"gitId":"mahadhir247"},"content":" System.out.println(LINE_BREAK + \"That\u0027s not a valid command!\\n\" + LINE_BREAK);","lastModifiedDate":"2024-01-30"},{"lineNumber":173,"author":{"gitId":"mahadhir247"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":174,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":175,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":176,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":177,"author":{"gitId":"mahadhir247"},"content":" storage.save(taskList);","lastModifiedDate":"2024-01-30"},{"lineNumber":178,"author":{"gitId":"mahadhir247"},"content":" sc.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":179,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":180,"author":{"gitId":"mahadhir247"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":181,"author":{"gitId":"mahadhir247"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-24"},{"lineNumber":182,"author":{"gitId":"mahadhir247"},"content":" taskList.add(task);","lastModifiedDate":"2024-01-25"},{"lineNumber":183,"author":{"gitId":"mahadhir247"},"content":" String msg \u003d \"Alrighty! I\u0027ve added the task to your list!\\n\" + task + \"\\n\"","lastModifiedDate":"2024-01-30"},{"lineNumber":184,"author":{"gitId":"mahadhir247"},"content":" + \"You have \" + taskList.size() + \" tasks!\\n\";","lastModifiedDate":"2024-01-30"},{"lineNumber":185,"author":{"gitId":"mahadhir247"},"content":" System.out.println(LINE_BREAK + msg + LINE_BREAK);","lastModifiedDate":"2024-01-30"},{"lineNumber":186,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":187,"author":{"gitId":"mahadhir247"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":188,"author":{"gitId":"mahadhir247"},"content":" public void deleteTask(Task task) {","lastModifiedDate":"2024-01-25"},{"lineNumber":189,"author":{"gitId":"mahadhir247"},"content":" taskList.remove(task);","lastModifiedDate":"2024-01-25"},{"lineNumber":190,"author":{"gitId":"mahadhir247"},"content":" String msg \u003d \"I\u0027ve removed the task from your list!\\n\" + task + \"\\n\"","lastModifiedDate":"2024-01-30"},{"lineNumber":191,"author":{"gitId":"mahadhir247"},"content":" + \"You have \" + taskList.size() + \" tasks!\\n\";","lastModifiedDate":"2024-01-30"},{"lineNumber":192,"author":{"gitId":"mahadhir247"},"content":" System.out.println(LINE_BREAK + msg + LINE_BREAK);","lastModifiedDate":"2024-01-30"},{"lineNumber":193,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":194,"author":{"gitId":"mahadhir247"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":195,"author":{"gitId":"mahadhir247"},"content":" public Command getCommand(String input) {","lastModifiedDate":"2024-01-30"},{"lineNumber":196,"author":{"gitId":"mahadhir247"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":197,"author":{"gitId":"mahadhir247"},"content":" return Command.valueOf(input.toUpperCase());","lastModifiedDate":"2024-01-30"},{"lineNumber":198,"author":{"gitId":"mahadhir247"},"content":" } catch (IllegalArgumentException iae) {","lastModifiedDate":"2024-01-30"},{"lineNumber":199,"author":{"gitId":"mahadhir247"},"content":" return Command.INVALID;","lastModifiedDate":"2024-01-25"},{"lineNumber":200,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":201,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":202,"author":{"gitId":"mahadhir247"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":203,"author":{"gitId":"mahadhir247"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-22"},{"lineNumber":204,"author":{"gitId":"mahadhir247"},"content":" Buddy buddy \u003d new Buddy();","lastModifiedDate":"2024-01-22"},{"lineNumber":205,"author":{"gitId":"mahadhir247"},"content":" buddy.greet();","lastModifiedDate":"2024-01-22"},{"lineNumber":206,"author":{"gitId":"mahadhir247"},"content":" buddy.run();","lastModifiedDate":"2024-01-23"},{"lineNumber":207,"author":{"gitId":"mahadhir247"},"content":" buddy.exit();","lastModifiedDate":"2024-01-22"},{"lineNumber":208,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":209,"author":{"gitId":"mahadhir247"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"mahadhir247":209}},{"path":"src/main/java/BuddyException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"mahadhir247"},"content":"public class BuddyException extends Exception {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"mahadhir247"},"content":" public BuddyException(String msg) {","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"mahadhir247"},"content":" super(msg);","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"mahadhir247"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"mahadhir247":5}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"mahadhir247"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"mahadhir247"},"content":" protected String by;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"mahadhir247"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"mahadhir247"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"mahadhir247"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"mahadhir247"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"mahadhir247"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"mahadhir247"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"mahadhir247"},"content":" public String writeTask() {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"mahadhir247"},"content":" return \"D | \" + super.writeTask() + \" | \" + by;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"mahadhir247"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"mahadhir247"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"mahadhir247"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"mahadhir247"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"mahadhir247":17}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"mahadhir247"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"mahadhir247"},"content":" protected String from;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"mahadhir247"},"content":" protected String to;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"mahadhir247"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"mahadhir247"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"mahadhir247"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"mahadhir247"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"mahadhir247"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"mahadhir247"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"mahadhir247"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"mahadhir247"},"content":" public String writeTask() {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"mahadhir247"},"content":" return \"E | \" + super.writeTask() + \" | \" + from + \" | \" + to;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"mahadhir247"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"mahadhir247"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"mahadhir247"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from + \" to: \" + to + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"mahadhir247"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"mahadhir247":19}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"mahadhir247"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"mahadhir247"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"mahadhir247"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"mahadhir247"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"mahadhir247"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"mahadhir247"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"mahadhir247"},"content":"public class Storage {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"mahadhir247"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"mahadhir247"},"content":" private String filePath;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"mahadhir247"},"content":" private ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"mahadhir247"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"mahadhir247"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"mahadhir247"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"mahadhir247"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"mahadhir247"},"content":" public ArrayList\u003cTask\u003e load() {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"mahadhir247"},"content":" File f \u003d new File(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"mahadhir247"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"mahadhir247"},"content":" if (!f.createNewFile()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"mahadhir247"},"content":" Scanner sc \u003d new Scanner(f);","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"mahadhir247"},"content":" while (sc.hasNext()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"mahadhir247"},"content":" String data \u003d sc.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"mahadhir247"},"content":" String[] dataSplit \u003d data.split(\" \\\\| \");","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"mahadhir247"},"content":" boolean isDone \u003d dataSplit[1].equals(\"true\");","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"mahadhir247"},"content":" switch (dataSplit[0]) {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"mahadhir247"},"content":" case \"T\":","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"mahadhir247"},"content":" Todo todo \u003d new Todo(dataSplit[2]);","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"mahadhir247"},"content":" if (isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"mahadhir247"},"content":" todo.mark();","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"mahadhir247"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"mahadhir247"},"content":" todo.unmark();","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"mahadhir247"},"content":" taskList.add(todo);","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"mahadhir247"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"mahadhir247"},"content":" case \"D\":","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"mahadhir247"},"content":" Deadline deadline \u003d new Deadline(dataSplit[2], dataSplit[3]);","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"mahadhir247"},"content":" if (isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"mahadhir247"},"content":" deadline.mark();","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"mahadhir247"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"mahadhir247"},"content":" deadline.unmark();","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"mahadhir247"},"content":" taskList.add(deadline);","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"mahadhir247"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"mahadhir247"},"content":" case \"E\":","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"mahadhir247"},"content":" Event event \u003d new Event(dataSplit[2], dataSplit[3], dataSplit[4]);","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"mahadhir247"},"content":" if (isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"mahadhir247"},"content":" event.mark();","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"mahadhir247"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"mahadhir247"},"content":" event.unmark();","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"mahadhir247"},"content":" taskList.add(event);","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"mahadhir247"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"mahadhir247"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"mahadhir247"},"content":" System.out.println(ioe.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"mahadhir247"},"content":" } catch (IndexOutOfBoundsException ioobe) {","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"mahadhir247"},"content":" System.out.println(\"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"mahadhir247"},"content":" + \"Contents of data file is not in the correct format.\\nPlease delete/modify the file\\n\"","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"mahadhir247"},"content":" + \"____________________________________________________________\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"mahadhir247"},"content":" return taskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"mahadhir247"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"mahadhir247"},"content":" public void save(ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"mahadhir247"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"mahadhir247"},"content":" FileWriter fw \u003d new FileWriter(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"mahadhir247"},"content":" for (Task task : taskList) {","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"mahadhir247"},"content":" fw.write(task.writeTask());","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"mahadhir247"},"content":" fw.write(System.lineSeparator());","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"mahadhir247"},"content":" fw.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"mahadhir247"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"mahadhir247"},"content":" System.out.println(ioe.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"mahadhir247"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"mahadhir247":78}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"mahadhir247"},"content":"public class Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"mahadhir247"},"content":" protected String description;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"mahadhir247"},"content":" protected boolean isDone \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"mahadhir247"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"mahadhir247"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"mahadhir247"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"mahadhir247"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"mahadhir247"},"content":" public void mark() {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"mahadhir247"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"mahadhir247"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"mahadhir247"},"content":" public void unmark() {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"mahadhir247"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"mahadhir247"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"mahadhir247"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"mahadhir247"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"mahadhir247"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"mahadhir247"},"content":" public String writeTask() {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"mahadhir247"},"content":" return isDone + \" | \" + description;","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"mahadhir247"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"mahadhir247"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"mahadhir247"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"mahadhir247"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"mahadhir247"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"mahadhir247":29}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"mahadhir247"},"content":"public class Todo extends Task{","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"mahadhir247"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"mahadhir247"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"mahadhir247"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"mahadhir247"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"mahadhir247"},"content":" public String writeTask() {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"mahadhir247"},"content":" return \"T | \" + super.writeTask();","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"mahadhir247"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"mahadhir247"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"mahadhir247"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"mahadhir247"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"mahadhir247"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"mahadhir247"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"mahadhir247":15}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"mahadhir247"},"content":"todo borrow book","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"mahadhir247"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"mahadhir247"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"mahadhir247"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"mahadhir247"},"content":"mark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"mahadhir247"},"content":"mark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"mahadhir247"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"mahadhir247"},"content":"unmark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"mahadhir247"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"mahadhir247"},"content":"delete 1","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"mahadhir247"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"mahadhir247":11}},{"path":"text-ui-test/inputWithErrors.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"mahadhir247"},"content":"unmark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"mahadhir247"},"content":"todo","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"mahadhir247"},"content":"deadline task","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"mahadhir247"},"content":"event task /from","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"mahadhir247"},"content":"todo task","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"mahadhir247"},"content":"mark 99","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"mahadhir247"},"content":"delete 99","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"mahadhir247":7}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"mahadhir247"},"content":"java -classpath ..\\bin Buddy \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":20,"mahadhir247":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":"mahadhir247"},"content":"java -classpath ../bin Buddy \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":37,"mahadhir247":1}}] diff --git a/mahadhir247_ip_master/commits.json b/mahadhir247_ip_master/commits.json index 0f65431c..6855ca29 100644 --- a/mahadhir247_ip_master/commits.json +++ b/mahadhir247_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"mahadhir247":[{"date":"2024-01-22","commitResults":[{"hash":"df55b8ecad6f51d12f008ba3af68b06ab3631e4b","isMergeCommit":false,"messageTitle":"Renamed chatbot to Buddy. Implemented skeletal version that greets user and exits","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":10}}},{"hash":"8335479bfddeb52d41ad63725c4e8ae2d95ccfbd","isMergeCommit":false,"messageTitle":"Added echo function that repeats commands entered by user and exits when user types \u0027bye\u0027","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":1}}},{"hash":"5f4754a4831db8939d38666504b01614ac577e5c","isMergeCommit":false,"messageTitle":"Added ability to store text entered by user and displays them when user types \u0027list\u0027","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":1}}}]},{"date":"2024-01-23","commitResults":[{"hash":"3a2c7b83e0b4996315589a53970cc9b8dc1818b6","isMergeCommit":false,"messageTitle":"Added ability to mark/unmark tasks","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":12}}}]},{"date":"2024-01-24","commitResults":[{"hash":"b1a1c69db6fe085cff44913b129ac25ee5aed711","isMergeCommit":false,"messageTitle":"Added todos,events and deadlines using inheritance. Fixed a bug where you can mark/unmark tasks using the wrong commands","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":105,"deletions":10}}},{"hash":"80c1dc0eca97e67e9d1d9d2999562b083cef1d15","isMergeCommit":false,"messageTitle":"Modified test ui testing files to reflect changes made to java files","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}}]},{"date":"2024-01-25","commitResults":[{"hash":"336f070da2a81e5b52f8be9e1dcf5edad6b1db73","isMergeCommit":false,"messageTitle":"Updated chatbot to handle errors from incorrect input. Included relevant test files to test incorrect inputs","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"java":{"insertions":84,"deletions":30}}},{"hash":"f82715849feac8b35288bbb8dcbc6ad707f2b6c4","isMergeCommit":false,"messageTitle":"Added ability to delete tasks from list, implemented using collections. Updated test files to reflect changes made. Fixed EXPECTED.TXT, which previously included incorrect results","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":1},"java":{"insertions":24,"deletions":0}}},{"hash":"02ccb7817f8c19654ca77bab68318e7776f6a655","isMergeCommit":false,"messageTitle":"Updated to use Java enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":21}}}]}]},"authorFileTypeContributionMap":{"mahadhir247":{"java":273,"md":0,"fxml":0,"sh":1,"bat":1,"gradle":0,"txt":18}},"authorContributionVariance":{"mahadhir247":5352.776},"authorDisplayNameMap":{"mahadhir247":"CS2103T-T09-4 MAHA..MAIL"}} +{"authorDailyContributionsMap":{"mahadhir247":[{"date":"2024-01-22","commitResults":[{"hash":"df55b8ecad6f51d12f008ba3af68b06ab3631e4b","isMergeCommit":false,"messageTitle":"Renamed chatbot to Buddy. Implemented skeletal version that greets user and exits","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":10}}},{"hash":"8335479bfddeb52d41ad63725c4e8ae2d95ccfbd","isMergeCommit":false,"messageTitle":"Added echo function that repeats commands entered by user and exits when user types \u0027bye\u0027","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":1}}},{"hash":"5f4754a4831db8939d38666504b01614ac577e5c","isMergeCommit":false,"messageTitle":"Added ability to store text entered by user and displays them when user types \u0027list\u0027","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":1}}}]},{"date":"2024-01-23","commitResults":[{"hash":"3a2c7b83e0b4996315589a53970cc9b8dc1818b6","isMergeCommit":false,"messageTitle":"Added ability to mark/unmark tasks","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":12}}}]},{"date":"2024-01-24","commitResults":[{"hash":"b1a1c69db6fe085cff44913b129ac25ee5aed711","isMergeCommit":false,"messageTitle":"Added todos,events and deadlines using inheritance. Fixed a bug where you can mark/unmark tasks using the wrong commands","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":105,"deletions":10}}},{"hash":"80c1dc0eca97e67e9d1d9d2999562b083cef1d15","isMergeCommit":false,"messageTitle":"Modified test ui testing files to reflect changes made to java files","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}}]},{"date":"2024-01-25","commitResults":[{"hash":"336f070da2a81e5b52f8be9e1dcf5edad6b1db73","isMergeCommit":false,"messageTitle":"Updated chatbot to handle errors from incorrect input. Included relevant test files to test incorrect inputs","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"java":{"insertions":84,"deletions":30}}},{"hash":"f82715849feac8b35288bbb8dcbc6ad707f2b6c4","isMergeCommit":false,"messageTitle":"Added ability to delete tasks from list, implemented using collections. Updated test files to reflect changes made. Fixed EXPECTED.TXT, which previously included incorrect results","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":1},"java":{"insertions":24,"deletions":0}}},{"hash":"02ccb7817f8c19654ca77bab68318e7776f6a655","isMergeCommit":false,"messageTitle":"Updated to use Java enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":21}}}]},{"date":"2024-01-30","commitResults":[{"hash":"875db96719fb3d25d615252734e1b331b065159c","isMergeCommit":false,"messageTitle":"Add save functionality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":254,"deletions":155}}},{"hash":"0511f57557fa60c311d406914cab266694368ae1","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"mahadhir247":{"java":372,"md":0,"fxml":0,"sh":1,"bat":1,"gradle":0,"txt":18}},"authorContributionVariance":{"mahadhir247":14340.806},"authorDisplayNameMap":{"mahadhir247":"CS2103T-T09-4 MAHA..MAIL"}} diff --git a/marcus-ny_ip_master/authorship.json b/marcus-ny_ip_master/authorship.json index e65adfce..c2ded8da 100644 --- a/marcus-ny_ip_master/authorship.json +++ b/marcus-ny_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marcus-ny"},"content":"public class Deadline extends Task{","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"marcus-ny"},"content":" private String by;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"marcus-ny"},"content":" public Deadline(String taskName, String by) {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"marcus-ny"},"content":" super(taskName);","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"marcus-ny"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"marcus-ny"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"marcus-ny"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"marcus-ny"},"content":" return \"[D]\" + super.toString() + \" ( by: \" + by + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"marcus-ny"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"marcus-ny":13}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marcus-ny"},"content":"public class Event extends Task{","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"marcus-ny"},"content":" String from;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"marcus-ny"},"content":" String to;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"marcus-ny"},"content":" public Event(String taskName, String from, String to) {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"marcus-ny"},"content":" super(taskName);","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"marcus-ny"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"marcus-ny"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"marcus-ny"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"marcus-ny"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"marcus-ny"},"content":" return \"[E]\" + super.toString() + \"( from: \" + from + \" to: \" + to + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"marcus-ny"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"marcus-ny":15}},{"path":"src/main/java/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marcus-ny"},"content":"public class Main {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"marcus-ny"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"marcus-ny"},"content":" Solaire solaire \u003d new Solaire();","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"marcus-ny"},"content":" solaire.startConversation();","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"marcus-ny"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"marcus-ny":6}},{"path":"src/main/java/Solaire.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marcus-ny"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"marcus-ny"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"marcus-ny"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"marcus-ny"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"marcus-ny"},"content":"public class Solaire {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"marcus-ny"},"content":" private ArrayList\u003cTask\u003e toDoList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"marcus-ny"},"content":" private Scanner scn \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"marcus-ny"},"content":" enum UserCommands {","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"marcus-ny"},"content":" GREET, BYE, MARK, UNMARK, LIST, TODO, EVENT, DEADLINE, DELETE","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"marcus-ny"},"content":" public void startConversation() {","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"marcus-ny"},"content":" greet();","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"marcus-ny"},"content":" while (true) {","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"marcus-ny"},"content":" String input \u003d acceptInput();","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"marcus-ny"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"marcus-ny"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"marcus-ny"},"content":" processInput(input);","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"marcus-ny"},"content":" waveBye();","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"marcus-ny"},"content":" private void lineBreak() {","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"marcus-ny"},"content":" System.out.print(\"--------------------------------------------------\\n\");","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"marcus-ny"},"content":" private void greet() {","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"marcus-ny"},"content":" String greetingMessage \u003d \"Oh hello there. I\u0027m Solaire of Astora.\\n\"","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"marcus-ny"},"content":" + \"The sun is a wondrous body. Like a magnificent father!\\n\"","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"marcus-ny"},"content":" + \"If only I could be so grossly incandescent!\\n\";","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"marcus-ny"},"content":" System.out.print(greetingMessage);","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"marcus-ny"},"content":" lineBreak();","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"marcus-ny"},"content":" private void waveBye() {","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"marcus-ny"},"content":" String farewellMessage \u003d \"Farewell!\\n\";","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"marcus-ny"},"content":" System.out.print(farewellMessage);","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"marcus-ny"},"content":" lineBreak();","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"marcus-ny"},"content":" scn.close();","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"marcus-ny"},"content":" private String acceptInput() {","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"marcus-ny"},"content":" String input \u003d this.scn.nextLine().toLowerCase();","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"marcus-ny"},"content":" return input;","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":52,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":53,"author":{"gitId":"marcus-ny"},"content":" private void processInput(String input) {","lastModifiedDate":"2024-01-23"},{"lineNumber":54,"author":{"gitId":"marcus-ny"},"content":" String[] inputCommand \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"marcus-ny"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"marcus-ny"},"content":" UserCommands command \u003d UserCommands.valueOf(inputCommand[0].toUpperCase());","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"marcus-ny"},"content":" switch (command) {","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"marcus-ny"},"content":" case GREET:","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"marcus-ny"},"content":" greet();","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"marcus-ny"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"marcus-ny"},"content":" case BYE:","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"marcus-ny"},"content":" waveBye();","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"marcus-ny"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"marcus-ny"},"content":" case MARK:","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"marcus-ny"},"content":" markDone(Integer.parseInt(inputCommand[1]));","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"marcus-ny"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"marcus-ny"},"content":" case UNMARK:","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"marcus-ny"},"content":" unmarkDone(Integer.parseInt(inputCommand[1]));","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"marcus-ny"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"marcus-ny"},"content":" case LIST:","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"marcus-ny"},"content":" showList();","lastModifiedDate":"2024-01-23"},{"lineNumber":73,"author":{"gitId":"marcus-ny"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"marcus-ny"},"content":" case TODO:","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"marcus-ny"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-24"},{"lineNumber":76,"author":{"gitId":"marcus-ny"},"content":" case EVENT:","lastModifiedDate":"2024-01-24"},{"lineNumber":77,"author":{"gitId":"marcus-ny"},"content":" processTaskCommand(input);","lastModifiedDate":"2024-01-24"},{"lineNumber":78,"author":{"gitId":"marcus-ny"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":79,"author":{"gitId":"marcus-ny"},"content":" case DELETE:","lastModifiedDate":"2024-01-24"},{"lineNumber":80,"author":{"gitId":"marcus-ny"},"content":" processRemoveFromList(input);","lastModifiedDate":"2024-01-24"},{"lineNumber":81,"author":{"gitId":"marcus-ny"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":82,"author":{"gitId":"marcus-ny"},"content":" default:","lastModifiedDate":"2024-01-24"},{"lineNumber":83,"author":{"gitId":"marcus-ny"},"content":" System.out.print(\"Unsupported command pattern\\n\");","lastModifiedDate":"2024-01-24"},{"lineNumber":84,"author":{"gitId":"marcus-ny"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":85,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":86,"author":{"gitId":"marcus-ny"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":87,"author":{"gitId":"marcus-ny"},"content":" System.out.println(\"I am not yet familiar with these commands\");","lastModifiedDate":"2024-01-24"},{"lineNumber":88,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":89,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":90,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":91,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":92,"author":{"gitId":"marcus-ny"},"content":" private void processTaskCommand(String input) {","lastModifiedDate":"2024-01-24"},{"lineNumber":93,"author":{"gitId":"marcus-ny"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":94,"author":{"gitId":"marcus-ny"},"content":" addToList(parseTaskInput(input));","lastModifiedDate":"2024-01-24"},{"lineNumber":95,"author":{"gitId":"marcus-ny"},"content":" } catch (SolaireException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":96,"author":{"gitId":"marcus-ny"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-24"},{"lineNumber":97,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":98,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":99,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":100,"author":{"gitId":"marcus-ny"},"content":" private void addToList(Task task) {","lastModifiedDate":"2024-01-24"},{"lineNumber":101,"author":{"gitId":"marcus-ny"},"content":" if (task !\u003d null) {","lastModifiedDate":"2024-01-24"},{"lineNumber":102,"author":{"gitId":"marcus-ny"},"content":" toDoList.add(task);","lastModifiedDate":"2024-01-24"},{"lineNumber":103,"author":{"gitId":"marcus-ny"},"content":" System.out.println(\"Added \" + task + \" to your list\");","lastModifiedDate":"2024-01-24"},{"lineNumber":104,"author":{"gitId":"marcus-ny"},"content":" lineBreak();","lastModifiedDate":"2024-01-24"},{"lineNumber":105,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":106,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":107,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":108,"author":{"gitId":"marcus-ny"},"content":" private void processRemoveFromList(String input) {","lastModifiedDate":"2024-01-24"},{"lineNumber":109,"author":{"gitId":"marcus-ny"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":110,"author":{"gitId":"marcus-ny"},"content":" String[] inputCommand \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-24"},{"lineNumber":111,"author":{"gitId":"marcus-ny"},"content":" if (inputCommand.length \u003c 2) {","lastModifiedDate":"2024-01-24"},{"lineNumber":112,"author":{"gitId":"marcus-ny"},"content":" throw new SolaireException(\"Please specify the ID of the task you wish to delete\\n\");","lastModifiedDate":"2024-01-24"},{"lineNumber":113,"author":{"gitId":"marcus-ny"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":114,"author":{"gitId":"marcus-ny"},"content":" Integer targetTaskId \u003d Integer.parseInt(inputCommand[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":115,"author":{"gitId":"marcus-ny"},"content":" Task taskToDelete \u003d toDoList.get(targetTaskId - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":116,"author":{"gitId":"marcus-ny"},"content":" toDoList.remove(taskToDelete);","lastModifiedDate":"2024-01-24"},{"lineNumber":117,"author":{"gitId":"marcus-ny"},"content":" System.out.println(\"Removed\" + taskToDelete + \" from your list\");","lastModifiedDate":"2024-01-24"},{"lineNumber":118,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":119,"author":{"gitId":"marcus-ny"},"content":" } catch (SolaireException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":120,"author":{"gitId":"marcus-ny"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-24"},{"lineNumber":121,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":122,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":123,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":124,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":125,"author":{"gitId":"marcus-ny"},"content":" private Task parseTaskInput(String input) throws SolaireException {","lastModifiedDate":"2024-01-24"},{"lineNumber":126,"author":{"gitId":"marcus-ny"},"content":" if (input.startsWith(\"deadline\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":127,"author":{"gitId":"marcus-ny"},"content":" Matcher deadlinePattern \u003d Pattern.compile(\"^(?i)deadline\\\\s+(.+)\\\\s+/by\\\\s+(\\\\S+.*)\").matcher(input);","lastModifiedDate":"2024-01-24"},{"lineNumber":128,"author":{"gitId":"marcus-ny"},"content":" if (deadlinePattern.matches()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":129,"author":{"gitId":"marcus-ny"},"content":" String taskName \u003d deadlinePattern.group(1);","lastModifiedDate":"2024-01-24"},{"lineNumber":130,"author":{"gitId":"marcus-ny"},"content":" String deadline \u003d deadlinePattern.group(2);","lastModifiedDate":"2024-01-24"},{"lineNumber":131,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":132,"author":{"gitId":"marcus-ny"},"content":" return new Deadline(taskName, deadline);","lastModifiedDate":"2024-01-24"},{"lineNumber":133,"author":{"gitId":"marcus-ny"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":134,"author":{"gitId":"marcus-ny"},"content":" throw new SolaireException(\"Incorrect format: follow deadline format as such: \\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":135,"author":{"gitId":"marcus-ny"},"content":" + \"deadline \u003cdescription\u003e /by \u003ctime\u003e\");","lastModifiedDate":"2024-01-24"},{"lineNumber":136,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":137,"author":{"gitId":"marcus-ny"},"content":" } else if (input.startsWith(\"todo\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":138,"author":{"gitId":"marcus-ny"},"content":" String[] inputTodo \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-24"},{"lineNumber":139,"author":{"gitId":"marcus-ny"},"content":" if (inputTodo.length \u003c 2 || inputTodo[1].trim().replaceAll(\"^\\\\s+\", \"\").isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":140,"author":{"gitId":"marcus-ny"},"content":" throw new SolaireException(\"The todo task description cannot be empty! Please use this format: \\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":141,"author":{"gitId":"marcus-ny"},"content":" \"todo \u003cdescription\u003e\");","lastModifiedDate":"2024-01-24"},{"lineNumber":142,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":143,"author":{"gitId":"marcus-ny"},"content":" return new Todo(inputTodo[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":144,"author":{"gitId":"marcus-ny"},"content":" } else if (input.startsWith(\"event\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":145,"author":{"gitId":"marcus-ny"},"content":" Matcher eventPattern \u003d Pattern.compile(\"^(?i)event\\\\s+(.+)\\\\s+/from\\\\s+(\\\\S+)\\\\s+/to\\\\s+(\\\\S+.*)$\")","lastModifiedDate":"2024-01-24"},{"lineNumber":146,"author":{"gitId":"marcus-ny"},"content":" .matcher(input);","lastModifiedDate":"2024-01-24"},{"lineNumber":147,"author":{"gitId":"marcus-ny"},"content":" if (eventPattern.matches()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":148,"author":{"gitId":"marcus-ny"},"content":" String taskName \u003d eventPattern.group(1);","lastModifiedDate":"2024-01-24"},{"lineNumber":149,"author":{"gitId":"marcus-ny"},"content":" String from \u003d eventPattern.group(2);","lastModifiedDate":"2024-01-24"},{"lineNumber":150,"author":{"gitId":"marcus-ny"},"content":" String to \u003d eventPattern.group(3);","lastModifiedDate":"2024-01-24"},{"lineNumber":151,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":152,"author":{"gitId":"marcus-ny"},"content":" return new Event(taskName, from, to);","lastModifiedDate":"2024-01-24"},{"lineNumber":153,"author":{"gitId":"marcus-ny"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":154,"author":{"gitId":"marcus-ny"},"content":" throw new SolaireException(\"Incorrect format; follow event format as such:\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":155,"author":{"gitId":"marcus-ny"},"content":" + \"event \u003cdescription\u003e /from \u003cstart\u003e /to \u003cend\u003e\");","lastModifiedDate":"2024-01-24"},{"lineNumber":156,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":157,"author":{"gitId":"marcus-ny"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":158,"author":{"gitId":"marcus-ny"},"content":" throw new SolaireException(\"Unable to determine task type\");","lastModifiedDate":"2024-01-24"},{"lineNumber":159,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":160,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":161,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":162,"author":{"gitId":"marcus-ny"},"content":" private void showList() {","lastModifiedDate":"2024-01-23"},{"lineNumber":163,"author":{"gitId":"marcus-ny"},"content":" System.out.print(\"Your list is as follows:\\n \" + \"-------------------\\n\");","lastModifiedDate":"2024-01-24"},{"lineNumber":164,"author":{"gitId":"marcus-ny"},"content":" for (Task item : toDoList) {","lastModifiedDate":"2024-01-24"},{"lineNumber":165,"author":{"gitId":"marcus-ny"},"content":" System.out.println(toDoList.indexOf(item) + 1 + \". \" + item.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":166,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":167,"author":{"gitId":"marcus-ny"},"content":" lineBreak();","lastModifiedDate":"2024-01-23"},{"lineNumber":168,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":169,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":170,"author":{"gitId":"marcus-ny"},"content":" private void markDone(int id) {","lastModifiedDate":"2024-01-24"},{"lineNumber":171,"author":{"gitId":"marcus-ny"},"content":" for (Task item : toDoList) {","lastModifiedDate":"2024-01-24"},{"lineNumber":172,"author":{"gitId":"marcus-ny"},"content":" if (item.getId() \u003d\u003d id) {","lastModifiedDate":"2024-01-24"},{"lineNumber":173,"author":{"gitId":"marcus-ny"},"content":" item.markAsDone();","lastModifiedDate":"2024-01-24"},{"lineNumber":174,"author":{"gitId":"marcus-ny"},"content":" System.out.print(\"Marked item number: \" + item.getId() + \"\\n\");","lastModifiedDate":"2024-01-24"},{"lineNumber":175,"author":{"gitId":"marcus-ny"},"content":" return;","lastModifiedDate":"2024-01-24"},{"lineNumber":176,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":177,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":178,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":179,"author":{"gitId":"marcus-ny"},"content":" System.out.print(\"Couldn\u0027t find task associated with given id\\n\");","lastModifiedDate":"2024-01-24"},{"lineNumber":180,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":181,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":182,"author":{"gitId":"marcus-ny"},"content":" private void unmarkDone(int id) {","lastModifiedDate":"2024-01-24"},{"lineNumber":183,"author":{"gitId":"marcus-ny"},"content":" for (Task item : toDoList) {","lastModifiedDate":"2024-01-24"},{"lineNumber":184,"author":{"gitId":"marcus-ny"},"content":" if (item.getId() \u003d\u003d id) {","lastModifiedDate":"2024-01-24"},{"lineNumber":185,"author":{"gitId":"marcus-ny"},"content":" item.unmarkDone();","lastModifiedDate":"2024-01-24"},{"lineNumber":186,"author":{"gitId":"marcus-ny"},"content":" System.out.print(\"Unmarked item number: \" + item.getId() + \"\\n\");","lastModifiedDate":"2024-01-24"},{"lineNumber":187,"author":{"gitId":"marcus-ny"},"content":" return;","lastModifiedDate":"2024-01-24"},{"lineNumber":188,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":189,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":190,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":191,"author":{"gitId":"marcus-ny"},"content":" System.out.print(\"Couldn\u0027t find task associated with given id\\n\");","lastModifiedDate":"2024-01-24"},{"lineNumber":192,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":193,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":194,"author":{"gitId":"marcus-ny"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"marcus-ny":194}},{"path":"src/main/java/SolaireException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marcus-ny"},"content":"public class SolaireException extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"marcus-ny"},"content":" public SolaireException(String errorMessage) {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"marcus-ny"},"content":" super(errorMessage);","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"marcus-ny"},"content":" ","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"marcus-ny"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"marcus-ny":6}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marcus-ny"},"content":"public class Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"marcus-ny"},"content":" private static int count \u003d 0;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"marcus-ny"},"content":" private int id;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"marcus-ny"},"content":" private String taskName;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"marcus-ny"},"content":" private Boolean isDone;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"marcus-ny"},"content":" public Task(String taskName) {","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"marcus-ny"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"marcus-ny"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"marcus-ny"},"content":" this.id \u003d ++count;","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"marcus-ny"},"content":" public int getId() {","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"marcus-ny"},"content":" return this.id;","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"marcus-ny"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"marcus-ny"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"marcus-ny"},"content":" public void unmarkDone() {","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"marcus-ny"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"marcus-ny"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"marcus-ny"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"marcus-ny"},"content":" String checkMark \u003d \"[\" + (isDone ? \"X\" : \" \") + \"] \";","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"marcus-ny"},"content":" return checkMark + taskName;","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"marcus-ny"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"marcus-ny":29}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marcus-ny"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"marcus-ny"},"content":" ","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"marcus-ny"},"content":" public Todo(String taskName) {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"marcus-ny"},"content":" super(taskName);","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"marcus-ny"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"marcus-ny"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"marcus-ny"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"marcus-ny"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"marcus-ny":11}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"marcus-ny"},"content":"todo eat lunch","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"marcus-ny"},"content":"event movie /from 2pm /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"marcus-ny"},"content":"deadline assignment 1 /by 31st Feb 2020","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"marcus-ny"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"marcus-ny"},"content":"mark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"marcus-ny"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"marcus-ny"},"content":"unmark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"marcus-ny"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"marcus-ny"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"marcus-ny":9}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"marcus-ny"},"content":"java -classpath ../bin Main \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"marcus-ny":1,"-":37}}] +[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marcus-ny"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"marcus-ny"},"content":" private String by;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"marcus-ny"},"content":" public Deadline(String taskName, String by) {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"marcus-ny"},"content":" super(taskName);","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"marcus-ny"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"marcus-ny"},"content":" public String getDeadline() {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"marcus-ny"},"content":" return this.by;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"marcus-ny"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"marcus-ny"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"marcus-ny"},"content":" return \"[D]\" + super.toString() + \" ( by: \" + by + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"marcus-ny"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"marcus-ny":17}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marcus-ny"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"marcus-ny"},"content":" String from;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"marcus-ny"},"content":" String to;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"marcus-ny"},"content":" public Event(String taskName, String from, String to) {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"marcus-ny"},"content":" super(taskName);","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"marcus-ny"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"marcus-ny"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"marcus-ny"},"content":" public String getStart() {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"marcus-ny"},"content":" return this.from;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"marcus-ny"},"content":" public String getEnd() {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"marcus-ny"},"content":" return this.to;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"marcus-ny"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"marcus-ny"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"marcus-ny"},"content":" return \"[E]\" + super.toString() + \"( from: \" + from + \" to: \" + to + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"marcus-ny"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"marcus-ny":24}},{"path":"src/main/java/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marcus-ny"},"content":"public class Main {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"marcus-ny"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"marcus-ny"},"content":" Solaire solaire \u003d new Solaire();","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"marcus-ny"},"content":" solaire.startConversation();","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"marcus-ny"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"marcus-ny":6}},{"path":"src/main/java/Solaire.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marcus-ny"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"marcus-ny"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"marcus-ny"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"marcus-ny"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"marcus-ny"},"content":"public class Solaire {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"marcus-ny"},"content":" private ArrayList\u003cTask\u003e toDoList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"marcus-ny"},"content":" private Scanner scn \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"marcus-ny"},"content":" enum UserCommands {","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"marcus-ny"},"content":" GREET, BYE, MARK, UNMARK, LIST, TODO, EVENT, DEADLINE, DELETE","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"marcus-ny"},"content":" public void startConversation() {","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"marcus-ny"},"content":" greet();","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"marcus-ny"},"content":" toDoList \u003d TaskIo.readFromLocal();","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"marcus-ny"},"content":" while (true) {","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"marcus-ny"},"content":" String input \u003d acceptInput();","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"marcus-ny"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"marcus-ny"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"marcus-ny"},"content":" processInput(input);","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"marcus-ny"},"content":" TaskIo.writeTasksToLocal(toDoList);","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"marcus-ny"},"content":" waveBye();","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"marcus-ny"},"content":" private void lineBreak() {","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"marcus-ny"},"content":" System.out.print(\"--------------------------------------------------\\n\");","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"marcus-ny"},"content":" private void greet() {","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"marcus-ny"},"content":" String greetingMessage \u003d \"Oh hello there. I\u0027m Solaire of Astora.\\n\"","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"marcus-ny"},"content":" + \"The sun is a wondrous body. Like a magnificent father!\\n\"","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"marcus-ny"},"content":" + \"If only I could be so grossly incandescent!\\n\";","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"marcus-ny"},"content":" System.out.print(greetingMessage);","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"marcus-ny"},"content":" lineBreak();","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"marcus-ny"},"content":" private void waveBye() {","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"marcus-ny"},"content":" String farewellMessage \u003d \"Farewell!\\n\";","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"marcus-ny"},"content":" System.out.print(farewellMessage);","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"marcus-ny"},"content":" lineBreak();","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"marcus-ny"},"content":" scn.close();","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"marcus-ny"},"content":" private String acceptInput() {","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"marcus-ny"},"content":" String input \u003d this.scn.nextLine().toLowerCase();","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"marcus-ny"},"content":" return input;","lastModifiedDate":"2024-01-23"},{"lineNumber":52,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":53,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":54,"author":{"gitId":"marcus-ny"},"content":" private void processInput(String input) {","lastModifiedDate":"2024-01-23"},{"lineNumber":55,"author":{"gitId":"marcus-ny"},"content":" String[] inputCommand \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"marcus-ny"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"marcus-ny"},"content":" UserCommands command \u003d UserCommands.valueOf(inputCommand[0].toUpperCase());","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"marcus-ny"},"content":" switch (command) {","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"marcus-ny"},"content":" case GREET:","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"marcus-ny"},"content":" greet();","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"marcus-ny"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"marcus-ny"},"content":" case BYE:","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"marcus-ny"},"content":" waveBye();","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"marcus-ny"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"marcus-ny"},"content":" case MARK:","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"marcus-ny"},"content":" markDone(Integer.parseInt(inputCommand[1]));","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"marcus-ny"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"marcus-ny"},"content":" case UNMARK:","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"marcus-ny"},"content":" unmarkDone(Integer.parseInt(inputCommand[1]));","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"marcus-ny"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"marcus-ny"},"content":" case LIST:","lastModifiedDate":"2024-01-24"},{"lineNumber":73,"author":{"gitId":"marcus-ny"},"content":" showList();","lastModifiedDate":"2024-01-23"},{"lineNumber":74,"author":{"gitId":"marcus-ny"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"marcus-ny"},"content":" case TODO:","lastModifiedDate":"2024-01-24"},{"lineNumber":76,"author":{"gitId":"marcus-ny"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-24"},{"lineNumber":77,"author":{"gitId":"marcus-ny"},"content":" case EVENT:","lastModifiedDate":"2024-01-24"},{"lineNumber":78,"author":{"gitId":"marcus-ny"},"content":" processTaskCommand(input);","lastModifiedDate":"2024-01-24"},{"lineNumber":79,"author":{"gitId":"marcus-ny"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":80,"author":{"gitId":"marcus-ny"},"content":" case DELETE:","lastModifiedDate":"2024-01-24"},{"lineNumber":81,"author":{"gitId":"marcus-ny"},"content":" processRemoveFromList(input);","lastModifiedDate":"2024-01-24"},{"lineNumber":82,"author":{"gitId":"marcus-ny"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":83,"author":{"gitId":"marcus-ny"},"content":" default:","lastModifiedDate":"2024-01-24"},{"lineNumber":84,"author":{"gitId":"marcus-ny"},"content":" System.out.print(\"Unsupported command pattern\\n\");","lastModifiedDate":"2024-01-24"},{"lineNumber":85,"author":{"gitId":"marcus-ny"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":86,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":87,"author":{"gitId":"marcus-ny"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":88,"author":{"gitId":"marcus-ny"},"content":" System.out.println(\"I am not yet familiar with these commands\");","lastModifiedDate":"2024-01-24"},{"lineNumber":89,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":90,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":91,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":92,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":93,"author":{"gitId":"marcus-ny"},"content":" private void processTaskCommand(String input) {","lastModifiedDate":"2024-01-24"},{"lineNumber":94,"author":{"gitId":"marcus-ny"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":95,"author":{"gitId":"marcus-ny"},"content":" addToList(parseTaskInput(input));","lastModifiedDate":"2024-01-24"},{"lineNumber":96,"author":{"gitId":"marcus-ny"},"content":" } catch (SolaireException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":97,"author":{"gitId":"marcus-ny"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-24"},{"lineNumber":98,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":99,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":100,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":101,"author":{"gitId":"marcus-ny"},"content":" private void addToList(Task task) {","lastModifiedDate":"2024-01-24"},{"lineNumber":102,"author":{"gitId":"marcus-ny"},"content":" if (task !\u003d null) {","lastModifiedDate":"2024-01-24"},{"lineNumber":103,"author":{"gitId":"marcus-ny"},"content":" toDoList.add(task);","lastModifiedDate":"2024-01-24"},{"lineNumber":104,"author":{"gitId":"marcus-ny"},"content":" System.out.println(\"Added \" + task + \" to your list\");","lastModifiedDate":"2024-01-24"},{"lineNumber":105,"author":{"gitId":"marcus-ny"},"content":" lineBreak();","lastModifiedDate":"2024-01-24"},{"lineNumber":106,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":107,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":108,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":109,"author":{"gitId":"marcus-ny"},"content":" private void processRemoveFromList(String input) {","lastModifiedDate":"2024-01-24"},{"lineNumber":110,"author":{"gitId":"marcus-ny"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":111,"author":{"gitId":"marcus-ny"},"content":" String[] inputCommand \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-24"},{"lineNumber":112,"author":{"gitId":"marcus-ny"},"content":" if (inputCommand.length \u003c 2) {","lastModifiedDate":"2024-01-24"},{"lineNumber":113,"author":{"gitId":"marcus-ny"},"content":" throw new SolaireException(\"Please specify the ID of the task you wish to delete\\n\");","lastModifiedDate":"2024-01-24"},{"lineNumber":114,"author":{"gitId":"marcus-ny"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":115,"author":{"gitId":"marcus-ny"},"content":" Integer targetTaskId \u003d Integer.parseInt(inputCommand[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":116,"author":{"gitId":"marcus-ny"},"content":" Task taskToDelete \u003d toDoList.get(targetTaskId - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":117,"author":{"gitId":"marcus-ny"},"content":" toDoList.remove(taskToDelete);","lastModifiedDate":"2024-01-24"},{"lineNumber":118,"author":{"gitId":"marcus-ny"},"content":" System.out.println(\"Removed\" + taskToDelete + \" from your list\");","lastModifiedDate":"2024-01-24"},{"lineNumber":119,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":120,"author":{"gitId":"marcus-ny"},"content":" } catch (SolaireException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":121,"author":{"gitId":"marcus-ny"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-24"},{"lineNumber":122,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":123,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":124,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":125,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":126,"author":{"gitId":"marcus-ny"},"content":" private Task parseTaskInput(String input) throws SolaireException {","lastModifiedDate":"2024-01-24"},{"lineNumber":127,"author":{"gitId":"marcus-ny"},"content":" if (input.startsWith(\"deadline\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":128,"author":{"gitId":"marcus-ny"},"content":" Matcher deadlinePattern \u003d Pattern.compile(\"^(?i)deadline\\\\s+(.+)\\\\s+/by\\\\s+(\\\\S+.*)\").matcher(input);","lastModifiedDate":"2024-01-24"},{"lineNumber":129,"author":{"gitId":"marcus-ny"},"content":" if (deadlinePattern.matches()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":130,"author":{"gitId":"marcus-ny"},"content":" String taskName \u003d deadlinePattern.group(1);","lastModifiedDate":"2024-01-24"},{"lineNumber":131,"author":{"gitId":"marcus-ny"},"content":" String deadline \u003d deadlinePattern.group(2);","lastModifiedDate":"2024-01-24"},{"lineNumber":132,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":133,"author":{"gitId":"marcus-ny"},"content":" return new Deadline(taskName, deadline);","lastModifiedDate":"2024-01-24"},{"lineNumber":134,"author":{"gitId":"marcus-ny"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":135,"author":{"gitId":"marcus-ny"},"content":" throw new SolaireException(","lastModifiedDate":"2024-01-30"},{"lineNumber":136,"author":{"gitId":"marcus-ny"},"content":" \"Incorrect format: follow deadline format as such: \\n\" + \"deadline \u003cdescription\u003e /by \u003ctime\u003e\");","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":138,"author":{"gitId":"marcus-ny"},"content":" } else if (input.startsWith(\"todo\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":139,"author":{"gitId":"marcus-ny"},"content":" String[] inputTodo \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-24"},{"lineNumber":140,"author":{"gitId":"marcus-ny"},"content":" if (inputTodo.length \u003c 2 || inputTodo[1].trim().replaceAll(\"^\\\\s+\", \"\").isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":141,"author":{"gitId":"marcus-ny"},"content":" throw new SolaireException(","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"marcus-ny"},"content":" \"The todo task description cannot be empty! Please use this format: \\n\" + \"todo \u003cdescription\u003e\");","lastModifiedDate":"2024-01-30"},{"lineNumber":143,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":144,"author":{"gitId":"marcus-ny"},"content":" return new Todo(inputTodo[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":145,"author":{"gitId":"marcus-ny"},"content":" } else if (input.startsWith(\"event\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":146,"author":{"gitId":"marcus-ny"},"content":" Matcher eventPattern \u003d Pattern.compile(\"^(?i)event\\\\s+(.+)\\\\s+/from\\\\s+(\\\\S+)\\\\s+/to\\\\s+(\\\\S+.*)$\")","lastModifiedDate":"2024-01-24"},{"lineNumber":147,"author":{"gitId":"marcus-ny"},"content":" .matcher(input);","lastModifiedDate":"2024-01-24"},{"lineNumber":148,"author":{"gitId":"marcus-ny"},"content":" if (eventPattern.matches()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":149,"author":{"gitId":"marcus-ny"},"content":" String taskName \u003d eventPattern.group(1);","lastModifiedDate":"2024-01-24"},{"lineNumber":150,"author":{"gitId":"marcus-ny"},"content":" String from \u003d eventPattern.group(2);","lastModifiedDate":"2024-01-24"},{"lineNumber":151,"author":{"gitId":"marcus-ny"},"content":" String to \u003d eventPattern.group(3);","lastModifiedDate":"2024-01-24"},{"lineNumber":152,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":153,"author":{"gitId":"marcus-ny"},"content":" return new Event(taskName, from, to);","lastModifiedDate":"2024-01-24"},{"lineNumber":154,"author":{"gitId":"marcus-ny"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":155,"author":{"gitId":"marcus-ny"},"content":" throw new SolaireException(\"Incorrect format; follow event format as such:\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":156,"author":{"gitId":"marcus-ny"},"content":" + \"event \u003cdescription\u003e /from \u003cstart\u003e /to \u003cend\u003e\");","lastModifiedDate":"2024-01-24"},{"lineNumber":157,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":158,"author":{"gitId":"marcus-ny"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":159,"author":{"gitId":"marcus-ny"},"content":" throw new SolaireException(\"Unable to determine task type\");","lastModifiedDate":"2024-01-24"},{"lineNumber":160,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":161,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":162,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":163,"author":{"gitId":"marcus-ny"},"content":" private void showList() {","lastModifiedDate":"2024-01-23"},{"lineNumber":164,"author":{"gitId":"marcus-ny"},"content":" System.out.print(\"Your list is as follows:\\n \" + \"-------------------\\n\");","lastModifiedDate":"2024-01-24"},{"lineNumber":165,"author":{"gitId":"marcus-ny"},"content":" for (Task item : toDoList) {","lastModifiedDate":"2024-01-24"},{"lineNumber":166,"author":{"gitId":"marcus-ny"},"content":" System.out.println(toDoList.indexOf(item) + 1 + \". \" + item.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":167,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":168,"author":{"gitId":"marcus-ny"},"content":" lineBreak();","lastModifiedDate":"2024-01-23"},{"lineNumber":169,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":170,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":171,"author":{"gitId":"marcus-ny"},"content":" private void markDone(int id) {","lastModifiedDate":"2024-01-24"},{"lineNumber":172,"author":{"gitId":"marcus-ny"},"content":" for (Task item : toDoList) {","lastModifiedDate":"2024-01-24"},{"lineNumber":173,"author":{"gitId":"marcus-ny"},"content":" if (item.getId() \u003d\u003d id) {","lastModifiedDate":"2024-01-24"},{"lineNumber":174,"author":{"gitId":"marcus-ny"},"content":" item.markAsDone();","lastModifiedDate":"2024-01-24"},{"lineNumber":175,"author":{"gitId":"marcus-ny"},"content":" System.out.print(\"Marked item number: \" + item.getId() + \"\\n\");","lastModifiedDate":"2024-01-24"},{"lineNumber":176,"author":{"gitId":"marcus-ny"},"content":" return;","lastModifiedDate":"2024-01-24"},{"lineNumber":177,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":178,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":179,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":180,"author":{"gitId":"marcus-ny"},"content":" System.out.print(\"Couldn\u0027t find task associated with given id\\n\");","lastModifiedDate":"2024-01-24"},{"lineNumber":181,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":182,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":183,"author":{"gitId":"marcus-ny"},"content":" private void unmarkDone(int id) {","lastModifiedDate":"2024-01-24"},{"lineNumber":184,"author":{"gitId":"marcus-ny"},"content":" for (Task item : toDoList) {","lastModifiedDate":"2024-01-24"},{"lineNumber":185,"author":{"gitId":"marcus-ny"},"content":" if (item.getId() \u003d\u003d id) {","lastModifiedDate":"2024-01-24"},{"lineNumber":186,"author":{"gitId":"marcus-ny"},"content":" item.unmarkDone();","lastModifiedDate":"2024-01-24"},{"lineNumber":187,"author":{"gitId":"marcus-ny"},"content":" System.out.print(\"Unmarked item number: \" + item.getId() + \"\\n\");","lastModifiedDate":"2024-01-24"},{"lineNumber":188,"author":{"gitId":"marcus-ny"},"content":" return;","lastModifiedDate":"2024-01-24"},{"lineNumber":189,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":190,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":191,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":192,"author":{"gitId":"marcus-ny"},"content":" System.out.print(\"Couldn\u0027t find task associated with given id\\n\");","lastModifiedDate":"2024-01-24"},{"lineNumber":193,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":194,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":195,"author":{"gitId":"marcus-ny"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"marcus-ny":195}},{"path":"src/main/java/SolaireException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marcus-ny"},"content":"public class SolaireException extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"marcus-ny"},"content":" public SolaireException(String errorMessage) {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"marcus-ny"},"content":" super(errorMessage);","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"marcus-ny"},"content":" ","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"marcus-ny"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"marcus-ny":6}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marcus-ny"},"content":"public class Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"marcus-ny"},"content":" private static int count \u003d 0;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"marcus-ny"},"content":" private int id;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"marcus-ny"},"content":" private String taskName;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"marcus-ny"},"content":" private Boolean isDone;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"marcus-ny"},"content":" public Task(String taskName) {","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"marcus-ny"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"marcus-ny"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"marcus-ny"},"content":" this.id \u003d ++count;","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"marcus-ny"},"content":" public int getId() {","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"marcus-ny"},"content":" return this.id;","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"marcus-ny"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"marcus-ny"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"marcus-ny"},"content":" public void unmarkDone() {","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"marcus-ny"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"marcus-ny"},"content":" public Boolean getIsDone() {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"marcus-ny"},"content":" return this.isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"marcus-ny"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"marcus-ny"},"content":" return this.taskName;","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"marcus-ny"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"marcus-ny"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"marcus-ny"},"content":" String checkMark \u003d \"[\" + (isDone ? \"X\" : \" \") + \"] \";","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"marcus-ny"},"content":" return checkMark + taskName;","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"marcus-ny"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"marcus-ny":38}},{"path":"src/main/java/TaskIo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marcus-ny"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"marcus-ny"},"content":"import java.util.List;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"marcus-ny"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"marcus-ny"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"marcus-ny"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"marcus-ny"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"marcus-ny"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"marcus-ny"},"content":"public class TaskIo {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"marcus-ny"},"content":" private static ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"marcus-ny"},"content":" public static ArrayList\u003cTask\u003e readFromLocal() {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"marcus-ny"},"content":" // Clear current tasklist","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"marcus-ny"},"content":" taskList.clear();","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"marcus-ny"},"content":" // Read from target file","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"marcus-ny"},"content":" String filePath \u003d \"src/main/resources/Solaire.txt\";","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"marcus-ny"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"marcus-ny"},"content":" List\u003cString\u003e lines \u003d Files.readAllLines(Paths.get(filePath));","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"marcus-ny"},"content":" for (String line : lines) {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"marcus-ny"},"content":" parseTasks(line);","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"marcus-ny"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"marcus-ny"},"content":" System.out.println(\"Something went wrong: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"marcus-ny"},"content":" return taskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"marcus-ny"},"content":" public static void writeTasksToLocal(ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"marcus-ny"},"content":" String filePath \u003d \"src/main/resources/Solaire.txt\";","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"marcus-ny"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"marcus-ny"},"content":" TaskIo.taskList \u003d taskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"marcus-ny"},"content":" BufferedWriter bw \u003d new BufferedWriter(new FileWriter(filePath));","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"marcus-ny"},"content":" for (Task task : taskList) {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"marcus-ny"},"content":" String content \u003d \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"marcus-ny"},"content":" if (task instanceof Todo) {","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"marcus-ny"},"content":" content \u003d \"T | \" + (task.getIsDone() ? \"1\" : \"0\") + \" | \" + (task.getDescription());","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"marcus-ny"},"content":" } else if (task instanceof Deadline) {","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"marcus-ny"},"content":" Deadline ddlTask \u003d (Deadline) task;","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"marcus-ny"},"content":" content \u003d \"D | \" + (ddlTask.getIsDone() ? \"1\" : \"0\") + \" | \" + (ddlTask.getDescription()) + \" | \"","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"marcus-ny"},"content":" + (ddlTask.getDeadline());","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"marcus-ny"},"content":" } else if (task instanceof Event) {","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"marcus-ny"},"content":" Event eventTask \u003d (Event) task;","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"marcus-ny"},"content":" content \u003d \"E | \" + (eventTask.getIsDone() ? \"1\" : \"0\") + \" | \" + (eventTask.getDescription())","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"marcus-ny"},"content":" + \" | \" + (eventTask.getStart()) + \" | \" + (eventTask.getEnd());","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"marcus-ny"},"content":" if (!content.equals(\"\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"marcus-ny"},"content":" bw.write(content);","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"marcus-ny"},"content":" bw.newLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"marcus-ny"},"content":" bw.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"marcus-ny"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"marcus-ny"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"marcus-ny"},"content":" private static void parseTasks(String line) {","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"marcus-ny"},"content":" String[] taskDetails \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"marcus-ny"},"content":" String taskType \u003d taskDetails[0].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"marcus-ny"},"content":" Boolean isComplete \u003d taskDetails[1].trim().equals(\"1\") ? true : false;","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"marcus-ny"},"content":" String taskDescription \u003d taskDetails[2].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"marcus-ny"},"content":" /*","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"marcus-ny"},"content":" * for (String x : taskDetails) System.out.println(x);","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"marcus-ny"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"marcus-ny"},"content":" switch (taskDetails.length) {","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"marcus-ny"},"content":" case 3: {","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"marcus-ny"},"content":" Task newTask \u003d new Todo(taskDescription);","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"marcus-ny"},"content":" if (isComplete) {","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"marcus-ny"},"content":" newTask.markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"marcus-ny"},"content":" taskList.add(newTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"marcus-ny"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"marcus-ny"},"content":" case 4: {","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"marcus-ny"},"content":" Task newTask;","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"marcus-ny"},"content":" if (taskType.trim().equals(\"D\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"marcus-ny"},"content":" newTask \u003d new Deadline(taskDescription, taskDetails[3]);","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"marcus-ny"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"marcus-ny"},"content":" String[] timeDetails \u003d taskDetails[3].split(\"\\\\-\");","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"marcus-ny"},"content":" newTask \u003d new Event(taskDescription, timeDetails[0], timeDetails[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"marcus-ny"},"content":" if (isComplete) {","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"marcus-ny"},"content":" newTask.markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"marcus-ny"},"content":" taskList.add(newTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"marcus-ny"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"marcus-ny"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"marcus-ny":99}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marcus-ny"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"marcus-ny"},"content":" ","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"marcus-ny"},"content":" public Todo(String taskName) {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"marcus-ny"},"content":" super(taskName);","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"marcus-ny"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"marcus-ny"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"marcus-ny"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"marcus-ny"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"marcus-ny":11}},{"path":"src/main/resources/Solaire.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"marcus-ny"},"content":"T | 1 | read book","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"marcus-ny"},"content":"D | 1 | return book | June 6th","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"marcus-ny"},"content":"T | 1 | join sports club","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"marcus-ny"},"content":"T | 0 | eat more","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"marcus-ny"},"content":"T | 0 | eat even more","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"marcus-ny":5}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"marcus-ny"},"content":"todo eat lunch","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"marcus-ny"},"content":"event movie /from 2pm /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"marcus-ny"},"content":"deadline assignment 1 /by 31st Feb 2020","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"marcus-ny"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"marcus-ny"},"content":"mark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"marcus-ny"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"marcus-ny"},"content":"unmark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"marcus-ny"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"marcus-ny"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"marcus-ny":9}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"marcus-ny"},"content":"java -classpath ../bin Main \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"marcus-ny":1,"-":37}}] diff --git a/marcus-ny_ip_master/commits.json b/marcus-ny_ip_master/commits.json index a37b7e8b..e7ec1c23 100644 --- a/marcus-ny_ip_master/commits.json +++ b/marcus-ny_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"marcus-ny":[{"date":"2024-01-23","commitResults":[{"hash":"ce98641e7db6cd66828cae187a22a491f07d83b6","isMergeCommit":false,"messageTitle":"feature: implement level-1","messageBody":"- Add simple greeting and farewell message\n","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":10}}},{"hash":"fd98df103ab6781088179e535583df17e3d15ba2","isMergeCommit":false,"messageTitle":"refactor: move chatbot to own class","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":3}}},{"hash":"6314ddd0d1b45dc8d7aba6ce3ad40999e303a3f3","isMergeCommit":false,"messageTitle":"implement level-1","messageBody":"- Add echo behaviour to Solaire\n","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":0}}},{"hash":"16ea506ab6fb9e036522b09b121d7488d7d38554","isMergeCommit":false,"messageTitle":"implement level-2","messageBody":"- added a To-do-list that stores list of user inputs and print them on request\n","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":12}}}]},{"date":"2024-01-24","commitResults":[{"hash":"97e6d6cc680e14e1d374807a03f16f22dec67b4f","isMergeCommit":false,"messageTitle":"implement level 3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":81,"deletions":7}}},{"hash":"8e613e91de2acca0da8ad81ddcf1e932533ac92d","isMergeCommit":false,"messageTitle":"add different sub-task categories","messageBody":"- add Deadline, Event and Todo classes that extend Task class\n","fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":1}}},{"hash":"442fe9ba39b1c15dda1cf3581cff9e80923ab5ce","isMergeCommit":false,"messageTitle":"implement level 4","messageBody":"- add different commands for different task types\n","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":73,"deletions":32}}},{"hash":"d8cb6a25427b40dfae7e57a348e4850b3ec69b23","isMergeCommit":false,"messageTitle":"implement testing scripts","messageBody":"- write sample test inputs and outputs\n","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":11,"deletions":11},"sh":{"insertions":1,"deletions":1}}},{"hash":"7cc59a4f6c14418d524093cff493266286bbbf34","isMergeCommit":false,"messageTitle":"implement chatbot error","messageBody":"- implement new exception called SolaireException\n- handle incorrect input text formats and recommend the correct format to user\n","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":30}}},{"hash":"6f48c6c9d0175a4ad7619a62aa3fee706608acd1","isMergeCommit":false,"messageTitle":"implement task delete","messageBody":"","tags":["Level-6","A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":69,"deletions":52}}}]}]},"authorFileTypeContributionMap":{"marcus-ny":{"java":274,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":0,"txt":9}},"authorContributionVariance":{"marcus-ny":30264.584},"authorDisplayNameMap":{"marcus-ny":"CS2103T-W13-1 KYAL..THET"}} +{"authorDailyContributionsMap":{"marcus-ny":[{"date":"2024-01-23","commitResults":[{"hash":"ce98641e7db6cd66828cae187a22a491f07d83b6","isMergeCommit":false,"messageTitle":"feature: implement level-1","messageBody":"- Add simple greeting and farewell message\n","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":10}}},{"hash":"fd98df103ab6781088179e535583df17e3d15ba2","isMergeCommit":false,"messageTitle":"refactor: move chatbot to own class","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":3}}},{"hash":"6314ddd0d1b45dc8d7aba6ce3ad40999e303a3f3","isMergeCommit":false,"messageTitle":"implement level-1","messageBody":"- Add echo behaviour to Solaire\n","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":0}}},{"hash":"16ea506ab6fb9e036522b09b121d7488d7d38554","isMergeCommit":false,"messageTitle":"implement level-2","messageBody":"- added a To-do-list that stores list of user inputs and print them on request\n","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":12}}}]},{"date":"2024-01-24","commitResults":[{"hash":"97e6d6cc680e14e1d374807a03f16f22dec67b4f","isMergeCommit":false,"messageTitle":"implement level 3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":81,"deletions":7}}},{"hash":"8e613e91de2acca0da8ad81ddcf1e932533ac92d","isMergeCommit":false,"messageTitle":"add different sub-task categories","messageBody":"- add Deadline, Event and Todo classes that extend Task class\n","fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":1}}},{"hash":"442fe9ba39b1c15dda1cf3581cff9e80923ab5ce","isMergeCommit":false,"messageTitle":"implement level 4","messageBody":"- add different commands for different task types\n","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":73,"deletions":32}}},{"hash":"d8cb6a25427b40dfae7e57a348e4850b3ec69b23","isMergeCommit":false,"messageTitle":"implement testing scripts","messageBody":"- write sample test inputs and outputs\n","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":11,"deletions":11},"sh":{"insertions":1,"deletions":1}}},{"hash":"7cc59a4f6c14418d524093cff493266286bbbf34","isMergeCommit":false,"messageTitle":"implement chatbot error","messageBody":"- implement new exception called SolaireException\n- handle incorrect input text formats and recommend the correct format to user\n","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":30}}},{"hash":"6f48c6c9d0175a4ad7619a62aa3fee706608acd1","isMergeCommit":false,"messageTitle":"implement task delete","messageBody":"","tags":["Level-6","A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":69,"deletions":52}}}]},{"date":"2024-01-30","commitResults":[{"hash":"07c84b366f68b1988c924f5d5657b1d02b3d1975","isMergeCommit":false,"messageTitle":"Format Solaire.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":31}}},{"hash":"9777704b18062536e1adc11b2e7ce4ba195cacfa","isMergeCommit":false,"messageTitle":"Add TaskIO.java","messageBody":"Reads local file input and converts to relevant Tasks\n","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":67,"deletions":1}}},{"hash":"0ce64525001cd88cf72814ba4abbd8b5025ccf6e","isMergeCommit":false,"messageTitle":"Add file writing capabilities","messageBody":"Solaire can now write and read tasks from a txt file\n","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":3},"java":{"insertions":60,"deletions":4}}},{"hash":"dcd9e5cde3ab14e475b4853e0143eedcc942a4b4","isMergeCommit":true,"messageTitle":"Merge pull request #1 from marcus-ny/branch-Level-7","messageBody":"Branch level 7","tags":["Level-7"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"marcus-ny":{"java":396,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":0,"txt":14}},"authorContributionVariance":{"marcus-ny":19085.387},"authorDisplayNameMap":{"marcus-ny":"CS2103T-W13-1 KYAL..THET"}} diff --git a/pjanthony2001_ip_master/authorship.json b/pjanthony2001_ip_master/authorship.json index 2abec344..bdd2ee86 100644 --- a/pjanthony2001_ip_master/authorship.json +++ b/pjanthony2001_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":"pjanthony2001"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"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":"pjanthony2001"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2024-01-28"},{"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":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"pjanthony2001"},"content":"checkstyle {","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"pjanthony2001"},"content":" version \u003d \u002710.2\u0027","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"pjanthony2001"},"content":"}","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"pjanthony2001":8,"-":41}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pjanthony2001"},"content":"package duke;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"pjanthony2001"},"content":"import duke.ui.UserInterface;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"pjanthony2001"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":10,"author":{"gitId":"pjanthony2001"},"content":" String logo \u003d \" _______ _ _____ _______ _______ _______\\n\"","lastModifiedDate":"2024-01-20"},{"lineNumber":11,"author":{"gitId":"pjanthony2001"},"content":" + \"|\\\\ /|( ___ )( \\\\ / ___ \\\\ ( __ )( __ )( __ )\\n\"","lastModifiedDate":"2024-01-20"},{"lineNumber":12,"author":{"gitId":"pjanthony2001"},"content":" + \"| ) ( || ( ) || ( ( ( ) )| ( ) || ( ) || ( ) |\\n\"","lastModifiedDate":"2024-01-20"},{"lineNumber":13,"author":{"gitId":"pjanthony2001"},"content":" + \"| (___) || (___) || | ( (___) || | / || | / || | / |\\n\"","lastModifiedDate":"2024-01-20"},{"lineNumber":14,"author":{"gitId":"pjanthony2001"},"content":" + \"| ___ || ___ || | \\\\____ || (/ /) || (/ /) || (/ /) |\\n\"","lastModifiedDate":"2024-01-20"},{"lineNumber":15,"author":{"gitId":"pjanthony2001"},"content":" + \"| ( ) || ( ) || | ) || / | || / | || / | |\\n\"","lastModifiedDate":"2024-01-20"},{"lineNumber":16,"author":{"gitId":"pjanthony2001"},"content":" + \"| ) ( || ) ( || (____/\\\\ /\\\\____) )| (__) || (__) || (__) |\\n\"","lastModifiedDate":"2024-01-20"},{"lineNumber":17,"author":{"gitId":"pjanthony2001"},"content":" + \"|/ \\\\||/ \\\\|(_______/ \\\\______/ (_______)(_______)(_______)\\n\";","lastModifiedDate":"2024-01-20"},{"lineNumber":18,"author":{"gitId":"pjanthony2001"},"content":" System.out.println(logo);","lastModifiedDate":"2024-01-20"},{"lineNumber":19,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"pjanthony2001"},"content":" UserInterface userInterface \u003d new UserInterface();","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"pjanthony2001"},"content":" userInterface.start();","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":23,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"pjanthony2001":19,"-":4}},{"path":"src/main/java/duke/codec/Codec.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pjanthony2001"},"content":"package duke.codec;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"pjanthony2001"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"pjanthony2001"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"pjanthony2001"},"content":"import java.util.StringJoiner;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"pjanthony2001"},"content":"import duke.exceptions.ProcessingException;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"pjanthony2001"},"content":"import duke.tasks.Deadline;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"pjanthony2001"},"content":"import duke.tasks.Event;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"pjanthony2001"},"content":"import duke.tasks.Task;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"pjanthony2001"},"content":"import duke.tasks.Todo;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"pjanthony2001"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"pjanthony2001"},"content":" * The `Codec` class provides methods for encoding and decoding tasks.","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"pjanthony2001"},"content":"public class Codec {","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"pjanthony2001"},"content":" private final String delimiter \u003d \", \";","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"pjanthony2001"},"content":" * Encodes a task into a string representation.","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"pjanthony2001"},"content":" * @param task The task to be encoded.","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"pjanthony2001"},"content":" * @return A string representation of the encoded task.","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"pjanthony2001"},"content":" public String encode(Task task) {","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"pjanthony2001"},"content":" String[] encodedTask \u003d task.encode();","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"pjanthony2001"},"content":" return buildString(encodedTask);","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"pjanthony2001"},"content":" * Builds a concatenated string from an array of string values using a specified delimiter.","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"pjanthony2001"},"content":" * @param values The array of values to be joined.","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"pjanthony2001"},"content":" * @return A concatenated string with values separated by the specified delimiter.","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"pjanthony2001"},"content":" public String buildString(String... values) {","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"pjanthony2001"},"content":" StringJoiner encodedString \u003d new StringJoiner(delimiter);","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"pjanthony2001"},"content":" for (String string : values) {","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"pjanthony2001"},"content":" encodedString.add(string);","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"pjanthony2001"},"content":" return encodedString.toString();","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"pjanthony2001"},"content":" * Decodes a string representation of a task into a Task object.","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"pjanthony2001"},"content":" * @param string The string representation of the task to be decoded.","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"pjanthony2001"},"content":" * @return A Task object representing the decoded task.","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"pjanthony2001"},"content":" * @throws ProcessingException If there is an error while decoding the task.","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"pjanthony2001"},"content":" public Task decode(String string) throws ProcessingException {","lastModifiedDate":"2024-01-26"},{"lineNumber":54,"author":{"gitId":"pjanthony2001"},"content":" String[] splitString \u003d string.split(delimiter);","lastModifiedDate":"2024-01-26"},{"lineNumber":55,"author":{"gitId":"pjanthony2001"},"content":" switch (splitString[0]) {","lastModifiedDate":"2024-01-26"},{"lineNumber":56,"author":{"gitId":"pjanthony2001"},"content":" case \"D\":","lastModifiedDate":"2024-01-26"},{"lineNumber":57,"author":{"gitId":"pjanthony2001"},"content":" return decodeDeadline(splitString);","lastModifiedDate":"2024-01-26"},{"lineNumber":58,"author":{"gitId":"pjanthony2001"},"content":" case \"T\":","lastModifiedDate":"2024-01-26"},{"lineNumber":59,"author":{"gitId":"pjanthony2001"},"content":" return decodeTodo(splitString);","lastModifiedDate":"2024-01-26"},{"lineNumber":60,"author":{"gitId":"pjanthony2001"},"content":" case \"E\":","lastModifiedDate":"2024-01-26"},{"lineNumber":61,"author":{"gitId":"pjanthony2001"},"content":" return decodeEvent(splitString);","lastModifiedDate":"2024-01-26"},{"lineNumber":62,"author":{"gitId":"pjanthony2001"},"content":" default:","lastModifiedDate":"2024-01-26"},{"lineNumber":63,"author":{"gitId":"pjanthony2001"},"content":" throw new ProcessingException(\"Error while decoding identifier\");","lastModifiedDate":"2024-01-26"},{"lineNumber":64,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":65,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":66,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":67,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"pjanthony2001"},"content":" * Decodes a string representation of a Deadline task into a Deadline object.","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"pjanthony2001"},"content":" * @param splitString The array of split values from the encoded Deadline string.","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"pjanthony2001"},"content":" * @return A Deadline object representing the decoded Deadline task.","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"pjanthony2001"},"content":" * @throws ProcessingException If there is an error while decoding the Deadline task.","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"pjanthony2001"},"content":" public Task decodeDeadline(String[] splitString) throws ProcessingException {","lastModifiedDate":"2024-01-26"},{"lineNumber":75,"author":{"gitId":"pjanthony2001"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":76,"author":{"gitId":"pjanthony2001"},"content":" Boolean done \u003d Boolean.parseBoolean(splitString[1]);","lastModifiedDate":"2024-01-26"},{"lineNumber":77,"author":{"gitId":"pjanthony2001"},"content":" String taskName \u003d splitString[2];","lastModifiedDate":"2024-01-26"},{"lineNumber":78,"author":{"gitId":"pjanthony2001"},"content":" LocalDateTime by \u003d TimeProcessor.fromString(splitString[3]);","lastModifiedDate":"2024-01-26"},{"lineNumber":79,"author":{"gitId":"pjanthony2001"},"content":" return new Deadline(taskName, by, done);","lastModifiedDate":"2024-01-26"},{"lineNumber":80,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"pjanthony2001"},"content":" } catch (IndexOutOfBoundsException | DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"pjanthony2001"},"content":" throw new ProcessingException(\"Error while decoding Deadline\", e);","lastModifiedDate":"2024-01-26"},{"lineNumber":83,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":84,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":85,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":86,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":87,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"pjanthony2001"},"content":" * Decodes a string representation of an Event task into an Event object.","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":90,"author":{"gitId":"pjanthony2001"},"content":" * @param splitString The array of split values from the encoded Event string.","lastModifiedDate":"2024-01-28"},{"lineNumber":91,"author":{"gitId":"pjanthony2001"},"content":" * @return An Event object representing the decoded Event task.","lastModifiedDate":"2024-01-28"},{"lineNumber":92,"author":{"gitId":"pjanthony2001"},"content":" * @throws ProcessingException If there is an error while decoding the Event task.","lastModifiedDate":"2024-01-28"},{"lineNumber":93,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":94,"author":{"gitId":"pjanthony2001"},"content":" public Task decodeEvent(String[] splitString) throws ProcessingException {","lastModifiedDate":"2024-01-26"},{"lineNumber":95,"author":{"gitId":"pjanthony2001"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":96,"author":{"gitId":"pjanthony2001"},"content":" Boolean done \u003d Boolean.parseBoolean(splitString[1]);","lastModifiedDate":"2024-01-26"},{"lineNumber":97,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":98,"author":{"gitId":"pjanthony2001"},"content":" String taskName \u003d splitString[2];","lastModifiedDate":"2024-01-26"},{"lineNumber":99,"author":{"gitId":"pjanthony2001"},"content":" LocalDateTime from \u003d TimeProcessor.fromString(splitString[3]);","lastModifiedDate":"2024-01-26"},{"lineNumber":100,"author":{"gitId":"pjanthony2001"},"content":" LocalDateTime to \u003d TimeProcessor.fromString(splitString[4]);","lastModifiedDate":"2024-01-26"},{"lineNumber":101,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":102,"author":{"gitId":"pjanthony2001"},"content":" return new Event(taskName, from, to, done);","lastModifiedDate":"2024-01-26"},{"lineNumber":103,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":104,"author":{"gitId":"pjanthony2001"},"content":" } catch (IndexOutOfBoundsException | DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":105,"author":{"gitId":"pjanthony2001"},"content":" throw new ProcessingException(\"Error while decoding Event\", e);","lastModifiedDate":"2024-01-26"},{"lineNumber":106,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":107,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":108,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":109,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":110,"author":{"gitId":"pjanthony2001"},"content":" * Decodes a string representation of a Todo task into a Todo object.","lastModifiedDate":"2024-01-28"},{"lineNumber":111,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":112,"author":{"gitId":"pjanthony2001"},"content":" * @param splitString The array of split values from the encoded Todo string.","lastModifiedDate":"2024-01-28"},{"lineNumber":113,"author":{"gitId":"pjanthony2001"},"content":" * @return A Todo object representing the decoded Todo task.","lastModifiedDate":"2024-01-28"},{"lineNumber":114,"author":{"gitId":"pjanthony2001"},"content":" * @throws ProcessingException If there is an error while decoding the Todo task.","lastModifiedDate":"2024-01-28"},{"lineNumber":115,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":116,"author":{"gitId":"pjanthony2001"},"content":" public Task decodeTodo(String[] splitString) throws ProcessingException {","lastModifiedDate":"2024-01-26"},{"lineNumber":117,"author":{"gitId":"pjanthony2001"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":118,"author":{"gitId":"pjanthony2001"},"content":" Boolean done \u003d Boolean.parseBoolean(splitString[1]);","lastModifiedDate":"2024-01-26"},{"lineNumber":119,"author":{"gitId":"pjanthony2001"},"content":" String taskName \u003d splitString[2];","lastModifiedDate":"2024-01-26"},{"lineNumber":120,"author":{"gitId":"pjanthony2001"},"content":" return new Todo(taskName, done);","lastModifiedDate":"2024-01-26"},{"lineNumber":121,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":122,"author":{"gitId":"pjanthony2001"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":123,"author":{"gitId":"pjanthony2001"},"content":" throw new ProcessingException(\"Error while decoding Todo\", e);","lastModifiedDate":"2024-01-26"},{"lineNumber":124,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":125,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":126,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":127,"author":{"gitId":"pjanthony2001"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"pjanthony2001":127}},{"path":"src/main/java/duke/codec/TimeProcessor.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pjanthony2001"},"content":"package duke.codec;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"pjanthony2001"},"content":"import java.time.DateTimeException;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"pjanthony2001"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"pjanthony2001"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"pjanthony2001"},"content":"import java.time.format.DateTimeFormatterBuilder;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"pjanthony2001"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"pjanthony2001"},"content":"import java.time.temporal.ChronoField;","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"pjanthony2001"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"pjanthony2001"},"content":" * The `TimeProcessor` class provides utility methods for converting between `LocalDateTime` and formatted strings.","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"pjanthony2001"},"content":"public class TimeProcessor {","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"pjanthony2001"},"content":" private static final String dateFormat \u003d \"dd-MM-yyyy\";","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"pjanthony2001"},"content":" private static final String timeFormat \u003d \"HH:mm\";","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"pjanthony2001"},"content":" private static final DateTimeFormatter fmt \u003d new DateTimeFormatterBuilder()","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"pjanthony2001"},"content":" .appendPattern(dateFormat)","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"pjanthony2001"},"content":" .optionalStart()","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"pjanthony2001"},"content":" .appendLiteral(\u0027 \u0027)","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"pjanthony2001"},"content":" .appendPattern(timeFormat)","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"pjanthony2001"},"content":" .optionalEnd()","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"pjanthony2001"},"content":" .parseDefaulting(ChronoField.HOUR_OF_DAY, 0)","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"pjanthony2001"},"content":" .parseDefaulting(ChronoField.MINUTE_OF_HOUR, 0)","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"pjanthony2001"},"content":" .toFormatter();","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"pjanthony2001"},"content":" public static String toString(LocalDateTime value) throws DateTimeException {","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"pjanthony2001"},"content":" return fmt.format(value);","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"pjanthony2001"},"content":" public static LocalDateTime fromString(String value) throws DateTimeParseException {","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"pjanthony2001"},"content":" return LocalDateTime.parse(value, fmt);","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"pjanthony2001"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"pjanthony2001":36}},{"path":"src/main/java/duke/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pjanthony2001"},"content":"package duke.command;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"pjanthony2001"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"pjanthony2001"},"content":" * Enumeration of commands that can be executed in the Duke application.","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"pjanthony2001"},"content":"public enum Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"pjanthony2001"},"content":" BYE {","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"pjanthony2001"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"pjanthony2001"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"pjanthony2001"},"content":" return true;","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"pjanthony2001"},"content":" },","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"pjanthony2001"},"content":" TODO,","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"pjanthony2001"},"content":" DEADLINE,","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"pjanthony2001"},"content":" EVENT,","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"pjanthony2001"},"content":" LIST,","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"pjanthony2001"},"content":" MARK,","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"pjanthony2001"},"content":" UNMARK,","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"pjanthony2001"},"content":" FIND,","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"pjanthony2001"},"content":" DELETE;","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"pjanthony2001"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"pjanthony2001"},"content":" return false;","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"pjanthony2001"},"content":"}","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"pjanthony2001":27}},{"path":"src/main/java/duke/command/CommandProcessor.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pjanthony2001"},"content":"package duke.command;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"pjanthony2001"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"pjanthony2001"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"pjanthony2001"},"content":"import duke.codec.TimeProcessor;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"pjanthony2001"},"content":"import duke.exceptions.InputException;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"pjanthony2001"},"content":"import duke.exceptions.ProcessingException;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"pjanthony2001"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"pjanthony2001"},"content":"import duke.tasks.Deadline;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"pjanthony2001"},"content":"import duke.tasks.Event;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"pjanthony2001"},"content":"import duke.tasks.Task;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"pjanthony2001"},"content":"import duke.tasks.Todo;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"pjanthony2001"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"pjanthony2001"},"content":" * The `CommandProcessor` class handles the processing of user commands in the Duke application.","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"pjanthony2001"},"content":" * It interprets user input, executes commands, and interacts with the storage system to manage tasks.","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"pjanthony2001"},"content":"public class CommandProcessor {","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"pjanthony2001"},"content":" private final Storage storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"pjanthony2001"},"content":" public CommandProcessor(Storage storage) {","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"pjanthony2001"},"content":" this.storage \u003d storage;","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"pjanthony2001"},"content":" * Processes the given command and input, executing the corresponding action.","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"pjanthony2001"},"content":" * @param command The command to execute.","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"pjanthony2001"},"content":" * @param input The user input associated with the command.","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"pjanthony2001"},"content":" * @throws InputException If there is an issue with the input format or command.","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"pjanthony2001"},"content":" * @throws ProcessingException If there is an issue processing the command or storage.","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"pjanthony2001"},"content":" public void processData(Command command, String input) throws InputException, ProcessingException {","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"pjanthony2001"},"content":" switch (command) {","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"pjanthony2001"},"content":" case DELETE:","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"pjanthony2001"},"content":" storage.delete(processDelete(input));","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"pjanthony2001"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"pjanthony2001"},"content":" case LIST:","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"pjanthony2001"},"content":" storage.displayList();","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"pjanthony2001"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":44,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":45,"author":{"gitId":"pjanthony2001"},"content":" case MARK:","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"pjanthony2001"},"content":" storage.mark(processMark(input, Command.MARK));","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"pjanthony2001"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":48,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":49,"author":{"gitId":"pjanthony2001"},"content":" case UNMARK:","lastModifiedDate":"2024-01-26"},{"lineNumber":50,"author":{"gitId":"pjanthony2001"},"content":" storage.unmark(processMark(input, Command.UNMARK));","lastModifiedDate":"2024-01-26"},{"lineNumber":51,"author":{"gitId":"pjanthony2001"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":52,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":53,"author":{"gitId":"pjanthony2001"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-26"},{"lineNumber":54,"author":{"gitId":"pjanthony2001"},"content":" storage.add(processDeadline(input));","lastModifiedDate":"2024-01-26"},{"lineNumber":55,"author":{"gitId":"pjanthony2001"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":56,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":57,"author":{"gitId":"pjanthony2001"},"content":" case EVENT:","lastModifiedDate":"2024-01-26"},{"lineNumber":58,"author":{"gitId":"pjanthony2001"},"content":" storage.add(processEvent(input));","lastModifiedDate":"2024-01-26"},{"lineNumber":59,"author":{"gitId":"pjanthony2001"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":60,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":61,"author":{"gitId":"pjanthony2001"},"content":" case TODO:","lastModifiedDate":"2024-01-26"},{"lineNumber":62,"author":{"gitId":"pjanthony2001"},"content":" storage.add(processTodo(input));","lastModifiedDate":"2024-01-26"},{"lineNumber":63,"author":{"gitId":"pjanthony2001"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":64,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":65,"author":{"gitId":"pjanthony2001"},"content":" case FIND:","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"pjanthony2001"},"content":" storage.displaySearchList(processFind(input));","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"pjanthony2001"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"pjanthony2001"},"content":" default:","lastModifiedDate":"2024-01-22"},{"lineNumber":70,"author":{"gitId":"pjanthony2001"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":71,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":72,"author":{"gitId":"pjanthony2001"},"content":" storage.update();","lastModifiedDate":"2024-01-26"},{"lineNumber":73,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":74,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":75,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"pjanthony2001"},"content":" * Processes the DELETE command input to extract the task index to be deleted.","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"pjanthony2001"},"content":" * @param input The user input for the DELETE command.","lastModifiedDate":"2024-01-28"},{"lineNumber":79,"author":{"gitId":"pjanthony2001"},"content":" * @return The index of the task to be deleted.","lastModifiedDate":"2024-01-28"},{"lineNumber":80,"author":{"gitId":"pjanthony2001"},"content":" * @throws InputException If there is an issue with the input format or command.","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"pjanthony2001"},"content":" public Integer processDelete(String input) throws InputException {","lastModifiedDate":"2024-01-26"},{"lineNumber":83,"author":{"gitId":"pjanthony2001"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":84,"author":{"gitId":"pjanthony2001"},"content":" return Integer.parseInt(input.split(\" \")[1]) - 1;","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"pjanthony2001"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":87,"author":{"gitId":"pjanthony2001"},"content":" throw InputException.exceptionCommandProcessing(Command.DELETE, input, e);","lastModifiedDate":"2024-01-26"},{"lineNumber":88,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":89,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":90,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":91,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":92,"author":{"gitId":"pjanthony2001"},"content":" * Processes the DEADLINE command input to create a `Deadline` task.","lastModifiedDate":"2024-01-28"},{"lineNumber":93,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":94,"author":{"gitId":"pjanthony2001"},"content":" * @param input The user input for the DEADLINE command.","lastModifiedDate":"2024-01-28"},{"lineNumber":95,"author":{"gitId":"pjanthony2001"},"content":" * @return A `Deadline` task created from the input.","lastModifiedDate":"2024-01-28"},{"lineNumber":96,"author":{"gitId":"pjanthony2001"},"content":" * @throws InputException If there is an issue with the input format or command.","lastModifiedDate":"2024-01-28"},{"lineNumber":97,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"pjanthony2001"},"content":" public Task processDeadline(String input) throws InputException {","lastModifiedDate":"2024-01-26"},{"lineNumber":99,"author":{"gitId":"pjanthony2001"},"content":" try {","lastModifiedDate":"2024-01-22"},{"lineNumber":100,"author":{"gitId":"pjanthony2001"},"content":" String restOfInput \u003d input.substring(9);","lastModifiedDate":"2024-01-28"},{"lineNumber":101,"author":{"gitId":"pjanthony2001"},"content":" String[] splitInput \u003d restOfInput.split(\" /by \");","lastModifiedDate":"2024-01-22"},{"lineNumber":102,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":103,"author":{"gitId":"pjanthony2001"},"content":" String taskName \u003d splitInput[0];","lastModifiedDate":"2024-01-22"},{"lineNumber":104,"author":{"gitId":"pjanthony2001"},"content":" LocalDateTime by \u003d TimeProcessor.fromString(splitInput[1]);","lastModifiedDate":"2024-01-26"},{"lineNumber":105,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":106,"author":{"gitId":"pjanthony2001"},"content":" return new Deadline(taskName, by);","lastModifiedDate":"2024-01-22"},{"lineNumber":107,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":108,"author":{"gitId":"pjanthony2001"},"content":" } catch (IndexOutOfBoundsException | DateTimeParseException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":109,"author":{"gitId":"pjanthony2001"},"content":" throw InputException.exceptionCommandProcessing(Command.DEADLINE, input, e);","lastModifiedDate":"2024-01-26"},{"lineNumber":110,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":111,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":112,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":113,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":114,"author":{"gitId":"pjanthony2001"},"content":" * Processes the TODO command input to create a `Todo` task.","lastModifiedDate":"2024-01-28"},{"lineNumber":115,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":116,"author":{"gitId":"pjanthony2001"},"content":" * @param input The user input for the TODO command.","lastModifiedDate":"2024-01-28"},{"lineNumber":117,"author":{"gitId":"pjanthony2001"},"content":" * @return A `Todo` task created from the input.","lastModifiedDate":"2024-01-28"},{"lineNumber":118,"author":{"gitId":"pjanthony2001"},"content":" * @throws InputException If there is an issue with the input format or command.","lastModifiedDate":"2024-01-28"},{"lineNumber":119,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":120,"author":{"gitId":"pjanthony2001"},"content":" public Task processTodo(String input) throws InputException {","lastModifiedDate":"2024-01-26"},{"lineNumber":121,"author":{"gitId":"pjanthony2001"},"content":" try {","lastModifiedDate":"2024-01-22"},{"lineNumber":122,"author":{"gitId":"pjanthony2001"},"content":" String taskName \u003d input.substring(5);","lastModifiedDate":"2024-01-28"},{"lineNumber":123,"author":{"gitId":"pjanthony2001"},"content":" return new Todo(taskName);","lastModifiedDate":"2024-01-22"},{"lineNumber":124,"author":{"gitId":"pjanthony2001"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":125,"author":{"gitId":"pjanthony2001"},"content":" throw InputException.exceptionCommandProcessing(Command.TODO, input, e);","lastModifiedDate":"2024-01-26"},{"lineNumber":126,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":127,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":128,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":129,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":130,"author":{"gitId":"pjanthony2001"},"content":" * Processes the EVENT command input to create an `Event` task.","lastModifiedDate":"2024-01-28"},{"lineNumber":131,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":132,"author":{"gitId":"pjanthony2001"},"content":" * @param input The user input for the EVENT command.","lastModifiedDate":"2024-01-28"},{"lineNumber":133,"author":{"gitId":"pjanthony2001"},"content":" * @return An `Event` task created from the input.","lastModifiedDate":"2024-01-28"},{"lineNumber":134,"author":{"gitId":"pjanthony2001"},"content":" * @throws InputException If there is an issue with the input format or command.","lastModifiedDate":"2024-01-28"},{"lineNumber":135,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":136,"author":{"gitId":"pjanthony2001"},"content":" public Task processEvent(String input) throws InputException {","lastModifiedDate":"2024-01-26"},{"lineNumber":137,"author":{"gitId":"pjanthony2001"},"content":" try {","lastModifiedDate":"2024-01-22"},{"lineNumber":138,"author":{"gitId":"pjanthony2001"},"content":" String restOfInput \u003d input.substring(6);","lastModifiedDate":"2024-01-28"},{"lineNumber":139,"author":{"gitId":"pjanthony2001"},"content":" String[] splitFrom \u003d restOfInput.split(\" /from \");","lastModifiedDate":"2024-01-22"},{"lineNumber":140,"author":{"gitId":"pjanthony2001"},"content":" String[] fromTo \u003d splitFrom[1].split(\" /to \");","lastModifiedDate":"2024-01-22"},{"lineNumber":141,"author":{"gitId":"pjanthony2001"},"content":" String taskName \u003d splitFrom[0];","lastModifiedDate":"2024-01-22"},{"lineNumber":142,"author":{"gitId":"pjanthony2001"},"content":" LocalDateTime from \u003d TimeProcessor.fromString(fromTo[0]);","lastModifiedDate":"2024-01-26"},{"lineNumber":143,"author":{"gitId":"pjanthony2001"},"content":" LocalDateTime to \u003d TimeProcessor.fromString(fromTo[1]);","lastModifiedDate":"2024-01-26"},{"lineNumber":144,"author":{"gitId":"pjanthony2001"},"content":" return new Event(taskName, from, to);","lastModifiedDate":"2024-01-22"},{"lineNumber":145,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":146,"author":{"gitId":"pjanthony2001"},"content":" } catch (IndexOutOfBoundsException | DateTimeParseException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":147,"author":{"gitId":"pjanthony2001"},"content":" throw InputException.exceptionCommandProcessing(Command.EVENT, input, e);","lastModifiedDate":"2024-01-26"},{"lineNumber":148,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":149,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":150,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":151,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":152,"author":{"gitId":"pjanthony2001"},"content":" * Processes the MARK or UNMARK command input to extract the task index to be marked or unmarked.","lastModifiedDate":"2024-01-28"},{"lineNumber":153,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":154,"author":{"gitId":"pjanthony2001"},"content":" * @param input The user input for the MARK or UNMARK command.","lastModifiedDate":"2024-01-28"},{"lineNumber":155,"author":{"gitId":"pjanthony2001"},"content":" * @param cmd The command type (MARK or UNMARK).","lastModifiedDate":"2024-01-28"},{"lineNumber":156,"author":{"gitId":"pjanthony2001"},"content":" * @return The index of the task to be marked or unmarked.","lastModifiedDate":"2024-01-28"},{"lineNumber":157,"author":{"gitId":"pjanthony2001"},"content":" * @throws InputException If there is an issue with the input format or command.","lastModifiedDate":"2024-01-28"},{"lineNumber":158,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":159,"author":{"gitId":"pjanthony2001"},"content":" public Integer processMark(String input, Command cmd) throws InputException {","lastModifiedDate":"2024-01-26"},{"lineNumber":160,"author":{"gitId":"pjanthony2001"},"content":" try {","lastModifiedDate":"2024-01-22"},{"lineNumber":161,"author":{"gitId":"pjanthony2001"},"content":" return Integer.parseInt(input.split(\" \")[1]) - 1;","lastModifiedDate":"2024-01-28"},{"lineNumber":162,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":163,"author":{"gitId":"pjanthony2001"},"content":" } catch (IndexOutOfBoundsException | NumberFormatException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":164,"author":{"gitId":"pjanthony2001"},"content":" throw InputException.exceptionCommandProcessing(cmd, input, e);","lastModifiedDate":"2024-01-26"},{"lineNumber":165,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":166,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":167,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":168,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":169,"author":{"gitId":"pjanthony2001"},"content":" * Processes the FIND command input to extract the search query.","lastModifiedDate":"2024-01-28"},{"lineNumber":170,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":171,"author":{"gitId":"pjanthony2001"},"content":" * @param input The user input for the FIND command.","lastModifiedDate":"2024-01-28"},{"lineNumber":172,"author":{"gitId":"pjanthony2001"},"content":" * @return The search query to find matching tasks.","lastModifiedDate":"2024-01-28"},{"lineNumber":173,"author":{"gitId":"pjanthony2001"},"content":" * @throws InputException If there is an issue with the input format or command.","lastModifiedDate":"2024-01-28"},{"lineNumber":174,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":175,"author":{"gitId":"pjanthony2001"},"content":" public String processFind(String input) throws InputException {","lastModifiedDate":"2024-01-28"},{"lineNumber":176,"author":{"gitId":"pjanthony2001"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":177,"author":{"gitId":"pjanthony2001"},"content":" return input.split(\" \")[1];","lastModifiedDate":"2024-01-28"},{"lineNumber":178,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":179,"author":{"gitId":"pjanthony2001"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":180,"author":{"gitId":"pjanthony2001"},"content":" throw InputException.exceptionCommandProcessing(Command.FIND, input, e);","lastModifiedDate":"2024-01-28"},{"lineNumber":181,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":182,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":183,"author":{"gitId":"pjanthony2001"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"pjanthony2001":183}},{"path":"src/main/java/duke/exceptions/InputException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pjanthony2001"},"content":"package duke.exceptions;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"pjanthony2001"},"content":"import duke.command.Command;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"pjanthony2001"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"pjanthony2001"},"content":" * The `InputException` class represents an exception related to input processing.","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"pjanthony2001"},"content":"public class InputException extends Exception {","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"pjanthony2001"},"content":" public InputException(String message) {","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"pjanthony2001"},"content":" super(message);","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"pjanthony2001"},"content":" public InputException(String message, Throwable cause) {","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"pjanthony2001"},"content":" super(message, cause);","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"pjanthony2001"},"content":" * Creates an `InputException` for command processing with a specific command, input, and cause.","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"pjanthony2001"},"content":" * @param command The command being processed when the exception occurred.","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"pjanthony2001"},"content":" * @param input The input associated with the exception.","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"pjanthony2001"},"content":" * @param cause The cause of the exception (a Throwable object).","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"pjanthony2001"},"content":" * @return An `InputException` with a message describing the error during command processing.","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"pjanthony2001"},"content":" public static InputException exceptionCommandProcessing(Command command, String input, Throwable cause) {","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"pjanthony2001"},"content":" String message \u003d \"Something went wrong when processing your \" + command + \"command: \\n\"","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"pjanthony2001"},"content":" + \"Check your input again: \" + input;","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"pjanthony2001"},"content":" return new InputException(message, cause);","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"pjanthony2001"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"pjanthony2001":30}},{"path":"src/main/java/duke/exceptions/ProcessingException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pjanthony2001"},"content":"package duke.exceptions;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"pjanthony2001"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"pjanthony2001"},"content":" * The `ProcessingException` class represents an exception related to processing tasks or data in the Duke application.","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"pjanthony2001"},"content":"public class ProcessingException extends Exception {","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"pjanthony2001"},"content":" public ProcessingException(String message) {","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"pjanthony2001"},"content":" super(message);","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"pjanthony2001"},"content":" public ProcessingException(String message, Throwable cause) {","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"pjanthony2001"},"content":" super(message, cause);","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"pjanthony2001"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"pjanthony2001":14}},{"path":"src/main/java/duke/exceptions/StartUpException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pjanthony2001"},"content":"package duke.exceptions;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"pjanthony2001"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"pjanthony2001"},"content":" * The `StartUpException` class represents an exception related to startup issues in the Duke application.","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"pjanthony2001"},"content":"public class StartUpException extends Exception {","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"pjanthony2001"},"content":" public StartUpException(String message) {","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"pjanthony2001"},"content":" super(message);","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"pjanthony2001"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"pjanthony2001":10}},{"path":"src/main/java/duke/search/Search.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pjanthony2001"},"content":"package duke.search;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"pjanthony2001"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"pjanthony2001"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"pjanthony2001"},"content":"import duke.tasks.Task;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"pjanthony2001"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"pjanthony2001"},"content":" * The `Search` class provides a utility for searching tasks in a list based on a query.","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"pjanthony2001"},"content":"public class Search {","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"pjanthony2001"},"content":" * Searches for tasks in the given list that match the specified query.","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"pjanthony2001"},"content":" * @param list The list of tasks to search within.","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"pjanthony2001"},"content":" * @param query The search query to match against task names.","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"pjanthony2001"},"content":" * @return An ArrayList of tasks that match the query.","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"pjanthony2001"},"content":" public static ArrayList\u003cTask\u003e search(ArrayList\u003cTask\u003e list, String query) {","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"pjanthony2001"},"content":" ArrayList\u003cTask\u003e resultList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"pjanthony2001"},"content":" Pattern pattern \u003d Pattern.compile(\".*\\\\b\" + query.toLowerCase() + \"\\\\b.*\");","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"pjanthony2001"},"content":" for (Task task : list) {","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"pjanthony2001"},"content":" boolean isMatch \u003d pattern.matcher(task.getTaskName().toLowerCase()).matches();","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"pjanthony2001"},"content":" if (isMatch) {","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"pjanthony2001"},"content":" resultList.add(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"pjanthony2001"},"content":" return resultList;","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"pjanthony2001"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"pjanthony2001":31}},{"path":"src/main/java/duke/storage/LocalStorage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pjanthony2001"},"content":"package duke.storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"pjanthony2001"},"content":"import java.io.File;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"pjanthony2001"},"content":"import java.io.FileOutputStream;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"pjanthony2001"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"pjanthony2001"},"content":"import java.io.PrintWriter;","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"pjanthony2001"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"pjanthony2001"},"content":"import java.util.List;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"pjanthony2001"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"pjanthony2001"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"pjanthony2001"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"pjanthony2001"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"pjanthony2001"},"content":" * The `LocalStorage` class manages the local storage and retrieval of tasks in the Duke application.","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"pjanthony2001"},"content":" * It provides methods for loading, saving, and clearing tasks from a local file.","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"pjanthony2001"},"content":"public class LocalStorage {","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"pjanthony2001"},"content":" private final boolean createdNewFile;","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"pjanthony2001"},"content":" private PrintWriter printWriter;","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"pjanthony2001"},"content":" private final Scanner scan;","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"pjanthony2001"},"content":" private final File saveFile;","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"pjanthony2001"},"content":" * Constructs a new `LocalStorage` object with the specified file location.","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"pjanthony2001"},"content":" * @param fileLocation The file location where tasks are stored.","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"pjanthony2001"},"content":" * @throws IOException If an I/O error occurs while creating or accessing the file.","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"pjanthony2001"},"content":" public LocalStorage(String fileLocation) throws IOException {","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"pjanthony2001"},"content":" this.saveFile \u003d new File(fileLocation);","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"pjanthony2001"},"content":" this.createdNewFile \u003d saveFile.createNewFile();","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"pjanthony2001"},"content":" this.printWriter \u003d new PrintWriter(new FileOutputStream(saveFile, true));","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"pjanthony2001"},"content":" this.scan \u003d new Scanner(saveFile);","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"pjanthony2001"},"content":" public boolean createdNewFile() {","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"pjanthony2001"},"content":" return createdNewFile;","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"pjanthony2001"},"content":" * Loads encoded tasks from the local storage file.","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"pjanthony2001"},"content":" * @return A list of encoded task strings loaded from the file.","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"pjanthony2001"},"content":" public ArrayList\u003cString\u003e load() {","lastModifiedDate":"2024-01-26"},{"lineNumber":48,"author":{"gitId":"pjanthony2001"},"content":" ArrayList\u003cString\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-26"},{"lineNumber":49,"author":{"gitId":"pjanthony2001"},"content":" while (scan.hasNextLine()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":50,"author":{"gitId":"pjanthony2001"},"content":" String encodedTask \u003d scan.nextLine();","lastModifiedDate":"2024-01-26"},{"lineNumber":51,"author":{"gitId":"pjanthony2001"},"content":" list.add(encodedTask);","lastModifiedDate":"2024-01-26"},{"lineNumber":52,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":53,"author":{"gitId":"pjanthony2001"},"content":" return list;","lastModifiedDate":"2024-01-26"},{"lineNumber":54,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":55,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":56,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"pjanthony2001"},"content":" * Saves encoded tasks to the local storage file, overwriting existing data.","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"pjanthony2001"},"content":" * @param encodedTasks A stream of encoded task strings to be saved.","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"pjanthony2001"},"content":" * @throws IOException If an I/O error occurs while saving the data.","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"pjanthony2001"},"content":" public void save(Stream\u003cString\u003e encodedTasks) throws IOException {","lastModifiedDate":"2024-01-26"},{"lineNumber":63,"author":{"gitId":"pjanthony2001"},"content":" clearAll();","lastModifiedDate":"2024-01-26"},{"lineNumber":64,"author":{"gitId":"pjanthony2001"},"content":" printWriter \u003d new PrintWriter(new FileOutputStream(saveFile, true));","lastModifiedDate":"2024-01-26"},{"lineNumber":65,"author":{"gitId":"pjanthony2001"},"content":" List\u003cString\u003e encodedTasksList \u003d encodedTasks.collect(Collectors.toList());","lastModifiedDate":"2024-01-26"},{"lineNumber":66,"author":{"gitId":"pjanthony2001"},"content":" for (String string : encodedTasksList) {","lastModifiedDate":"2024-01-26"},{"lineNumber":67,"author":{"gitId":"pjanthony2001"},"content":" printWriter.println(string);","lastModifiedDate":"2024-01-26"},{"lineNumber":68,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":69,"author":{"gitId":"pjanthony2001"},"content":" printWriter.close();","lastModifiedDate":"2024-01-26"},{"lineNumber":70,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":71,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":72,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"pjanthony2001"},"content":" * Clears all data in the local storage file.","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"pjanthony2001"},"content":" * @throws IOException If an I/O error occurs while clearing the file.","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"pjanthony2001"},"content":" public void clearAll() throws IOException {","lastModifiedDate":"2024-01-26"},{"lineNumber":78,"author":{"gitId":"pjanthony2001"},"content":" printWriter \u003d new PrintWriter(new FileOutputStream(saveFile, false));","lastModifiedDate":"2024-01-26"},{"lineNumber":79,"author":{"gitId":"pjanthony2001"},"content":" printWriter.close();","lastModifiedDate":"2024-01-26"},{"lineNumber":80,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":81,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":82,"author":{"gitId":"pjanthony2001"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"pjanthony2001":82}},{"path":"src/main/java/duke/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pjanthony2001"},"content":"package duke.storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"pjanthony2001"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"pjanthony2001"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"pjanthony2001"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"pjanthony2001"},"content":"import duke.exceptions.ProcessingException;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"pjanthony2001"},"content":"import duke.exceptions.StartUpException;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"pjanthony2001"},"content":"import duke.tasks.Task;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"pjanthony2001"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"pjanthony2001"},"content":" * The `Storage` class manages the interaction between the temporary storage (`TempStorage`)","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"pjanthony2001"},"content":" * and local storage (`LocalStorage`) for saving, loading, updating, and performing operations","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"pjanthony2001"},"content":" * on tasks in the Duke application.","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"pjanthony2001"},"content":"public class Storage {","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"pjanthony2001"},"content":" private final LocalStorage local;","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"pjanthony2001"},"content":" private final TempStorage temp;","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"pjanthony2001"},"content":" * Constructs a new `Storage` object with the specified file location.","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"pjanthony2001"},"content":" * @param fileLocation The file location where tasks are stored.","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"pjanthony2001"},"content":" * @throws StartUpException If an error occurs during the startup process, such as file access issues.","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"pjanthony2001"},"content":" public Storage(String fileLocation) throws StartUpException {","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"pjanthony2001"},"content":" temp \u003d new TempStorage();","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"pjanthony2001"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"pjanthony2001"},"content":" local \u003d new LocalStorage(fileLocation);","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"pjanthony2001"},"content":" if (local.createdNewFile()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"pjanthony2001"},"content":" saveFileNotFound();","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"pjanthony2001"},"content":" } else {","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"pjanthony2001"},"content":" saveFileFound();","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"pjanthony2001"},"content":" ArrayList\u003cString\u003e loadList \u003d local.load();","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"pjanthony2001"},"content":" temp.load(loadList); //Load from local into temp","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"pjanthony2001"},"content":" } catch (IOException | ProcessingException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"pjanthony2001"},"content":" String message \u003d \"An error occurred with the save file. Try again\";","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"pjanthony2001"},"content":" e.printStackTrace();","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"pjanthony2001"},"content":" throw new StartUpException(message);","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"pjanthony2001"},"content":" private void saveFileNotFound() {","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"pjanthony2001"},"content":" System.out.println(\"Save file not found! Created an new one!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":48,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":49,"author":{"gitId":"pjanthony2001"},"content":" private void saveFileFound() {","lastModifiedDate":"2024-01-26"},{"lineNumber":50,"author":{"gitId":"pjanthony2001"},"content":" System.out.println(\"Save file found! Loading old save...\");","lastModifiedDate":"2024-01-26"},{"lineNumber":51,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":52,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":53,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"pjanthony2001"},"content":" * Updates the local storage with the data from the temporary storage.","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"pjanthony2001"},"content":" * @throws ProcessingException If an error occurs while updating the save file.","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"pjanthony2001"},"content":" public void update() throws ProcessingException {","lastModifiedDate":"2024-01-26"},{"lineNumber":59,"author":{"gitId":"pjanthony2001"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":60,"author":{"gitId":"pjanthony2001"},"content":" Stream\u003cString\u003e stringStream \u003d temp.save();","lastModifiedDate":"2024-01-26"},{"lineNumber":61,"author":{"gitId":"pjanthony2001"},"content":" local.save(stringStream);","lastModifiedDate":"2024-01-26"},{"lineNumber":62,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":63,"author":{"gitId":"pjanthony2001"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":64,"author":{"gitId":"pjanthony2001"},"content":" String message \u003d \"An error occurred while trying to update the save file. Try again\";","lastModifiedDate":"2024-01-26"},{"lineNumber":65,"author":{"gitId":"pjanthony2001"},"content":" e.printStackTrace();","lastModifiedDate":"2024-01-26"},{"lineNumber":66,"author":{"gitId":"pjanthony2001"},"content":" throw new ProcessingException(message);","lastModifiedDate":"2024-01-26"},{"lineNumber":67,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":68,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":69,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":70,"author":{"gitId":"pjanthony2001"},"content":" public void add(Task task) throws ProcessingException {","lastModifiedDate":"2024-01-26"},{"lineNumber":71,"author":{"gitId":"pjanthony2001"},"content":" temp.add(task);","lastModifiedDate":"2024-01-26"},{"lineNumber":72,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":73,"author":{"gitId":"pjanthony2001"},"content":" public void delete(int i) throws ProcessingException {","lastModifiedDate":"2024-01-26"},{"lineNumber":74,"author":{"gitId":"pjanthony2001"},"content":" temp.delete(i);","lastModifiedDate":"2024-01-26"},{"lineNumber":75,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":76,"author":{"gitId":"pjanthony2001"},"content":" public void mark(int i) throws ProcessingException {","lastModifiedDate":"2024-01-26"},{"lineNumber":77,"author":{"gitId":"pjanthony2001"},"content":" temp.mark(i);","lastModifiedDate":"2024-01-26"},{"lineNumber":78,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":79,"author":{"gitId":"pjanthony2001"},"content":" public void unmark(int i) throws ProcessingException {","lastModifiedDate":"2024-01-26"},{"lineNumber":80,"author":{"gitId":"pjanthony2001"},"content":" temp.unmark(i);","lastModifiedDate":"2024-01-26"},{"lineNumber":81,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":82,"author":{"gitId":"pjanthony2001"},"content":" public void displayList() {","lastModifiedDate":"2024-01-26"},{"lineNumber":83,"author":{"gitId":"pjanthony2001"},"content":" temp.displayList();","lastModifiedDate":"2024-01-26"},{"lineNumber":84,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":85,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":86,"author":{"gitId":"pjanthony2001"},"content":" public void displaySearchList(String query) {","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"pjanthony2001"},"content":" temp.displaySearchList(query);","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"pjanthony2001"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"pjanthony2001":89}},{"path":"src/main/java/duke/storage/TempStorage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pjanthony2001"},"content":"package duke.storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"pjanthony2001"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"pjanthony2001"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"pjanthony2001"},"content":"import duke.codec.Codec;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"pjanthony2001"},"content":"import duke.exceptions.ProcessingException;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"pjanthony2001"},"content":"import duke.search.Search;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"pjanthony2001"},"content":"import duke.tasks.Task;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"pjanthony2001"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"pjanthony2001"},"content":" * The `TempStorage` class is responsible for temporary storage and management of tasks in memory.","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"pjanthony2001"},"content":" * It allows adding, deleting, marking, unmarking tasks, loading tasks from encoded strings, and","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"pjanthony2001"},"content":" * displaying the task list.","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"pjanthony2001"},"content":"public class TempStorage {","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"pjanthony2001"},"content":" private final Codec codec;","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"pjanthony2001"},"content":" private final ArrayList\u003cTask\u003e list;","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"pjanthony2001"},"content":" * Initializes a new `TempStorage` object with an empty task list and a `Codec` for encoding and decoding tasks.","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"pjanthony2001"},"content":" public TempStorage() {","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"pjanthony2001"},"content":" this.list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"pjanthony2001"},"content":" this.codec \u003d new Codec();","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"pjanthony2001"},"content":" * Deletes a task at the specified index from the task list.","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"pjanthony2001"},"content":" * @param i The index of the task to be deleted.","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"pjanthony2001"},"content":" * @throws ProcessingException If there is an issue executing the delete command or if the index is out of bounds.","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"pjanthony2001"},"content":" public void delete(int i) throws ProcessingException {","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"pjanthony2001"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"pjanthony2001"},"content":" Task task \u003d list.get(i);","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"pjanthony2001"},"content":" list.remove(i);","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"pjanthony2001"},"content":" System.out.printf(\"I have deleted this:\\n%s%n\", task);","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"pjanthony2001"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"pjanthony2001"},"content":" String message \u003d \"Something went wrong when executing your delete command: \\n\"","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"pjanthony2001"},"content":" + \"Check your input again\";","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"pjanthony2001"},"content":" throw new ProcessingException(message);","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"pjanthony2001"},"content":" * Marks a task at the specified index as done.","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"pjanthony2001"},"content":" * @param i The index of the task to be marked as done.","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"pjanthony2001"},"content":" * @throws ProcessingException If there is an issue executing the mark command or if the index is out of bounds.","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"pjanthony2001"},"content":" public void mark(int i) throws ProcessingException {","lastModifiedDate":"2024-01-26"},{"lineNumber":53,"author":{"gitId":"pjanthony2001"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":54,"author":{"gitId":"pjanthony2001"},"content":" Task task \u003d list.get(i);","lastModifiedDate":"2024-01-26"},{"lineNumber":55,"author":{"gitId":"pjanthony2001"},"content":" task.markDone();","lastModifiedDate":"2024-01-26"},{"lineNumber":56,"author":{"gitId":"pjanthony2001"},"content":" System.out.printf(\"I have marked this:\\n%s%n\", task);","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"pjanthony2001"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":58,"author":{"gitId":"pjanthony2001"},"content":" String message \u003d \"Something went wrong when executing your mark command: \\n\"","lastModifiedDate":"2024-01-26"},{"lineNumber":59,"author":{"gitId":"pjanthony2001"},"content":" + \"Check your input again\";","lastModifiedDate":"2024-01-26"},{"lineNumber":60,"author":{"gitId":"pjanthony2001"},"content":" throw new ProcessingException(message);","lastModifiedDate":"2024-01-26"},{"lineNumber":61,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":62,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":63,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":64,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"pjanthony2001"},"content":" * Marks a task at the specified index as undone.","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"pjanthony2001"},"content":" * @param i The index of the task to be marked as undone.","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"pjanthony2001"},"content":" * @throws ProcessingException If there is an issue executing the unmark command or if the index is out of bounds.","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"pjanthony2001"},"content":" public void unmark(int i) throws ProcessingException {","lastModifiedDate":"2024-01-26"},{"lineNumber":71,"author":{"gitId":"pjanthony2001"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":72,"author":{"gitId":"pjanthony2001"},"content":" Task task \u003d list.get(i);","lastModifiedDate":"2024-01-26"},{"lineNumber":73,"author":{"gitId":"pjanthony2001"},"content":" task.markUndone();","lastModifiedDate":"2024-01-26"},{"lineNumber":74,"author":{"gitId":"pjanthony2001"},"content":" System.out.printf(\"I have unmarked this:\\n%s%n\", task);","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"pjanthony2001"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":76,"author":{"gitId":"pjanthony2001"},"content":" String message \u003d \"Something went wrong when executing your unmark command: \\n\"","lastModifiedDate":"2024-01-26"},{"lineNumber":77,"author":{"gitId":"pjanthony2001"},"content":" + \"Check your input again\";","lastModifiedDate":"2024-01-26"},{"lineNumber":78,"author":{"gitId":"pjanthony2001"},"content":" throw new ProcessingException(message);","lastModifiedDate":"2024-01-26"},{"lineNumber":79,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":80,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":81,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":82,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":83,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"pjanthony2001"},"content":" * Adds a new task to the task list.","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"pjanthony2001"},"content":" * @param task The task to be added.","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"pjanthony2001"},"content":" * @throws ProcessingException If there is an issue executing the add command.","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"pjanthony2001"},"content":" public void add(Task task) throws ProcessingException {","lastModifiedDate":"2024-01-26"},{"lineNumber":90,"author":{"gitId":"pjanthony2001"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":91,"author":{"gitId":"pjanthony2001"},"content":" list.add(task);","lastModifiedDate":"2024-01-26"},{"lineNumber":92,"author":{"gitId":"pjanthony2001"},"content":" System.out.printf(\"Got it. I\u0027ve added this task:\\n%s\\nNow you have %d tasks in the list.%n\",","lastModifiedDate":"2024-01-28"},{"lineNumber":93,"author":{"gitId":"pjanthony2001"},"content":" task,","lastModifiedDate":"2024-01-28"},{"lineNumber":94,"author":{"gitId":"pjanthony2001"},"content":" list.size());","lastModifiedDate":"2024-01-28"},{"lineNumber":95,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":96,"author":{"gitId":"pjanthony2001"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":97,"author":{"gitId":"pjanthony2001"},"content":" String message \u003d \"Something went wrong when executing your add command: \\n\"","lastModifiedDate":"2024-01-26"},{"lineNumber":98,"author":{"gitId":"pjanthony2001"},"content":" + \"Check your input again\";","lastModifiedDate":"2024-01-26"},{"lineNumber":99,"author":{"gitId":"pjanthony2001"},"content":" throw new ProcessingException(message);","lastModifiedDate":"2024-01-26"},{"lineNumber":100,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":101,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":102,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":103,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":104,"author":{"gitId":"pjanthony2001"},"content":" * Loads tasks from encoded strings and adds them to the task list.","lastModifiedDate":"2024-01-28"},{"lineNumber":105,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":106,"author":{"gitId":"pjanthony2001"},"content":" * @param encodedTasks The list of encoded task strings.","lastModifiedDate":"2024-01-28"},{"lineNumber":107,"author":{"gitId":"pjanthony2001"},"content":" * @throws ProcessingException If there is an issue decoding and loading tasks.","lastModifiedDate":"2024-01-28"},{"lineNumber":108,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":109,"author":{"gitId":"pjanthony2001"},"content":" public void load(ArrayList\u003cString\u003e encodedTasks) throws ProcessingException {","lastModifiedDate":"2024-01-26"},{"lineNumber":110,"author":{"gitId":"pjanthony2001"},"content":" for (String encodedTask : encodedTasks) {","lastModifiedDate":"2024-01-26"},{"lineNumber":111,"author":{"gitId":"pjanthony2001"},"content":" Task decodedTask \u003d codec.decode(encodedTask);","lastModifiedDate":"2024-01-26"},{"lineNumber":112,"author":{"gitId":"pjanthony2001"},"content":" list.add(decodedTask);","lastModifiedDate":"2024-01-26"},{"lineNumber":113,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":114,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":115,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":116,"author":{"gitId":"pjanthony2001"},"content":" public Stream\u003cString\u003e save() {","lastModifiedDate":"2024-01-26"},{"lineNumber":117,"author":{"gitId":"pjanthony2001"},"content":" return list.stream().map(codec::encode);","lastModifiedDate":"2024-01-26"},{"lineNumber":118,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":119,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":120,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":121,"author":{"gitId":"pjanthony2001"},"content":" * Displays the task list to the console.","lastModifiedDate":"2024-01-28"},{"lineNumber":122,"author":{"gitId":"pjanthony2001"},"content":" * If the list is empty, it informs the user to add tasks.","lastModifiedDate":"2024-01-28"},{"lineNumber":123,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":124,"author":{"gitId":"pjanthony2001"},"content":" public void displayList() {","lastModifiedDate":"2024-01-26"},{"lineNumber":125,"author":{"gitId":"pjanthony2001"},"content":" if (list.isEmpty()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":126,"author":{"gitId":"pjanthony2001"},"content":" System.out.println(\"Your list is empty! Try adding tasks (eg. todo homework)\");","lastModifiedDate":"2024-01-26"},{"lineNumber":127,"author":{"gitId":"pjanthony2001"},"content":" } else {","lastModifiedDate":"2024-01-26"},{"lineNumber":128,"author":{"gitId":"pjanthony2001"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2024-01-26"},{"lineNumber":129,"author":{"gitId":"pjanthony2001"},"content":" Task task \u003d list.get(i);","lastModifiedDate":"2024-01-26"},{"lineNumber":130,"author":{"gitId":"pjanthony2001"},"content":" System.out.printf(\"%d. %s%n\", i + 1, task);","lastModifiedDate":"2024-01-28"},{"lineNumber":131,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":132,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":133,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":134,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":135,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":136,"author":{"gitId":"pjanthony2001"},"content":" * Displays a filtered list of tasks matching the search query.","lastModifiedDate":"2024-01-28"},{"lineNumber":137,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":138,"author":{"gitId":"pjanthony2001"},"content":" * @param query The search query to match against task names.","lastModifiedDate":"2024-01-28"},{"lineNumber":139,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":140,"author":{"gitId":"pjanthony2001"},"content":" public void displaySearchList(String query) {","lastModifiedDate":"2024-01-28"},{"lineNumber":141,"author":{"gitId":"pjanthony2001"},"content":" ArrayList\u003cTask\u003e resultList \u003d Search.search(list, query);","lastModifiedDate":"2024-01-28"},{"lineNumber":142,"author":{"gitId":"pjanthony2001"},"content":" if (resultList.isEmpty()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":143,"author":{"gitId":"pjanthony2001"},"content":" System.out.println(\"Your search was fruitless. Trying looking again\");","lastModifiedDate":"2024-01-28"},{"lineNumber":144,"author":{"gitId":"pjanthony2001"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":145,"author":{"gitId":"pjanthony2001"},"content":" System.out.println(\"Here are your matching search results\");","lastModifiedDate":"2024-01-28"},{"lineNumber":146,"author":{"gitId":"pjanthony2001"},"content":" for (int i \u003d 0; i \u003c resultList.size(); i++) {","lastModifiedDate":"2024-01-28"},{"lineNumber":147,"author":{"gitId":"pjanthony2001"},"content":" Task task \u003d resultList.get(i);","lastModifiedDate":"2024-01-28"},{"lineNumber":148,"author":{"gitId":"pjanthony2001"},"content":" System.out.printf(\"%d. %s%n\", i + 1, task);","lastModifiedDate":"2024-01-28"},{"lineNumber":149,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":150,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":151,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":152,"author":{"gitId":"pjanthony2001"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"pjanthony2001":152}},{"path":"src/main/java/duke/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pjanthony2001"},"content":"package duke.tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"pjanthony2001"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"pjanthony2001"},"content":"import duke.codec.TimeProcessor;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"pjanthony2001"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"pjanthony2001"},"content":" * The `Deadline` class represents a task with a specific deadline.","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"pjanthony2001"},"content":" * It extends the `Task` class and inherits its properties and methods.","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"pjanthony2001"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"pjanthony2001"},"content":" private final LocalDateTime by;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"pjanthony2001"},"content":" public Deadline(String taskName, LocalDateTime by) {","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"pjanthony2001"},"content":" this(taskName, by, false);","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"pjanthony2001"},"content":" * Constructs a new `Deadline` task with the given task name, deadline, and completion status.","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"pjanthony2001"},"content":" * @param taskName The name or description of the `Deadline` task.","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"pjanthony2001"},"content":" * @param by The deadline for the task.","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"pjanthony2001"},"content":" * @param done A boolean indicating whether the task is completed (true) or not (false).","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"pjanthony2001"},"content":" public Deadline(String taskName, LocalDateTime by, Boolean done) {","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"pjanthony2001"},"content":" super(taskName, done);","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"pjanthony2001"},"content":" super.identifier \u003d \"D\";","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"pjanthony2001"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"pjanthony2001"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"pjanthony2001"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"pjanthony2001"},"content":" return String.format(\"%s by: %s\", super.toString(), TimeProcessor.toString(by));","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"pjanthony2001"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"pjanthony2001"},"content":" public String[] encode() {","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"pjanthony2001"},"content":" String[] encodedDeadline \u003d new String[4];","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"pjanthony2001"},"content":" String[] encodedTask \u003d super.encode();","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"pjanthony2001"},"content":" System.arraycopy(encodedTask, 0, encodedDeadline, 0, encodedTask.length);","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"pjanthony2001"},"content":" encodedDeadline[3] \u003d TimeProcessor.toString(by);","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"pjanthony2001"},"content":" return encodedDeadline;","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":48,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"pjanthony2001"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"pjanthony2001"},"content":" public String getTaskName() {","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"pjanthony2001"},"content":" return super.getTaskName();","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"pjanthony2001"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"pjanthony2001":53}},{"path":"src/main/java/duke/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pjanthony2001"},"content":"package duke.tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"pjanthony2001"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"pjanthony2001"},"content":"import duke.codec.TimeProcessor;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"pjanthony2001"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"pjanthony2001"},"content":" * The `Event` class represents a task with a specific event duration.","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"pjanthony2001"},"content":" * It extends the `Task` class and inherits its properties and methods.","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"pjanthony2001"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"pjanthony2001"},"content":" private final LocalDateTime from;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"pjanthony2001"},"content":" private final LocalDateTime to;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"pjanthony2001"},"content":" public Event(String taskName, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"pjanthony2001"},"content":" this(taskName, from, to, false);","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"pjanthony2001"},"content":" * Constructs a new `Event` task with the given task name, event start time, end time, and completion status.","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"pjanthony2001"},"content":" * @param taskName The name or description of the `Event` task.","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"pjanthony2001"},"content":" * @param from The start time of the event.","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"pjanthony2001"},"content":" * @param to The end time of the event.","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"pjanthony2001"},"content":" * @param done A boolean indicating whether the task is completed (true) or not (false).","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"pjanthony2001"},"content":" public Event(String taskName, LocalDateTime from, LocalDateTime to, Boolean done) {","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"pjanthony2001"},"content":" super(taskName, done);","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"pjanthony2001"},"content":" super.identifier \u003d \"E\";","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"pjanthony2001"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"pjanthony2001"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"pjanthony2001"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"pjanthony2001"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"pjanthony2001"},"content":" return String.format(\"%s from: %s to: %s\",","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"pjanthony2001"},"content":" super.toString(),","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"pjanthony2001"},"content":" TimeProcessor.toString(from),","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"pjanthony2001"},"content":" TimeProcessor.toString(to)","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"pjanthony2001"},"content":" );","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"pjanthony2001"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"pjanthony2001"},"content":" public String[] encode() {","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"pjanthony2001"},"content":" String[] encodedEvent \u003d new String[5];","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"pjanthony2001"},"content":" String[] encodedTask \u003d super.encode();","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":48,"author":{"gitId":"pjanthony2001"},"content":" System.arraycopy(encodedTask, 0, encodedEvent, 0, encodedTask.length);","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":50,"author":{"gitId":"pjanthony2001"},"content":" encodedEvent[3] \u003d TimeProcessor.toString(from);","lastModifiedDate":"2024-01-26"},{"lineNumber":51,"author":{"gitId":"pjanthony2001"},"content":" encodedEvent[4] \u003d TimeProcessor.toString(to);","lastModifiedDate":"2024-01-26"},{"lineNumber":52,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":53,"author":{"gitId":"pjanthony2001"},"content":" return encodedEvent;","lastModifiedDate":"2024-01-26"},{"lineNumber":54,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":55,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"pjanthony2001"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"pjanthony2001"},"content":" public String getTaskName() {","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"pjanthony2001"},"content":" return super.getTaskName();","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"pjanthony2001"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"pjanthony2001":60}},{"path":"src/main/java/duke/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pjanthony2001"},"content":"package duke.tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"pjanthony2001"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"pjanthony2001"},"content":" * The `Task` abstract class serves as the base class for various types of tasks in the Duke application.","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"pjanthony2001"},"content":"public abstract class Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"pjanthony2001"},"content":" protected String identifier;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"pjanthony2001"},"content":" private Boolean done;","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"pjanthony2001"},"content":" private String taskName;","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"pjanthony2001"},"content":" * Constructs a new `Task` with the given task name and completion status.","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"pjanthony2001"},"content":" * @param taskName The name or description of the task.","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"pjanthony2001"},"content":" * @param done A boolean indicating whether the task is completed (true) or not (false).","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"pjanthony2001"},"content":" public Task(String taskName, Boolean done) {","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"pjanthony2001"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"pjanthony2001"},"content":" this.done \u003d done;","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"pjanthony2001"},"content":" this.identifier \u003d \"\";","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"pjanthony2001"},"content":" public void markDone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"pjanthony2001"},"content":" done \u003d true;","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"pjanthony2001"},"content":" public void markUndone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"pjanthony2001"},"content":" done \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"pjanthony2001"},"content":" public String getIdentifier() {","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"pjanthony2001"},"content":" return identifier;","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"pjanthony2001"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"pjanthony2001"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"pjanthony2001"},"content":" return String.format(\"[%s] [%s] %s\", identifier, done ? \"X\" : \" \", taskName);","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":40,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"pjanthony2001"},"content":" public String getTaskName() {","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"pjanthony2001"},"content":" return taskName;","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"pjanthony2001"},"content":" public String[] encode() {","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"pjanthony2001"},"content":" return new String[]{identifier, done.toString(), taskName};","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":48,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":49,"author":{"gitId":"pjanthony2001"},"content":"}","lastModifiedDate":"2024-01-26"},{"lineNumber":50,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":51,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"pjanthony2001":51}},{"path":"src/main/java/duke/tasks/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pjanthony2001"},"content":"package duke.tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"pjanthony2001"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"pjanthony2001"},"content":" * The `Todo` class represents a task without a specific deadline or time range.","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"pjanthony2001"},"content":" * It extends the `Task` class and inherits its properties and methods.","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"pjanthony2001"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"pjanthony2001"},"content":" public Todo(String taskName) {","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"pjanthony2001"},"content":" this(taskName, false);","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"pjanthony2001"},"content":" * Constructs a new `Todo` task with the given task name and completion status.","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"pjanthony2001"},"content":" * @param taskName The name or description of the `Todo` task.","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"pjanthony2001"},"content":" * @param done A boolean indicating whether the task is completed (true) or not (false).","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"pjanthony2001"},"content":" public Todo(String taskName, Boolean done) {","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"pjanthony2001"},"content":" super(taskName, done);","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"pjanthony2001"},"content":" super.identifier \u003d \"T\";","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"pjanthony2001"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"pjanthony2001"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"pjanthony2001"},"content":" return super.toString();","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"pjanthony2001"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"pjanthony2001"},"content":" public String getTaskName() {","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"pjanthony2001"},"content":" return super.getTaskName();","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"pjanthony2001"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"pjanthony2001":33}},{"path":"src/main/java/duke/ui/UserInterface.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pjanthony2001"},"content":"package duke.ui;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"pjanthony2001"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"pjanthony2001"},"content":"import duke.command.Command;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"pjanthony2001"},"content":"import duke.command.CommandProcessor;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"pjanthony2001"},"content":"import duke.exceptions.InputException;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"pjanthony2001"},"content":"import duke.exceptions.ProcessingException;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"pjanthony2001"},"content":"import duke.exceptions.StartUpException;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"pjanthony2001"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"pjanthony2001"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"pjanthony2001"},"content":" * The `UserInterface` class handles user interactions and serves as the main interface for the Duke application.","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"pjanthony2001"},"content":"public class UserInterface {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"pjanthony2001"},"content":" private final Scanner scan;","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"pjanthony2001"},"content":" private CommandProcessor cmd;","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"pjanthony2001"},"content":" private boolean startUpSuccess \u003d false;","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"pjanthony2001"},"content":" * Initializes a new `UserInterface` object, sets up a scanner for user input,","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"pjanthony2001"},"content":" * and attempts to start the Duke application.","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"pjanthony2001"},"content":" public UserInterface() {","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"pjanthony2001"},"content":" scan \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"pjanthony2001"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"pjanthony2001"},"content":" String fileLocation \u003d \"./savefile.txt\";","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"pjanthony2001"},"content":" Storage storage \u003d new Storage(fileLocation);","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"pjanthony2001"},"content":" cmd \u003d new CommandProcessor(storage);","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"pjanthony2001"},"content":" startUpSuccess \u003d true;","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"pjanthony2001"},"content":" } catch (StartUpException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"pjanthony2001"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":39,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"pjanthony2001"},"content":" * Displays a greeting message to the user.","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"pjanthony2001"},"content":" public void greet() {","lastModifiedDate":"2024-01-22"},{"lineNumber":43,"author":{"gitId":"pjanthony2001"},"content":" String greeting \u003d \"Hi! My name is HAL9000\";","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"pjanthony2001"},"content":" System.out.println(greeting);","lastModifiedDate":"2024-01-22"},{"lineNumber":45,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":46,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"pjanthony2001"},"content":" * Displays a farewell message to the user.","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"pjanthony2001"},"content":" public void exit() {","lastModifiedDate":"2024-01-22"},{"lineNumber":51,"author":{"gitId":"pjanthony2001"},"content":" String exit \u003d \"Bye! See ya soon\";","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"pjanthony2001"},"content":" System.out.println(exit);","lastModifiedDate":"2024-01-22"},{"lineNumber":53,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":54,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":55,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"pjanthony2001"},"content":" * Displays a message indicating a startup failure to the user.","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"pjanthony2001"},"content":" public void startUpFailure() {","lastModifiedDate":"2024-01-26"},{"lineNumber":59,"author":{"gitId":"pjanthony2001"},"content":" System.out.println(\"Hi, you failed to start up properly! Sorry, bye!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":60,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":61,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":62,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"pjanthony2001"},"content":" * Polls for user input and processes commands until the user decides to exit.","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"pjanthony2001"},"content":" public void poll() {","lastModifiedDate":"2024-01-22"},{"lineNumber":66,"author":{"gitId":"pjanthony2001"},"content":" boolean polling \u003d true;","lastModifiedDate":"2024-01-22"},{"lineNumber":67,"author":{"gitId":"pjanthony2001"},"content":" while (polling) {","lastModifiedDate":"2024-01-22"},{"lineNumber":68,"author":{"gitId":"pjanthony2001"},"content":" String input \u003d scan.nextLine();","lastModifiedDate":"2024-01-22"},{"lineNumber":69,"author":{"gitId":"pjanthony2001"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":70,"author":{"gitId":"pjanthony2001"},"content":" Command command \u003d processCommand(input);","lastModifiedDate":"2024-01-26"},{"lineNumber":71,"author":{"gitId":"pjanthony2001"},"content":" if (command.isExit()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":72,"author":{"gitId":"pjanthony2001"},"content":" polling \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":73,"author":{"gitId":"pjanthony2001"},"content":" } else {","lastModifiedDate":"2024-01-22"},{"lineNumber":74,"author":{"gitId":"pjanthony2001"},"content":" cmd.processData(command, input);","lastModifiedDate":"2024-01-26"},{"lineNumber":75,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":76,"author":{"gitId":"pjanthony2001"},"content":" } catch (InputException | ProcessingException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":77,"author":{"gitId":"pjanthony2001"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-26"},{"lineNumber":78,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":79,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":80,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":81,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":82,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"pjanthony2001"},"content":" * Parses and returns the appropriate command based on user input.","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"pjanthony2001"},"content":" * @param input The user\u0027s input string.","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"pjanthony2001"},"content":" * @return The corresponding `Command` enum value.","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"pjanthony2001"},"content":" * @throws InputException If there is an issue processing the input or if the command is unrecognized.","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"pjanthony2001"},"content":" public Command processCommand(String input) throws InputException {","lastModifiedDate":"2024-01-26"},{"lineNumber":90,"author":{"gitId":"pjanthony2001"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":91,"author":{"gitId":"pjanthony2001"},"content":" String commandString \u003d input.split(\" \")[0];","lastModifiedDate":"2024-01-26"},{"lineNumber":92,"author":{"gitId":"pjanthony2001"},"content":" return Command.valueOf(commandString.toUpperCase());","lastModifiedDate":"2024-01-28"},{"lineNumber":93,"author":{"gitId":"pjanthony2001"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":94,"author":{"gitId":"pjanthony2001"},"content":" String message \u003d \"Something went wrong when processing your command: \\n\"","lastModifiedDate":"2024-01-26"},{"lineNumber":95,"author":{"gitId":"pjanthony2001"},"content":" + \"Check your input again: \" + input;","lastModifiedDate":"2024-01-26"},{"lineNumber":96,"author":{"gitId":"pjanthony2001"},"content":" throw new InputException(message, e);","lastModifiedDate":"2024-01-26"},{"lineNumber":97,"author":{"gitId":"pjanthony2001"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":98,"author":{"gitId":"pjanthony2001"},"content":" String message \u003d \"You inputted an unrecognizable command\";","lastModifiedDate":"2024-01-26"},{"lineNumber":99,"author":{"gitId":"pjanthony2001"},"content":" throw new InputException(message);","lastModifiedDate":"2024-01-26"},{"lineNumber":100,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":101,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":102,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":103,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":104,"author":{"gitId":"pjanthony2001"},"content":" * Starts the Duke application by displaying a greeting, polling for user input, and then exiting.","lastModifiedDate":"2024-01-28"},{"lineNumber":105,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":106,"author":{"gitId":"pjanthony2001"},"content":" public void start() {","lastModifiedDate":"2024-01-22"},{"lineNumber":107,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":108,"author":{"gitId":"pjanthony2001"},"content":" if (!startUpSuccess) {","lastModifiedDate":"2024-01-26"},{"lineNumber":109,"author":{"gitId":"pjanthony2001"},"content":" startUpFailure();","lastModifiedDate":"2024-01-26"},{"lineNumber":110,"author":{"gitId":"pjanthony2001"},"content":" return;","lastModifiedDate":"2024-01-26"},{"lineNumber":111,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":112,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":113,"author":{"gitId":"pjanthony2001"},"content":" greet();","lastModifiedDate":"2024-01-22"},{"lineNumber":114,"author":{"gitId":"pjanthony2001"},"content":" poll();","lastModifiedDate":"2024-01-22"},{"lineNumber":115,"author":{"gitId":"pjanthony2001"},"content":" exit();","lastModifiedDate":"2024-01-22"},{"lineNumber":116,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":117,"author":{"gitId":"pjanthony2001"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"pjanthony2001":117}},{"path":"src/test/java/duke/DukeTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pjanthony2001"},"content":"package duke;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"pjanthony2001"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"pjanthony2001"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"pjanthony2001"},"content":"public class DukeTest {","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"pjanthony2001"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"pjanthony2001"},"content":" public void dummyTest() {","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"pjanthony2001"},"content":" assertEquals(2, 2);","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"pjanthony2001"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"pjanthony2001"},"content":" public void anotherDummyTest() {","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"pjanthony2001"},"content":" assertEquals(4, 4);","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"pjanthony2001"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"pjanthony2001":17}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"pjanthony2001"},"content":"Hello","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"pjanthony2001"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"pjanthony2001"},"content":"DEADLINE /by Monday","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"pjanthony2001"},"content":"deadline /from Monday","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"pjanthony2001"},"content":"deadline /BY Monday","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"pjanthony2001"},"content":"TODO homework","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"pjanthony2001"},"content":"EVENT concert /from 5pm /to 6pm","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"pjanthony2001"},"content":"event concert /by 5pm /to 6pm","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"pjanthony2001"},"content":"event concert /from 5pm /by 6pm","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"pjanthony2001"},"content":"event concert /FROM 5pm /to 6pm","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"pjanthony2001"},"content":"event concert /from 5pm /TO 6pm","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"pjanthony2001"},"content":"list ","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"pjanthony2001"},"content":"deadline /by Monday","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"pjanthony2001"},"content":"todo homework","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"pjanthony2001"},"content":"event concert /from 5pm /to 6pm","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"pjanthony2001"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"pjanthony2001"},"content":"mark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"pjanthony2001"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"pjanthony2001"},"content":"mark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"pjanthony2001"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"pjanthony2001"},"content":"unmark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"pjanthony2001"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"pjanthony2001"},"content":"delete 3","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"pjanthony2001"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"pjanthony2001"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"pjanthony2001":25}}] +[{"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":"pjanthony2001"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"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":"pjanthony2001"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2024-01-28"},{"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":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"pjanthony2001"},"content":"checkstyle {","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"pjanthony2001"},"content":" version \u003d \u002710.2\u0027","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"pjanthony2001"},"content":"}","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"pjanthony2001":8,"-":41}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pjanthony2001"},"content":"package duke;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"pjanthony2001"},"content":"import duke.ui.UserInterface;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"pjanthony2001"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":10,"author":{"gitId":"pjanthony2001"},"content":" String logo \u003d \" _______ _ _____ _______ _______ _______\\n\"","lastModifiedDate":"2024-01-20"},{"lineNumber":11,"author":{"gitId":"pjanthony2001"},"content":" + \"|\\\\ /|( ___ )( \\\\ / ___ \\\\ ( __ )( __ )( __ )\\n\"","lastModifiedDate":"2024-01-20"},{"lineNumber":12,"author":{"gitId":"pjanthony2001"},"content":" + \"| ) ( || ( ) || ( ( ( ) )| ( ) || ( ) || ( ) |\\n\"","lastModifiedDate":"2024-01-20"},{"lineNumber":13,"author":{"gitId":"pjanthony2001"},"content":" + \"| (___) || (___) || | ( (___) || | / || | / || | / |\\n\"","lastModifiedDate":"2024-01-20"},{"lineNumber":14,"author":{"gitId":"pjanthony2001"},"content":" + \"| ___ || ___ || | \\\\____ || (/ /) || (/ /) || (/ /) |\\n\"","lastModifiedDate":"2024-01-20"},{"lineNumber":15,"author":{"gitId":"pjanthony2001"},"content":" + \"| ( ) || ( ) || | ) || / | || / | || / | |\\n\"","lastModifiedDate":"2024-01-20"},{"lineNumber":16,"author":{"gitId":"pjanthony2001"},"content":" + \"| ) ( || ) ( || (____/\\\\ /\\\\____) )| (__) || (__) || (__) |\\n\"","lastModifiedDate":"2024-01-20"},{"lineNumber":17,"author":{"gitId":"pjanthony2001"},"content":" + \"|/ \\\\||/ \\\\|(_______/ \\\\______/ (_______)(_______)(_______)\\n\";","lastModifiedDate":"2024-01-20"},{"lineNumber":18,"author":{"gitId":"pjanthony2001"},"content":" System.out.println(logo);","lastModifiedDate":"2024-01-20"},{"lineNumber":19,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"pjanthony2001"},"content":" UserInterface userInterface \u003d new UserInterface();","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"pjanthony2001"},"content":" userInterface.start();","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":23,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"pjanthony2001":19,"-":4}},{"path":"src/main/java/duke/codec/Codec.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pjanthony2001"},"content":"package duke.codec;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"pjanthony2001"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"pjanthony2001"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"pjanthony2001"},"content":"import java.util.StringJoiner;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"pjanthony2001"},"content":"import duke.exceptions.ProcessingException;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"pjanthony2001"},"content":"import duke.tasks.Deadline;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"pjanthony2001"},"content":"import duke.tasks.Event;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"pjanthony2001"},"content":"import duke.tasks.Task;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"pjanthony2001"},"content":"import duke.tasks.Todo;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"pjanthony2001"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"pjanthony2001"},"content":" * The `Codec` class provides methods for encoding and decoding tasks.","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"pjanthony2001"},"content":"public class Codec {","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"pjanthony2001"},"content":" private final String delimiter \u003d \", \";","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"pjanthony2001"},"content":" * Encodes a task into a string representation.","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"pjanthony2001"},"content":" * @param task The task to be encoded.","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"pjanthony2001"},"content":" * @return A string representation of the encoded task.","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"pjanthony2001"},"content":" public String encode(Task task) {","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"pjanthony2001"},"content":" String[] encodedTask \u003d task.encode();","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"pjanthony2001"},"content":" return buildString(encodedTask);","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"pjanthony2001"},"content":" * Builds a concatenated string from an array of string values using a specified delimiter.","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"pjanthony2001"},"content":" * @param values The array of values to be joined.","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"pjanthony2001"},"content":" * @return A concatenated string with values separated by the specified delimiter.","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"pjanthony2001"},"content":" public String buildString(String... values) {","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"pjanthony2001"},"content":" StringJoiner encodedString \u003d new StringJoiner(delimiter);","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"pjanthony2001"},"content":" for (String string : values) {","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"pjanthony2001"},"content":" encodedString.add(string);","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"pjanthony2001"},"content":" return encodedString.toString();","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"pjanthony2001"},"content":" * Decodes a string representation of a task into a Task object.","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"pjanthony2001"},"content":" * @param string The string representation of the task to be decoded.","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"pjanthony2001"},"content":" * @return A Task object representing the decoded task.","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"pjanthony2001"},"content":" * @throws ProcessingException If there is an error while decoding the task.","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"pjanthony2001"},"content":" public Task decode(String string) throws ProcessingException {","lastModifiedDate":"2024-01-26"},{"lineNumber":54,"author":{"gitId":"pjanthony2001"},"content":" String[] splitString \u003d string.split(delimiter);","lastModifiedDate":"2024-01-26"},{"lineNumber":55,"author":{"gitId":"pjanthony2001"},"content":" switch (splitString[0]) {","lastModifiedDate":"2024-01-26"},{"lineNumber":56,"author":{"gitId":"pjanthony2001"},"content":" case \"D\":","lastModifiedDate":"2024-01-26"},{"lineNumber":57,"author":{"gitId":"pjanthony2001"},"content":" return decodeDeadline(splitString);","lastModifiedDate":"2024-01-26"},{"lineNumber":58,"author":{"gitId":"pjanthony2001"},"content":" case \"T\":","lastModifiedDate":"2024-01-26"},{"lineNumber":59,"author":{"gitId":"pjanthony2001"},"content":" return decodeTodo(splitString);","lastModifiedDate":"2024-01-26"},{"lineNumber":60,"author":{"gitId":"pjanthony2001"},"content":" case \"E\":","lastModifiedDate":"2024-01-26"},{"lineNumber":61,"author":{"gitId":"pjanthony2001"},"content":" return decodeEvent(splitString);","lastModifiedDate":"2024-01-26"},{"lineNumber":62,"author":{"gitId":"pjanthony2001"},"content":" default:","lastModifiedDate":"2024-01-26"},{"lineNumber":63,"author":{"gitId":"pjanthony2001"},"content":" throw new ProcessingException(\"Error while decoding identifier\");","lastModifiedDate":"2024-01-26"},{"lineNumber":64,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":65,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":66,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":67,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"pjanthony2001"},"content":" * Decodes a string representation of a Deadline task into a Deadline object.","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"pjanthony2001"},"content":" * @param splitString The array of split values from the encoded Deadline string.","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"pjanthony2001"},"content":" * @return A Deadline object representing the decoded Deadline task.","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"pjanthony2001"},"content":" * @throws ProcessingException If there is an error while decoding the Deadline task.","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"pjanthony2001"},"content":" public Task decodeDeadline(String[] splitString) throws ProcessingException {","lastModifiedDate":"2024-01-26"},{"lineNumber":75,"author":{"gitId":"pjanthony2001"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":76,"author":{"gitId":"pjanthony2001"},"content":" Boolean done \u003d Boolean.parseBoolean(splitString[1]);","lastModifiedDate":"2024-01-26"},{"lineNumber":77,"author":{"gitId":"pjanthony2001"},"content":" String taskName \u003d splitString[2];","lastModifiedDate":"2024-01-26"},{"lineNumber":78,"author":{"gitId":"pjanthony2001"},"content":" LocalDateTime by \u003d TimeProcessor.fromString(splitString[3]);","lastModifiedDate":"2024-01-26"},{"lineNumber":79,"author":{"gitId":"pjanthony2001"},"content":" return new Deadline(taskName, by, done);","lastModifiedDate":"2024-01-26"},{"lineNumber":80,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"pjanthony2001"},"content":" } catch (IndexOutOfBoundsException | DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"pjanthony2001"},"content":" throw new ProcessingException(\"Error while decoding Deadline\", e);","lastModifiedDate":"2024-01-26"},{"lineNumber":83,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":84,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":85,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":86,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":87,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"pjanthony2001"},"content":" * Decodes a string representation of an Event task into an Event object.","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":90,"author":{"gitId":"pjanthony2001"},"content":" * @param splitString The array of split values from the encoded Event string.","lastModifiedDate":"2024-01-28"},{"lineNumber":91,"author":{"gitId":"pjanthony2001"},"content":" * @return An Event object representing the decoded Event task.","lastModifiedDate":"2024-01-28"},{"lineNumber":92,"author":{"gitId":"pjanthony2001"},"content":" * @throws ProcessingException If there is an error while decoding the Event task.","lastModifiedDate":"2024-01-28"},{"lineNumber":93,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":94,"author":{"gitId":"pjanthony2001"},"content":" public Task decodeEvent(String[] splitString) throws ProcessingException {","lastModifiedDate":"2024-01-26"},{"lineNumber":95,"author":{"gitId":"pjanthony2001"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":96,"author":{"gitId":"pjanthony2001"},"content":" Boolean done \u003d Boolean.parseBoolean(splitString[1]);","lastModifiedDate":"2024-01-26"},{"lineNumber":97,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":98,"author":{"gitId":"pjanthony2001"},"content":" String taskName \u003d splitString[2];","lastModifiedDate":"2024-01-26"},{"lineNumber":99,"author":{"gitId":"pjanthony2001"},"content":" LocalDateTime from \u003d TimeProcessor.fromString(splitString[3]);","lastModifiedDate":"2024-01-26"},{"lineNumber":100,"author":{"gitId":"pjanthony2001"},"content":" LocalDateTime to \u003d TimeProcessor.fromString(splitString[4]);","lastModifiedDate":"2024-01-26"},{"lineNumber":101,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":102,"author":{"gitId":"pjanthony2001"},"content":" return new Event(taskName, from, to, done);","lastModifiedDate":"2024-01-26"},{"lineNumber":103,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":104,"author":{"gitId":"pjanthony2001"},"content":" } catch (IndexOutOfBoundsException | DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":105,"author":{"gitId":"pjanthony2001"},"content":" throw new ProcessingException(\"Error while decoding Event\", e);","lastModifiedDate":"2024-01-26"},{"lineNumber":106,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":107,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":108,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":109,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":110,"author":{"gitId":"pjanthony2001"},"content":" * Decodes a string representation of a Todo task into a Todo object.","lastModifiedDate":"2024-01-28"},{"lineNumber":111,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":112,"author":{"gitId":"pjanthony2001"},"content":" * @param splitString The array of split values from the encoded Todo string.","lastModifiedDate":"2024-01-28"},{"lineNumber":113,"author":{"gitId":"pjanthony2001"},"content":" * @return A Todo object representing the decoded Todo task.","lastModifiedDate":"2024-01-28"},{"lineNumber":114,"author":{"gitId":"pjanthony2001"},"content":" * @throws ProcessingException If there is an error while decoding the Todo task.","lastModifiedDate":"2024-01-28"},{"lineNumber":115,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":116,"author":{"gitId":"pjanthony2001"},"content":" public Task decodeTodo(String[] splitString) throws ProcessingException {","lastModifiedDate":"2024-01-26"},{"lineNumber":117,"author":{"gitId":"pjanthony2001"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":118,"author":{"gitId":"pjanthony2001"},"content":" Boolean done \u003d Boolean.parseBoolean(splitString[1]);","lastModifiedDate":"2024-01-26"},{"lineNumber":119,"author":{"gitId":"pjanthony2001"},"content":" String taskName \u003d splitString[2];","lastModifiedDate":"2024-01-26"},{"lineNumber":120,"author":{"gitId":"pjanthony2001"},"content":" return new Todo(taskName, done);","lastModifiedDate":"2024-01-26"},{"lineNumber":121,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":122,"author":{"gitId":"pjanthony2001"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":123,"author":{"gitId":"pjanthony2001"},"content":" throw new ProcessingException(\"Error while decoding Todo\", e);","lastModifiedDate":"2024-01-26"},{"lineNumber":124,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":125,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":126,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":127,"author":{"gitId":"pjanthony2001"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"pjanthony2001":127}},{"path":"src/main/java/duke/codec/TimeProcessor.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pjanthony2001"},"content":"package duke.codec;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"pjanthony2001"},"content":"import java.time.DateTimeException;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"pjanthony2001"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"pjanthony2001"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"pjanthony2001"},"content":"import java.time.format.DateTimeFormatterBuilder;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"pjanthony2001"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"pjanthony2001"},"content":"import java.time.temporal.ChronoField;","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"pjanthony2001"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"pjanthony2001"},"content":" * The `TimeProcessor` class provides utility methods for converting between `LocalDateTime` and formatted strings.","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"pjanthony2001"},"content":"public class TimeProcessor {","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"pjanthony2001"},"content":" private static final String dateFormat \u003d \"dd-MM-yyyy\";","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"pjanthony2001"},"content":" private static final String timeFormat \u003d \"HH:mm\";","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"pjanthony2001"},"content":" private static final DateTimeFormatter fmt \u003d new DateTimeFormatterBuilder()","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"pjanthony2001"},"content":" .appendPattern(dateFormat)","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"pjanthony2001"},"content":" .optionalStart()","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"pjanthony2001"},"content":" .appendLiteral(\u0027 \u0027)","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"pjanthony2001"},"content":" .appendPattern(timeFormat)","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"pjanthony2001"},"content":" .optionalEnd()","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"pjanthony2001"},"content":" .parseDefaulting(ChronoField.HOUR_OF_DAY, 0)","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"pjanthony2001"},"content":" .parseDefaulting(ChronoField.MINUTE_OF_HOUR, 0)","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"pjanthony2001"},"content":" .toFormatter();","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"pjanthony2001"},"content":" public static String toString(LocalDateTime value) throws DateTimeException {","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"pjanthony2001"},"content":" return fmt.format(value);","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"pjanthony2001"},"content":" public static LocalDateTime fromString(String value) throws DateTimeParseException {","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"pjanthony2001"},"content":" return LocalDateTime.parse(value, fmt);","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"pjanthony2001"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"pjanthony2001":36}},{"path":"src/main/java/duke/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pjanthony2001"},"content":"package duke.command;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"pjanthony2001"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"pjanthony2001"},"content":" * Enumeration of commands that can be executed in the Duke application.","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"pjanthony2001"},"content":"public enum Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"pjanthony2001"},"content":" BYE {","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"pjanthony2001"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"pjanthony2001"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"pjanthony2001"},"content":" return true;","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"pjanthony2001"},"content":" },","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"pjanthony2001"},"content":" TODO,","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"pjanthony2001"},"content":" DEADLINE,","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"pjanthony2001"},"content":" EVENT,","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"pjanthony2001"},"content":" LIST,","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"pjanthony2001"},"content":" MARK,","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"pjanthony2001"},"content":" UNMARK,","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"pjanthony2001"},"content":" FIND,","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"pjanthony2001"},"content":" DELETE;","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"pjanthony2001"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"pjanthony2001"},"content":" return false;","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"pjanthony2001"},"content":"}","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"pjanthony2001":27}},{"path":"src/main/java/duke/command/CommandProcessor.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pjanthony2001"},"content":"package duke.command;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"pjanthony2001"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"pjanthony2001"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"pjanthony2001"},"content":"import duke.codec.TimeProcessor;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"pjanthony2001"},"content":"import duke.exceptions.InputException;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"pjanthony2001"},"content":"import duke.exceptions.ProcessingException;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"pjanthony2001"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"pjanthony2001"},"content":"import duke.tasks.Deadline;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"pjanthony2001"},"content":"import duke.tasks.Event;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"pjanthony2001"},"content":"import duke.tasks.Task;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"pjanthony2001"},"content":"import duke.tasks.Todo;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"pjanthony2001"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"pjanthony2001"},"content":" * The `CommandProcessor` class handles the processing of user commands in the Duke application.","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"pjanthony2001"},"content":" * It interprets user input, executes commands, and interacts with the storage system to manage tasks.","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"pjanthony2001"},"content":"public class CommandProcessor {","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"pjanthony2001"},"content":" private final Storage storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"pjanthony2001"},"content":" public CommandProcessor(Storage storage) {","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"pjanthony2001"},"content":" this.storage \u003d storage;","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"pjanthony2001"},"content":" * Processes the given command and input, executing the corresponding action.","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"pjanthony2001"},"content":" * @param command The command to execute.","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"pjanthony2001"},"content":" * @param input The user input associated with the command.","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"pjanthony2001"},"content":" * @throws InputException If there is an issue with the input format or command.","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"pjanthony2001"},"content":" * @throws ProcessingException If there is an issue processing the command or storage.","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"pjanthony2001"},"content":" public void processData(Command command, String input) throws InputException, ProcessingException {","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"pjanthony2001"},"content":" switch (command) {","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"pjanthony2001"},"content":" case DELETE:","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"pjanthony2001"},"content":" storage.delete(processDelete(input));","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"pjanthony2001"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"pjanthony2001"},"content":" case LIST:","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"pjanthony2001"},"content":" storage.displayList();","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"pjanthony2001"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":44,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":45,"author":{"gitId":"pjanthony2001"},"content":" case MARK:","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"pjanthony2001"},"content":" storage.mark(processMark(input, Command.MARK));","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"pjanthony2001"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":48,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":49,"author":{"gitId":"pjanthony2001"},"content":" case UNMARK:","lastModifiedDate":"2024-01-26"},{"lineNumber":50,"author":{"gitId":"pjanthony2001"},"content":" storage.unmark(processMark(input, Command.UNMARK));","lastModifiedDate":"2024-01-26"},{"lineNumber":51,"author":{"gitId":"pjanthony2001"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":52,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":53,"author":{"gitId":"pjanthony2001"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-26"},{"lineNumber":54,"author":{"gitId":"pjanthony2001"},"content":" storage.add(processDeadline(input));","lastModifiedDate":"2024-01-26"},{"lineNumber":55,"author":{"gitId":"pjanthony2001"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":56,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":57,"author":{"gitId":"pjanthony2001"},"content":" case EVENT:","lastModifiedDate":"2024-01-26"},{"lineNumber":58,"author":{"gitId":"pjanthony2001"},"content":" storage.add(processEvent(input));","lastModifiedDate":"2024-01-26"},{"lineNumber":59,"author":{"gitId":"pjanthony2001"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":60,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":61,"author":{"gitId":"pjanthony2001"},"content":" case TODO:","lastModifiedDate":"2024-01-26"},{"lineNumber":62,"author":{"gitId":"pjanthony2001"},"content":" storage.add(processTodo(input));","lastModifiedDate":"2024-01-26"},{"lineNumber":63,"author":{"gitId":"pjanthony2001"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":64,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":65,"author":{"gitId":"pjanthony2001"},"content":" case FIND:","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"pjanthony2001"},"content":" storage.displaySearchList(processFind(input));","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"pjanthony2001"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"pjanthony2001"},"content":" default:","lastModifiedDate":"2024-01-22"},{"lineNumber":70,"author":{"gitId":"pjanthony2001"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":71,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":72,"author":{"gitId":"pjanthony2001"},"content":" storage.update();","lastModifiedDate":"2024-01-26"},{"lineNumber":73,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":74,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":75,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"pjanthony2001"},"content":" * Processes the DELETE command input to extract the task index to be deleted.","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"pjanthony2001"},"content":" * @param input The user input for the DELETE command.","lastModifiedDate":"2024-01-28"},{"lineNumber":79,"author":{"gitId":"pjanthony2001"},"content":" * @return The index of the task to be deleted.","lastModifiedDate":"2024-01-28"},{"lineNumber":80,"author":{"gitId":"pjanthony2001"},"content":" * @throws InputException If there is an issue with the input format or command.","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"pjanthony2001"},"content":" public Integer processDelete(String input) throws InputException {","lastModifiedDate":"2024-01-26"},{"lineNumber":83,"author":{"gitId":"pjanthony2001"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":84,"author":{"gitId":"pjanthony2001"},"content":" return Integer.parseInt(input.split(\" \")[1]) - 1;","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"pjanthony2001"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":87,"author":{"gitId":"pjanthony2001"},"content":" throw InputException.exceptionCommandProcessing(Command.DELETE, input, e);","lastModifiedDate":"2024-01-26"},{"lineNumber":88,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":89,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":90,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":91,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":92,"author":{"gitId":"pjanthony2001"},"content":" * Processes the DEADLINE command input to create a `Deadline` task.","lastModifiedDate":"2024-01-28"},{"lineNumber":93,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":94,"author":{"gitId":"pjanthony2001"},"content":" * @param input The user input for the DEADLINE command.","lastModifiedDate":"2024-01-28"},{"lineNumber":95,"author":{"gitId":"pjanthony2001"},"content":" * @return A `Deadline` task created from the input.","lastModifiedDate":"2024-01-28"},{"lineNumber":96,"author":{"gitId":"pjanthony2001"},"content":" * @throws InputException If there is an issue with the input format or command.","lastModifiedDate":"2024-01-28"},{"lineNumber":97,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"pjanthony2001"},"content":" public Task processDeadline(String input) throws InputException {","lastModifiedDate":"2024-01-26"},{"lineNumber":99,"author":{"gitId":"pjanthony2001"},"content":" try {","lastModifiedDate":"2024-01-22"},{"lineNumber":100,"author":{"gitId":"pjanthony2001"},"content":" String restOfInput \u003d input.substring(9);","lastModifiedDate":"2024-01-28"},{"lineNumber":101,"author":{"gitId":"pjanthony2001"},"content":" String[] splitInput \u003d restOfInput.split(\" /by \");","lastModifiedDate":"2024-01-22"},{"lineNumber":102,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":103,"author":{"gitId":"pjanthony2001"},"content":" String taskName \u003d splitInput[0];","lastModifiedDate":"2024-01-22"},{"lineNumber":104,"author":{"gitId":"pjanthony2001"},"content":" LocalDateTime by \u003d TimeProcessor.fromString(splitInput[1]);","lastModifiedDate":"2024-01-26"},{"lineNumber":105,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":106,"author":{"gitId":"pjanthony2001"},"content":" return new Deadline(taskName, by);","lastModifiedDate":"2024-01-22"},{"lineNumber":107,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":108,"author":{"gitId":"pjanthony2001"},"content":" } catch (IndexOutOfBoundsException | DateTimeParseException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":109,"author":{"gitId":"pjanthony2001"},"content":" throw InputException.exceptionCommandProcessing(Command.DEADLINE, input, e);","lastModifiedDate":"2024-01-26"},{"lineNumber":110,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":111,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":112,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":113,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":114,"author":{"gitId":"pjanthony2001"},"content":" * Processes the TODO command input to create a `Todo` task.","lastModifiedDate":"2024-01-28"},{"lineNumber":115,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":116,"author":{"gitId":"pjanthony2001"},"content":" * @param input The user input for the TODO command.","lastModifiedDate":"2024-01-28"},{"lineNumber":117,"author":{"gitId":"pjanthony2001"},"content":" * @return A `Todo` task created from the input.","lastModifiedDate":"2024-01-28"},{"lineNumber":118,"author":{"gitId":"pjanthony2001"},"content":" * @throws InputException If there is an issue with the input format or command.","lastModifiedDate":"2024-01-28"},{"lineNumber":119,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":120,"author":{"gitId":"pjanthony2001"},"content":" public Task processTodo(String input) throws InputException {","lastModifiedDate":"2024-01-26"},{"lineNumber":121,"author":{"gitId":"pjanthony2001"},"content":" try {","lastModifiedDate":"2024-01-22"},{"lineNumber":122,"author":{"gitId":"pjanthony2001"},"content":" String taskName \u003d input.substring(5);","lastModifiedDate":"2024-01-28"},{"lineNumber":123,"author":{"gitId":"pjanthony2001"},"content":" return new Todo(taskName);","lastModifiedDate":"2024-01-22"},{"lineNumber":124,"author":{"gitId":"pjanthony2001"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":125,"author":{"gitId":"pjanthony2001"},"content":" throw InputException.exceptionCommandProcessing(Command.TODO, input, e);","lastModifiedDate":"2024-01-26"},{"lineNumber":126,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":127,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":128,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":129,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":130,"author":{"gitId":"pjanthony2001"},"content":" * Processes the EVENT command input to create an `Event` task.","lastModifiedDate":"2024-01-28"},{"lineNumber":131,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":132,"author":{"gitId":"pjanthony2001"},"content":" * @param input The user input for the EVENT command.","lastModifiedDate":"2024-01-28"},{"lineNumber":133,"author":{"gitId":"pjanthony2001"},"content":" * @return An `Event` task created from the input.","lastModifiedDate":"2024-01-28"},{"lineNumber":134,"author":{"gitId":"pjanthony2001"},"content":" * @throws InputException If there is an issue with the input format or command.","lastModifiedDate":"2024-01-28"},{"lineNumber":135,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":136,"author":{"gitId":"pjanthony2001"},"content":" public Task processEvent(String input) throws InputException {","lastModifiedDate":"2024-01-26"},{"lineNumber":137,"author":{"gitId":"pjanthony2001"},"content":" try {","lastModifiedDate":"2024-01-22"},{"lineNumber":138,"author":{"gitId":"pjanthony2001"},"content":" String restOfInput \u003d input.substring(6);","lastModifiedDate":"2024-01-28"},{"lineNumber":139,"author":{"gitId":"pjanthony2001"},"content":" String[] splitFrom \u003d restOfInput.split(\" /from \");","lastModifiedDate":"2024-01-22"},{"lineNumber":140,"author":{"gitId":"pjanthony2001"},"content":" String[] fromTo \u003d splitFrom[1].split(\" /to \");","lastModifiedDate":"2024-01-22"},{"lineNumber":141,"author":{"gitId":"pjanthony2001"},"content":" String taskName \u003d splitFrom[0];","lastModifiedDate":"2024-01-22"},{"lineNumber":142,"author":{"gitId":"pjanthony2001"},"content":" LocalDateTime from \u003d TimeProcessor.fromString(fromTo[0]);","lastModifiedDate":"2024-01-26"},{"lineNumber":143,"author":{"gitId":"pjanthony2001"},"content":" LocalDateTime to \u003d TimeProcessor.fromString(fromTo[1]);","lastModifiedDate":"2024-01-26"},{"lineNumber":144,"author":{"gitId":"pjanthony2001"},"content":" return new Event(taskName, from, to);","lastModifiedDate":"2024-01-22"},{"lineNumber":145,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":146,"author":{"gitId":"pjanthony2001"},"content":" } catch (IndexOutOfBoundsException | DateTimeParseException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":147,"author":{"gitId":"pjanthony2001"},"content":" throw InputException.exceptionCommandProcessing(Command.EVENT, input, e);","lastModifiedDate":"2024-01-26"},{"lineNumber":148,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":149,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":150,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":151,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":152,"author":{"gitId":"pjanthony2001"},"content":" * Processes the MARK or UNMARK command input to extract the task index to be marked or unmarked.","lastModifiedDate":"2024-01-28"},{"lineNumber":153,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":154,"author":{"gitId":"pjanthony2001"},"content":" * @param input The user input for the MARK or UNMARK command.","lastModifiedDate":"2024-01-28"},{"lineNumber":155,"author":{"gitId":"pjanthony2001"},"content":" * @param cmd The command type (MARK or UNMARK).","lastModifiedDate":"2024-01-28"},{"lineNumber":156,"author":{"gitId":"pjanthony2001"},"content":" * @return The index of the task to be marked or unmarked.","lastModifiedDate":"2024-01-28"},{"lineNumber":157,"author":{"gitId":"pjanthony2001"},"content":" * @throws InputException If there is an issue with the input format or command.","lastModifiedDate":"2024-01-28"},{"lineNumber":158,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":159,"author":{"gitId":"pjanthony2001"},"content":" public Integer processMark(String input, Command cmd) throws InputException {","lastModifiedDate":"2024-01-26"},{"lineNumber":160,"author":{"gitId":"pjanthony2001"},"content":" try {","lastModifiedDate":"2024-01-22"},{"lineNumber":161,"author":{"gitId":"pjanthony2001"},"content":" return Integer.parseInt(input.split(\" \")[1]) - 1;","lastModifiedDate":"2024-01-28"},{"lineNumber":162,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":163,"author":{"gitId":"pjanthony2001"},"content":" } catch (IndexOutOfBoundsException | NumberFormatException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":164,"author":{"gitId":"pjanthony2001"},"content":" throw InputException.exceptionCommandProcessing(cmd, input, e);","lastModifiedDate":"2024-01-26"},{"lineNumber":165,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":166,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":167,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":168,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":169,"author":{"gitId":"pjanthony2001"},"content":" * Processes the FIND command input to extract the search query.","lastModifiedDate":"2024-01-28"},{"lineNumber":170,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":171,"author":{"gitId":"pjanthony2001"},"content":" * @param input The user input for the FIND command.","lastModifiedDate":"2024-01-28"},{"lineNumber":172,"author":{"gitId":"pjanthony2001"},"content":" * @return The search query to find matching tasks.","lastModifiedDate":"2024-01-28"},{"lineNumber":173,"author":{"gitId":"pjanthony2001"},"content":" * @throws InputException If there is an issue with the input format or command.","lastModifiedDate":"2024-01-28"},{"lineNumber":174,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":175,"author":{"gitId":"pjanthony2001"},"content":" public String processFind(String input) throws InputException {","lastModifiedDate":"2024-01-28"},{"lineNumber":176,"author":{"gitId":"pjanthony2001"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":177,"author":{"gitId":"pjanthony2001"},"content":" return input.split(\" \")[1];","lastModifiedDate":"2024-01-28"},{"lineNumber":178,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":179,"author":{"gitId":"pjanthony2001"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":180,"author":{"gitId":"pjanthony2001"},"content":" throw InputException.exceptionCommandProcessing(Command.FIND, input, e);","lastModifiedDate":"2024-01-28"},{"lineNumber":181,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":182,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":183,"author":{"gitId":"pjanthony2001"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"pjanthony2001":183}},{"path":"src/main/java/duke/exceptions/InputException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pjanthony2001"},"content":"package duke.exceptions;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"pjanthony2001"},"content":"import duke.command.Command;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"pjanthony2001"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"pjanthony2001"},"content":" * The `InputException` class represents an exception related to input processing.","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"pjanthony2001"},"content":"public class InputException extends Exception {","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"pjanthony2001"},"content":" public InputException(String message) {","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"pjanthony2001"},"content":" super(message);","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"pjanthony2001"},"content":" public InputException(String message, Throwable cause) {","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"pjanthony2001"},"content":" super(message, cause);","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"pjanthony2001"},"content":" * Creates an `InputException` for command processing with a specific command, input, and cause.","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"pjanthony2001"},"content":" * @param command The command being processed when the exception occurred.","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"pjanthony2001"},"content":" * @param input The input associated with the exception.","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"pjanthony2001"},"content":" * @param cause The cause of the exception (a Throwable object).","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"pjanthony2001"},"content":" * @return An `InputException` with a message describing the error during command processing.","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"pjanthony2001"},"content":" public static InputException exceptionCommandProcessing(Command command, String input, Throwable cause) {","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"pjanthony2001"},"content":" String message \u003d \"Something went wrong when processing your \" + command + \"command: \\n\"","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"pjanthony2001"},"content":" + \"Check your input again: \" + input;","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"pjanthony2001"},"content":" return new InputException(message, cause);","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"pjanthony2001"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"pjanthony2001":30}},{"path":"src/main/java/duke/exceptions/ProcessingException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pjanthony2001"},"content":"package duke.exceptions;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"pjanthony2001"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"pjanthony2001"},"content":" * The `ProcessingException` class represents an exception related to processing tasks or data in the Duke application.","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"pjanthony2001"},"content":"public class ProcessingException extends Exception {","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"pjanthony2001"},"content":" public ProcessingException(String message) {","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"pjanthony2001"},"content":" super(message);","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"pjanthony2001"},"content":" public ProcessingException(String message, Throwable cause) {","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"pjanthony2001"},"content":" super(message, cause);","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"pjanthony2001"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"pjanthony2001":14}},{"path":"src/main/java/duke/exceptions/StartUpException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pjanthony2001"},"content":"package duke.exceptions;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"pjanthony2001"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"pjanthony2001"},"content":" * The `StartUpException` class represents an exception related to startup issues in the Duke application.","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"pjanthony2001"},"content":"public class StartUpException extends Exception {","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"pjanthony2001"},"content":" public StartUpException(String message) {","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"pjanthony2001"},"content":" super(message);","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"pjanthony2001"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"pjanthony2001":10}},{"path":"src/main/java/duke/search/Search.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pjanthony2001"},"content":"package duke.search;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"pjanthony2001"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"pjanthony2001"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"pjanthony2001"},"content":"import duke.tasks.Task;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"pjanthony2001"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"pjanthony2001"},"content":" * The `Search` class provides a utility for searching tasks in a list based on a query.","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"pjanthony2001"},"content":"public class Search {","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"pjanthony2001"},"content":" * Searches for tasks in the given list that match the specified query.","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"pjanthony2001"},"content":" * @param list The list of tasks to search within.","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"pjanthony2001"},"content":" * @param query The search query to match against task names.","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"pjanthony2001"},"content":" * @return An ArrayList of tasks that match the query.","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"pjanthony2001"},"content":" public static ArrayList\u003cTask\u003e search(ArrayList\u003cTask\u003e list, String query) {","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"pjanthony2001"},"content":" ArrayList\u003cTask\u003e resultList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"pjanthony2001"},"content":" Pattern pattern \u003d Pattern.compile(\".*\\\\b\" + query.toLowerCase() + \"\\\\b.*\");","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"pjanthony2001"},"content":" for (Task task : list) {","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"pjanthony2001"},"content":" boolean isMatch \u003d pattern.matcher(task.getTaskName().toLowerCase()).matches();","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"pjanthony2001"},"content":" if (isMatch) {","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"pjanthony2001"},"content":" resultList.add(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"pjanthony2001"},"content":" return resultList;","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"pjanthony2001"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"pjanthony2001":31}},{"path":"src/main/java/duke/storage/LocalStorage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pjanthony2001"},"content":"package duke.storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"pjanthony2001"},"content":"import java.io.File;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"pjanthony2001"},"content":"import java.io.FileOutputStream;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"pjanthony2001"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"pjanthony2001"},"content":"import java.io.PrintWriter;","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"pjanthony2001"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"pjanthony2001"},"content":"import java.util.List;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"pjanthony2001"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"pjanthony2001"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"pjanthony2001"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"pjanthony2001"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"pjanthony2001"},"content":" * The `LocalStorage` class manages the local storage and retrieval of tasks in the Duke application.","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"pjanthony2001"},"content":" * It provides methods for loading, saving, and clearing tasks from a local file.","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"pjanthony2001"},"content":"public class LocalStorage {","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"pjanthony2001"},"content":" private final boolean createdNewFile;","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"pjanthony2001"},"content":" private PrintWriter printWriter;","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"pjanthony2001"},"content":" private final Scanner scan;","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"pjanthony2001"},"content":" private final File saveFile;","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"pjanthony2001"},"content":" * Constructs a new `LocalStorage` object with the specified file location.","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"pjanthony2001"},"content":" * @param fileLocation The file location where tasks are stored.","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"pjanthony2001"},"content":" * @throws IOException If an I/O error occurs while creating or accessing the file.","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"pjanthony2001"},"content":" public LocalStorage(String fileLocation) throws IOException {","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"pjanthony2001"},"content":" this.saveFile \u003d new File(fileLocation);","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"pjanthony2001"},"content":" this.createdNewFile \u003d saveFile.createNewFile();","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"pjanthony2001"},"content":" this.printWriter \u003d new PrintWriter(new FileOutputStream(saveFile, true));","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"pjanthony2001"},"content":" this.scan \u003d new Scanner(saveFile);","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"pjanthony2001"},"content":" public boolean createdNewFile() {","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"pjanthony2001"},"content":" return createdNewFile;","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"pjanthony2001"},"content":" * Loads encoded tasks from the local storage file.","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"pjanthony2001"},"content":" * @return A list of encoded task strings loaded from the file.","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"pjanthony2001"},"content":" public ArrayList\u003cString\u003e load() {","lastModifiedDate":"2024-01-26"},{"lineNumber":48,"author":{"gitId":"pjanthony2001"},"content":" ArrayList\u003cString\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-26"},{"lineNumber":49,"author":{"gitId":"pjanthony2001"},"content":" while (scan.hasNextLine()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":50,"author":{"gitId":"pjanthony2001"},"content":" String encodedTask \u003d scan.nextLine();","lastModifiedDate":"2024-01-26"},{"lineNumber":51,"author":{"gitId":"pjanthony2001"},"content":" list.add(encodedTask);","lastModifiedDate":"2024-01-26"},{"lineNumber":52,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":53,"author":{"gitId":"pjanthony2001"},"content":" return list;","lastModifiedDate":"2024-01-26"},{"lineNumber":54,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":55,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":56,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"pjanthony2001"},"content":" * Saves encoded tasks to the local storage file, overwriting existing data.","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"pjanthony2001"},"content":" * @param encodedTasks A stream of encoded task strings to be saved.","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"pjanthony2001"},"content":" * @throws IOException If an I/O error occurs while saving the data.","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"pjanthony2001"},"content":" public void save(Stream\u003cString\u003e encodedTasks) throws IOException {","lastModifiedDate":"2024-01-26"},{"lineNumber":63,"author":{"gitId":"pjanthony2001"},"content":" clearAll();","lastModifiedDate":"2024-01-26"},{"lineNumber":64,"author":{"gitId":"pjanthony2001"},"content":" printWriter \u003d new PrintWriter(new FileOutputStream(saveFile, true));","lastModifiedDate":"2024-01-26"},{"lineNumber":65,"author":{"gitId":"pjanthony2001"},"content":" List\u003cString\u003e encodedTasksList \u003d encodedTasks.collect(Collectors.toList());","lastModifiedDate":"2024-01-26"},{"lineNumber":66,"author":{"gitId":"pjanthony2001"},"content":" for (String string : encodedTasksList) {","lastModifiedDate":"2024-01-26"},{"lineNumber":67,"author":{"gitId":"pjanthony2001"},"content":" printWriter.println(string);","lastModifiedDate":"2024-01-26"},{"lineNumber":68,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":69,"author":{"gitId":"pjanthony2001"},"content":" printWriter.close();","lastModifiedDate":"2024-01-26"},{"lineNumber":70,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":71,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":72,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"pjanthony2001"},"content":" * Clears all data in the local storage file.","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"pjanthony2001"},"content":" * @throws IOException If an I/O error occurs while clearing the file.","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"pjanthony2001"},"content":" public void clearAll() throws IOException {","lastModifiedDate":"2024-01-26"},{"lineNumber":78,"author":{"gitId":"pjanthony2001"},"content":" printWriter \u003d new PrintWriter(new FileOutputStream(saveFile, false));","lastModifiedDate":"2024-01-26"},{"lineNumber":79,"author":{"gitId":"pjanthony2001"},"content":" printWriter.close();","lastModifiedDate":"2024-01-26"},{"lineNumber":80,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":81,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":82,"author":{"gitId":"pjanthony2001"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"pjanthony2001":82}},{"path":"src/main/java/duke/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pjanthony2001"},"content":"package duke.storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"pjanthony2001"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"pjanthony2001"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"pjanthony2001"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"pjanthony2001"},"content":"import duke.exceptions.ProcessingException;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"pjanthony2001"},"content":"import duke.exceptions.StartUpException;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"pjanthony2001"},"content":"import duke.tasks.Task;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"pjanthony2001"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"pjanthony2001"},"content":" * The `Storage` class manages the interaction between the temporary storage (`TempStorage`)","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"pjanthony2001"},"content":" * and local storage (`LocalStorage`) for saving, loading, updating, and performing operations","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"pjanthony2001"},"content":" * on tasks in the Duke application.","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"pjanthony2001"},"content":"public class Storage {","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"pjanthony2001"},"content":" private final LocalStorage local;","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"pjanthony2001"},"content":" private final TempStorage temp;","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"pjanthony2001"},"content":" * Constructs a new `Storage` object with the specified file location.","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"pjanthony2001"},"content":" * @param fileLocation The file location where tasks are stored.","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"pjanthony2001"},"content":" * @throws StartUpException If an error occurs during the startup process, such as file access issues.","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"pjanthony2001"},"content":" public Storage(String fileLocation) throws StartUpException {","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"pjanthony2001"},"content":" temp \u003d new TempStorage();","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"pjanthony2001"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"pjanthony2001"},"content":" local \u003d new LocalStorage(fileLocation);","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"pjanthony2001"},"content":" if (local.createdNewFile()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"pjanthony2001"},"content":" saveFileNotFound();","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"pjanthony2001"},"content":" } else {","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"pjanthony2001"},"content":" saveFileFound();","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"pjanthony2001"},"content":" ArrayList\u003cString\u003e loadList \u003d local.load();","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"pjanthony2001"},"content":" temp.load(loadList); //Load from local into temp","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"pjanthony2001"},"content":" } catch (IOException | ProcessingException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"pjanthony2001"},"content":" String message \u003d \"An error occurred with the save file. Try again\";","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"pjanthony2001"},"content":" e.printStackTrace();","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"pjanthony2001"},"content":" throw new StartUpException(message);","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"pjanthony2001"},"content":" private void saveFileNotFound() {","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"pjanthony2001"},"content":" System.out.println(\"Save file not found! Created an new one!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":48,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":49,"author":{"gitId":"pjanthony2001"},"content":" private void saveFileFound() {","lastModifiedDate":"2024-01-26"},{"lineNumber":50,"author":{"gitId":"pjanthony2001"},"content":" System.out.println(\"Save file found! Loading old save...\");","lastModifiedDate":"2024-01-26"},{"lineNumber":51,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":52,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":53,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"pjanthony2001"},"content":" * Updates the local storage with the data from the temporary storage.","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"pjanthony2001"},"content":" * @throws ProcessingException If an error occurs while updating the save file.","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"pjanthony2001"},"content":" public void update() throws ProcessingException {","lastModifiedDate":"2024-01-26"},{"lineNumber":59,"author":{"gitId":"pjanthony2001"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":60,"author":{"gitId":"pjanthony2001"},"content":" Stream\u003cString\u003e stringStream \u003d temp.save();","lastModifiedDate":"2024-01-26"},{"lineNumber":61,"author":{"gitId":"pjanthony2001"},"content":" local.save(stringStream);","lastModifiedDate":"2024-01-26"},{"lineNumber":62,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":63,"author":{"gitId":"pjanthony2001"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":64,"author":{"gitId":"pjanthony2001"},"content":" String message \u003d \"An error occurred while trying to update the save file. Try again\";","lastModifiedDate":"2024-01-26"},{"lineNumber":65,"author":{"gitId":"pjanthony2001"},"content":" e.printStackTrace();","lastModifiedDate":"2024-01-26"},{"lineNumber":66,"author":{"gitId":"pjanthony2001"},"content":" throw new ProcessingException(message);","lastModifiedDate":"2024-01-26"},{"lineNumber":67,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":68,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":69,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":70,"author":{"gitId":"pjanthony2001"},"content":" public void add(Task task) throws ProcessingException {","lastModifiedDate":"2024-01-26"},{"lineNumber":71,"author":{"gitId":"pjanthony2001"},"content":" temp.add(task);","lastModifiedDate":"2024-01-26"},{"lineNumber":72,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":73,"author":{"gitId":"pjanthony2001"},"content":" public void delete(int i) throws ProcessingException {","lastModifiedDate":"2024-01-26"},{"lineNumber":74,"author":{"gitId":"pjanthony2001"},"content":" temp.delete(i);","lastModifiedDate":"2024-01-26"},{"lineNumber":75,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":76,"author":{"gitId":"pjanthony2001"},"content":" public void mark(int i) throws ProcessingException {","lastModifiedDate":"2024-01-26"},{"lineNumber":77,"author":{"gitId":"pjanthony2001"},"content":" temp.mark(i);","lastModifiedDate":"2024-01-26"},{"lineNumber":78,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":79,"author":{"gitId":"pjanthony2001"},"content":" public void unmark(int i) throws ProcessingException {","lastModifiedDate":"2024-01-26"},{"lineNumber":80,"author":{"gitId":"pjanthony2001"},"content":" temp.unmark(i);","lastModifiedDate":"2024-01-26"},{"lineNumber":81,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":82,"author":{"gitId":"pjanthony2001"},"content":" public void displayList() {","lastModifiedDate":"2024-01-26"},{"lineNumber":83,"author":{"gitId":"pjanthony2001"},"content":" temp.displayList();","lastModifiedDate":"2024-01-26"},{"lineNumber":84,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":85,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":86,"author":{"gitId":"pjanthony2001"},"content":" public void displaySearchList(String query) {","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"pjanthony2001"},"content":" temp.displaySearchList(query);","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"pjanthony2001"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"pjanthony2001":89}},{"path":"src/main/java/duke/storage/TempStorage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pjanthony2001"},"content":"package duke.storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"pjanthony2001"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"pjanthony2001"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"pjanthony2001"},"content":"import duke.codec.Codec;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"pjanthony2001"},"content":"import duke.exceptions.ProcessingException;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"pjanthony2001"},"content":"import duke.search.Search;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"pjanthony2001"},"content":"import duke.tasks.Task;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"pjanthony2001"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"pjanthony2001"},"content":" * The `TempStorage` class is responsible for temporary storage and management of tasks in memory.","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"pjanthony2001"},"content":" * It allows adding, deleting, marking, unmarking tasks, loading tasks from encoded strings, and","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"pjanthony2001"},"content":" * displaying the task list.","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"pjanthony2001"},"content":"public class TempStorage {","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"pjanthony2001"},"content":" private final Codec codec;","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"pjanthony2001"},"content":" private final ArrayList\u003cTask\u003e list;","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"pjanthony2001"},"content":" * Initializes a new `TempStorage` object with an empty task list and a `Codec` for encoding and decoding tasks.","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"pjanthony2001"},"content":" public TempStorage() {","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"pjanthony2001"},"content":" this.list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"pjanthony2001"},"content":" this.codec \u003d new Codec();","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"pjanthony2001"},"content":" * Deletes a task at the specified index from the task list.","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"pjanthony2001"},"content":" * @param i The index of the task to be deleted.","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"pjanthony2001"},"content":" * @throws ProcessingException If there is an issue executing the delete command or if the index is out of bounds.","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"pjanthony2001"},"content":" public void delete(int i) throws ProcessingException {","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"pjanthony2001"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"pjanthony2001"},"content":" Task task \u003d list.get(i);","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"pjanthony2001"},"content":" list.remove(i);","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"pjanthony2001"},"content":" System.out.printf(\"I have deleted this:\\n%s%n\", task);","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"pjanthony2001"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"pjanthony2001"},"content":" String message \u003d \"Something went wrong when executing your delete command: \\n\"","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"pjanthony2001"},"content":" + \"Check your input again\";","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"pjanthony2001"},"content":" throw new ProcessingException(message);","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"pjanthony2001"},"content":" * Marks a task at the specified index as done.","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"pjanthony2001"},"content":" * @param i The index of the task to be marked as done.","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"pjanthony2001"},"content":" * @throws ProcessingException If there is an issue executing the mark command or if the index is out of bounds.","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"pjanthony2001"},"content":" public void mark(int i) throws ProcessingException {","lastModifiedDate":"2024-01-26"},{"lineNumber":53,"author":{"gitId":"pjanthony2001"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":54,"author":{"gitId":"pjanthony2001"},"content":" Task task \u003d list.get(i);","lastModifiedDate":"2024-01-26"},{"lineNumber":55,"author":{"gitId":"pjanthony2001"},"content":" task.markDone();","lastModifiedDate":"2024-01-26"},{"lineNumber":56,"author":{"gitId":"pjanthony2001"},"content":" System.out.printf(\"I have marked this:\\n%s%n\", task);","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"pjanthony2001"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":58,"author":{"gitId":"pjanthony2001"},"content":" String message \u003d \"Something went wrong when executing your mark command: \\n\"","lastModifiedDate":"2024-01-26"},{"lineNumber":59,"author":{"gitId":"pjanthony2001"},"content":" + \"Check your input again\";","lastModifiedDate":"2024-01-26"},{"lineNumber":60,"author":{"gitId":"pjanthony2001"},"content":" throw new ProcessingException(message);","lastModifiedDate":"2024-01-26"},{"lineNumber":61,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":62,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":63,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":64,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"pjanthony2001"},"content":" * Marks a task at the specified index as undone.","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"pjanthony2001"},"content":" * @param i The index of the task to be marked as undone.","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"pjanthony2001"},"content":" * @throws ProcessingException If there is an issue executing the unmark command or if the index is out of bounds.","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"pjanthony2001"},"content":" public void unmark(int i) throws ProcessingException {","lastModifiedDate":"2024-01-26"},{"lineNumber":71,"author":{"gitId":"pjanthony2001"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":72,"author":{"gitId":"pjanthony2001"},"content":" Task task \u003d list.get(i);","lastModifiedDate":"2024-01-26"},{"lineNumber":73,"author":{"gitId":"pjanthony2001"},"content":" task.markUndone();","lastModifiedDate":"2024-01-26"},{"lineNumber":74,"author":{"gitId":"pjanthony2001"},"content":" System.out.printf(\"I have unmarked this:\\n%s%n\", task);","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"pjanthony2001"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":76,"author":{"gitId":"pjanthony2001"},"content":" String message \u003d \"Something went wrong when executing your unmark command: \\n\"","lastModifiedDate":"2024-01-26"},{"lineNumber":77,"author":{"gitId":"pjanthony2001"},"content":" + \"Check your input again\";","lastModifiedDate":"2024-01-26"},{"lineNumber":78,"author":{"gitId":"pjanthony2001"},"content":" throw new ProcessingException(message);","lastModifiedDate":"2024-01-26"},{"lineNumber":79,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":80,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":81,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":82,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":83,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"pjanthony2001"},"content":" * Adds a new task to the task list.","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"pjanthony2001"},"content":" * @param task The task to be added.","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"pjanthony2001"},"content":" * @throws ProcessingException If there is an issue executing the add command.","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"pjanthony2001"},"content":" public void add(Task task) throws ProcessingException {","lastModifiedDate":"2024-01-26"},{"lineNumber":90,"author":{"gitId":"pjanthony2001"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":91,"author":{"gitId":"pjanthony2001"},"content":" list.add(task);","lastModifiedDate":"2024-01-26"},{"lineNumber":92,"author":{"gitId":"pjanthony2001"},"content":" System.out.printf(\"Got it. I\u0027ve added this task:\\n%s\\nNow you have %d tasks in the list.%n\",","lastModifiedDate":"2024-01-28"},{"lineNumber":93,"author":{"gitId":"pjanthony2001"},"content":" task,","lastModifiedDate":"2024-01-28"},{"lineNumber":94,"author":{"gitId":"pjanthony2001"},"content":" list.size());","lastModifiedDate":"2024-01-28"},{"lineNumber":95,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":96,"author":{"gitId":"pjanthony2001"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":97,"author":{"gitId":"pjanthony2001"},"content":" String message \u003d \"Something went wrong when executing your add command: \\n\"","lastModifiedDate":"2024-01-26"},{"lineNumber":98,"author":{"gitId":"pjanthony2001"},"content":" + \"Check your input again\";","lastModifiedDate":"2024-01-26"},{"lineNumber":99,"author":{"gitId":"pjanthony2001"},"content":" throw new ProcessingException(message);","lastModifiedDate":"2024-01-26"},{"lineNumber":100,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":101,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":102,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":103,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":104,"author":{"gitId":"pjanthony2001"},"content":" * Loads tasks from encoded strings and adds them to the task list.","lastModifiedDate":"2024-01-28"},{"lineNumber":105,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":106,"author":{"gitId":"pjanthony2001"},"content":" * @param encodedTasks The list of encoded task strings.","lastModifiedDate":"2024-01-28"},{"lineNumber":107,"author":{"gitId":"pjanthony2001"},"content":" * @throws ProcessingException If there is an issue decoding and loading tasks.","lastModifiedDate":"2024-01-28"},{"lineNumber":108,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":109,"author":{"gitId":"pjanthony2001"},"content":" public void load(ArrayList\u003cString\u003e encodedTasks) throws ProcessingException {","lastModifiedDate":"2024-01-26"},{"lineNumber":110,"author":{"gitId":"pjanthony2001"},"content":" for (String encodedTask : encodedTasks) {","lastModifiedDate":"2024-01-26"},{"lineNumber":111,"author":{"gitId":"pjanthony2001"},"content":" Task decodedTask \u003d codec.decode(encodedTask);","lastModifiedDate":"2024-01-26"},{"lineNumber":112,"author":{"gitId":"pjanthony2001"},"content":" list.add(decodedTask);","lastModifiedDate":"2024-01-26"},{"lineNumber":113,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":114,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":115,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":116,"author":{"gitId":"pjanthony2001"},"content":" public Stream\u003cString\u003e save() {","lastModifiedDate":"2024-01-26"},{"lineNumber":117,"author":{"gitId":"pjanthony2001"},"content":" return list.stream().map(codec::encode);","lastModifiedDate":"2024-01-26"},{"lineNumber":118,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":119,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":120,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":121,"author":{"gitId":"pjanthony2001"},"content":" * Displays the task list to the console.","lastModifiedDate":"2024-01-28"},{"lineNumber":122,"author":{"gitId":"pjanthony2001"},"content":" * If the list is empty, it informs the user to add tasks.","lastModifiedDate":"2024-01-28"},{"lineNumber":123,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":124,"author":{"gitId":"pjanthony2001"},"content":" public void displayList() {","lastModifiedDate":"2024-01-26"},{"lineNumber":125,"author":{"gitId":"pjanthony2001"},"content":" if (list.isEmpty()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":126,"author":{"gitId":"pjanthony2001"},"content":" System.out.println(\"Your list is empty! Try adding tasks (eg. todo homework)\");","lastModifiedDate":"2024-01-26"},{"lineNumber":127,"author":{"gitId":"pjanthony2001"},"content":" } else {","lastModifiedDate":"2024-01-26"},{"lineNumber":128,"author":{"gitId":"pjanthony2001"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2024-01-26"},{"lineNumber":129,"author":{"gitId":"pjanthony2001"},"content":" Task task \u003d list.get(i);","lastModifiedDate":"2024-01-26"},{"lineNumber":130,"author":{"gitId":"pjanthony2001"},"content":" System.out.printf(\"%d. %s%n\", i + 1, task);","lastModifiedDate":"2024-01-28"},{"lineNumber":131,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":132,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":133,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":134,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":135,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":136,"author":{"gitId":"pjanthony2001"},"content":" * Displays a filtered list of tasks matching the search query.","lastModifiedDate":"2024-01-28"},{"lineNumber":137,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":138,"author":{"gitId":"pjanthony2001"},"content":" * @param query The search query to match against task names.","lastModifiedDate":"2024-01-28"},{"lineNumber":139,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":140,"author":{"gitId":"pjanthony2001"},"content":" public void displaySearchList(String query) {","lastModifiedDate":"2024-01-28"},{"lineNumber":141,"author":{"gitId":"pjanthony2001"},"content":" ArrayList\u003cTask\u003e resultList \u003d Search.search(list, query);","lastModifiedDate":"2024-01-28"},{"lineNumber":142,"author":{"gitId":"pjanthony2001"},"content":" if (resultList.isEmpty()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":143,"author":{"gitId":"pjanthony2001"},"content":" System.out.println(\"Your search was fruitless. Trying looking again\");","lastModifiedDate":"2024-01-28"},{"lineNumber":144,"author":{"gitId":"pjanthony2001"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":145,"author":{"gitId":"pjanthony2001"},"content":" System.out.println(\"Here are your matching search results\");","lastModifiedDate":"2024-01-28"},{"lineNumber":146,"author":{"gitId":"pjanthony2001"},"content":" for (int i \u003d 0; i \u003c resultList.size(); i++) {","lastModifiedDate":"2024-01-28"},{"lineNumber":147,"author":{"gitId":"pjanthony2001"},"content":" Task task \u003d resultList.get(i);","lastModifiedDate":"2024-01-28"},{"lineNumber":148,"author":{"gitId":"pjanthony2001"},"content":" System.out.printf(\"%d. %s%n\", i + 1, task);","lastModifiedDate":"2024-01-28"},{"lineNumber":149,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":150,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":151,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":152,"author":{"gitId":"pjanthony2001"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"pjanthony2001":152}},{"path":"src/main/java/duke/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pjanthony2001"},"content":"package duke.tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"pjanthony2001"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"pjanthony2001"},"content":"import duke.codec.TimeProcessor;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"pjanthony2001"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"pjanthony2001"},"content":" * The `Deadline` class represents a task with a specific deadline.","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"pjanthony2001"},"content":" * It extends the `Task` class and inherits its properties and methods.","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"pjanthony2001"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"pjanthony2001"},"content":" private final LocalDateTime by;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"pjanthony2001"},"content":" public Deadline(String taskName, LocalDateTime by) {","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"pjanthony2001"},"content":" this(taskName, by, false);","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"pjanthony2001"},"content":" * Constructs a new `Deadline` task with the given task name, deadline, and completion status.","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"pjanthony2001"},"content":" * @param taskName The name or description of the `Deadline` task.","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"pjanthony2001"},"content":" * @param by The deadline for the task.","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"pjanthony2001"},"content":" * @param done A boolean indicating whether the task is completed (true) or not (false).","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"pjanthony2001"},"content":" public Deadline(String taskName, LocalDateTime by, Boolean done) {","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"pjanthony2001"},"content":" super(taskName, done);","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"pjanthony2001"},"content":" super.identifier \u003d \"D\";","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"pjanthony2001"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"pjanthony2001"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"pjanthony2001"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"pjanthony2001"},"content":" return String.format(\"%s by: %s\", super.toString(), TimeProcessor.toString(by));","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"pjanthony2001"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"pjanthony2001"},"content":" public String[] encode() {","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"pjanthony2001"},"content":" String[] encodedDeadline \u003d new String[4];","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"pjanthony2001"},"content":" String[] encodedTask \u003d super.encode();","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"pjanthony2001"},"content":" System.arraycopy(encodedTask, 0, encodedDeadline, 0, encodedTask.length);","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"pjanthony2001"},"content":" encodedDeadline[3] \u003d TimeProcessor.toString(by);","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"pjanthony2001"},"content":" return encodedDeadline;","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":48,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"pjanthony2001"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"pjanthony2001"},"content":" public String getTaskName() {","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"pjanthony2001"},"content":" return super.getTaskName();","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"pjanthony2001"},"content":" public LocalDateTime getBy() {","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"pjanthony2001"},"content":" return by;","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"pjanthony2001"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"pjanthony2001":57}},{"path":"src/main/java/duke/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pjanthony2001"},"content":"package duke.tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"pjanthony2001"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"pjanthony2001"},"content":"import duke.codec.TimeProcessor;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"pjanthony2001"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"pjanthony2001"},"content":" * The `Event` class represents a task with a specific event duration.","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"pjanthony2001"},"content":" * It extends the `Task` class and inherits its properties and methods.","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"pjanthony2001"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"pjanthony2001"},"content":" private final LocalDateTime from;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"pjanthony2001"},"content":" private final LocalDateTime to;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"pjanthony2001"},"content":" public Event(String taskName, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"pjanthony2001"},"content":" this(taskName, from, to, false);","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"pjanthony2001"},"content":" * Constructs a new `Event` task with the given task name, event start time, end time, and completion status.","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"pjanthony2001"},"content":" * @param taskName The name or description of the `Event` task.","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"pjanthony2001"},"content":" * @param from The start time of the event.","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"pjanthony2001"},"content":" * @param to The end time of the event.","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"pjanthony2001"},"content":" * @param done A boolean indicating whether the task is completed (true) or not (false).","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"pjanthony2001"},"content":" public Event(String taskName, LocalDateTime from, LocalDateTime to, Boolean done) {","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"pjanthony2001"},"content":" super(taskName, done);","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"pjanthony2001"},"content":" super.identifier \u003d \"E\";","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"pjanthony2001"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"pjanthony2001"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"pjanthony2001"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"pjanthony2001"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"pjanthony2001"},"content":" return String.format(\"%s from: %s to: %s\",","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"pjanthony2001"},"content":" super.toString(),","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"pjanthony2001"},"content":" TimeProcessor.toString(from),","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"pjanthony2001"},"content":" TimeProcessor.toString(to)","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"pjanthony2001"},"content":" );","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"pjanthony2001"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"pjanthony2001"},"content":" public String[] encode() {","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"pjanthony2001"},"content":" String[] encodedEvent \u003d new String[5];","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"pjanthony2001"},"content":" String[] encodedTask \u003d super.encode();","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":48,"author":{"gitId":"pjanthony2001"},"content":" System.arraycopy(encodedTask, 0, encodedEvent, 0, encodedTask.length);","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":50,"author":{"gitId":"pjanthony2001"},"content":" encodedEvent[3] \u003d TimeProcessor.toString(from);","lastModifiedDate":"2024-01-26"},{"lineNumber":51,"author":{"gitId":"pjanthony2001"},"content":" encodedEvent[4] \u003d TimeProcessor.toString(to);","lastModifiedDate":"2024-01-26"},{"lineNumber":52,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":53,"author":{"gitId":"pjanthony2001"},"content":" return encodedEvent;","lastModifiedDate":"2024-01-26"},{"lineNumber":54,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":55,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"pjanthony2001"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"pjanthony2001"},"content":" public String getTaskName() {","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"pjanthony2001"},"content":" return super.getTaskName();","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"pjanthony2001"},"content":" public LocalDateTime getFrom() {","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"pjanthony2001"},"content":" return from;","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"pjanthony2001"},"content":" public LocalDateTime getTo() {","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"pjanthony2001"},"content":" return to;","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"pjanthony2001"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"pjanthony2001":67}},{"path":"src/main/java/duke/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pjanthony2001"},"content":"package duke.tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"pjanthony2001"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"pjanthony2001"},"content":" * The `Task` abstract class serves as the base class for various types of tasks in the Duke application.","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"pjanthony2001"},"content":"public abstract class Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"pjanthony2001"},"content":" protected String identifier;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"pjanthony2001"},"content":" private Boolean done;","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"pjanthony2001"},"content":" private String taskName;","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"pjanthony2001"},"content":" * Constructs a new `Task` with the given task name and completion status.","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"pjanthony2001"},"content":" * @param taskName The name or description of the task.","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"pjanthony2001"},"content":" * @param done A boolean indicating whether the task is completed (true) or not (false).","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"pjanthony2001"},"content":" public Task(String taskName, Boolean done) {","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"pjanthony2001"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"pjanthony2001"},"content":" this.done \u003d done;","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"pjanthony2001"},"content":" this.identifier \u003d \" \";","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"pjanthony2001"},"content":" public void markDone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"pjanthony2001"},"content":" done \u003d true;","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"pjanthony2001"},"content":" public void markUndone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"pjanthony2001"},"content":" done \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"pjanthony2001"},"content":" public String getIdentifier() {","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"pjanthony2001"},"content":" return identifier;","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"pjanthony2001"},"content":" public boolean getDone() {","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"pjanthony2001"},"content":" return done;","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"pjanthony2001"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":39,"author":{"gitId":"pjanthony2001"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":40,"author":{"gitId":"pjanthony2001"},"content":" return String.format(\"[%s] [%s] %s\", identifier, done ? \"X\" : \" \", taskName);","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":42,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":43,"author":{"gitId":"pjanthony2001"},"content":" public String getTaskName() {","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"pjanthony2001"},"content":" return taskName;","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"pjanthony2001"},"content":" public String[] encode() {","lastModifiedDate":"2024-01-26"},{"lineNumber":48,"author":{"gitId":"pjanthony2001"},"content":" return new String[]{identifier, done.toString(), taskName};","lastModifiedDate":"2024-01-26"},{"lineNumber":49,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":50,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":51,"author":{"gitId":"pjanthony2001"},"content":"}","lastModifiedDate":"2024-01-26"},{"lineNumber":52,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":53,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"pjanthony2001":53}},{"path":"src/main/java/duke/tasks/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pjanthony2001"},"content":"package duke.tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"pjanthony2001"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"pjanthony2001"},"content":" * The `Todo` class represents a task without a specific deadline or time range.","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"pjanthony2001"},"content":" * It extends the `Task` class and inherits its properties and methods.","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"pjanthony2001"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"pjanthony2001"},"content":" public Todo(String taskName) {","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"pjanthony2001"},"content":" this(taskName, false);","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"pjanthony2001"},"content":" * Constructs a new `Todo` task with the given task name and completion status.","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"pjanthony2001"},"content":" * @param taskName The name or description of the `Todo` task.","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"pjanthony2001"},"content":" * @param done A boolean indicating whether the task is completed (true) or not (false).","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"pjanthony2001"},"content":" public Todo(String taskName, Boolean done) {","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"pjanthony2001"},"content":" super(taskName, done);","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"pjanthony2001"},"content":" super.identifier \u003d \"T\";","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"pjanthony2001"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"pjanthony2001"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"pjanthony2001"},"content":" return super.toString();","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"pjanthony2001"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"pjanthony2001"},"content":" public String getTaskName() {","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"pjanthony2001"},"content":" return super.getTaskName();","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"pjanthony2001"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"pjanthony2001":33}},{"path":"src/main/java/duke/ui/UserInterface.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pjanthony2001"},"content":"package duke.ui;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"pjanthony2001"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"pjanthony2001"},"content":"import duke.command.Command;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"pjanthony2001"},"content":"import duke.command.CommandProcessor;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"pjanthony2001"},"content":"import duke.exceptions.InputException;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"pjanthony2001"},"content":"import duke.exceptions.ProcessingException;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"pjanthony2001"},"content":"import duke.exceptions.StartUpException;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"pjanthony2001"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"pjanthony2001"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"pjanthony2001"},"content":" * The `UserInterface` class handles user interactions and serves as the main interface for the Duke application.","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"pjanthony2001"},"content":"public class UserInterface {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"pjanthony2001"},"content":" private final Scanner scan;","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"pjanthony2001"},"content":" private CommandProcessor cmd;","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"pjanthony2001"},"content":" private boolean startUpSuccess \u003d false;","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"pjanthony2001"},"content":" * Initializes a new `UserInterface` object, sets up a scanner for user input,","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"pjanthony2001"},"content":" * and attempts to start the Duke application.","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"pjanthony2001"},"content":" public UserInterface() {","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"pjanthony2001"},"content":" scan \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"pjanthony2001"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"pjanthony2001"},"content":" String fileLocation \u003d \"./savefile.txt\";","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"pjanthony2001"},"content":" Storage storage \u003d new Storage(fileLocation);","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"pjanthony2001"},"content":" cmd \u003d new CommandProcessor(storage);","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"pjanthony2001"},"content":" startUpSuccess \u003d true;","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"pjanthony2001"},"content":" } catch (StartUpException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"pjanthony2001"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":39,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"pjanthony2001"},"content":" * Displays a greeting message to the user.","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"pjanthony2001"},"content":" public void greet() {","lastModifiedDate":"2024-01-22"},{"lineNumber":43,"author":{"gitId":"pjanthony2001"},"content":" String greeting \u003d \"Hi! My name is HAL9000\";","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"pjanthony2001"},"content":" System.out.println(greeting);","lastModifiedDate":"2024-01-22"},{"lineNumber":45,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":46,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"pjanthony2001"},"content":" * Displays a farewell message to the user.","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"pjanthony2001"},"content":" public void exit() {","lastModifiedDate":"2024-01-22"},{"lineNumber":51,"author":{"gitId":"pjanthony2001"},"content":" String exit \u003d \"Bye! See ya soon\";","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"pjanthony2001"},"content":" System.out.println(exit);","lastModifiedDate":"2024-01-22"},{"lineNumber":53,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":54,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":55,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"pjanthony2001"},"content":" * Displays a message indicating a startup failure to the user.","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"pjanthony2001"},"content":" public void startUpFailure() {","lastModifiedDate":"2024-01-26"},{"lineNumber":59,"author":{"gitId":"pjanthony2001"},"content":" System.out.println(\"Hi, you failed to start up properly! Sorry, bye!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":60,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":61,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":62,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"pjanthony2001"},"content":" * Polls for user input and processes commands until the user decides to exit.","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"pjanthony2001"},"content":" public void poll() {","lastModifiedDate":"2024-01-22"},{"lineNumber":66,"author":{"gitId":"pjanthony2001"},"content":" boolean polling \u003d true;","lastModifiedDate":"2024-01-22"},{"lineNumber":67,"author":{"gitId":"pjanthony2001"},"content":" while (polling) {","lastModifiedDate":"2024-01-22"},{"lineNumber":68,"author":{"gitId":"pjanthony2001"},"content":" String input \u003d scan.nextLine();","lastModifiedDate":"2024-01-22"},{"lineNumber":69,"author":{"gitId":"pjanthony2001"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":70,"author":{"gitId":"pjanthony2001"},"content":" Command command \u003d processCommand(input);","lastModifiedDate":"2024-01-26"},{"lineNumber":71,"author":{"gitId":"pjanthony2001"},"content":" if (command.isExit()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":72,"author":{"gitId":"pjanthony2001"},"content":" polling \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":73,"author":{"gitId":"pjanthony2001"},"content":" } else {","lastModifiedDate":"2024-01-22"},{"lineNumber":74,"author":{"gitId":"pjanthony2001"},"content":" cmd.processData(command, input);","lastModifiedDate":"2024-01-26"},{"lineNumber":75,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":76,"author":{"gitId":"pjanthony2001"},"content":" } catch (InputException | ProcessingException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":77,"author":{"gitId":"pjanthony2001"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-26"},{"lineNumber":78,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":79,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":80,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":81,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":82,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"pjanthony2001"},"content":" * Parses and returns the appropriate command based on user input.","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"pjanthony2001"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"pjanthony2001"},"content":" * @param input The user\u0027s input string.","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"pjanthony2001"},"content":" * @return The corresponding `Command` enum value.","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"pjanthony2001"},"content":" * @throws InputException If there is an issue processing the input or if the command is unrecognized.","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"pjanthony2001"},"content":" public Command processCommand(String input) throws InputException {","lastModifiedDate":"2024-01-26"},{"lineNumber":90,"author":{"gitId":"pjanthony2001"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":91,"author":{"gitId":"pjanthony2001"},"content":" String commandString \u003d input.split(\" \")[0];","lastModifiedDate":"2024-01-26"},{"lineNumber":92,"author":{"gitId":"pjanthony2001"},"content":" return Command.valueOf(commandString.toUpperCase());","lastModifiedDate":"2024-01-28"},{"lineNumber":93,"author":{"gitId":"pjanthony2001"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":94,"author":{"gitId":"pjanthony2001"},"content":" String message \u003d \"Something went wrong when processing your command: \\n\"","lastModifiedDate":"2024-01-26"},{"lineNumber":95,"author":{"gitId":"pjanthony2001"},"content":" + \"Check your input again: \" + input;","lastModifiedDate":"2024-01-26"},{"lineNumber":96,"author":{"gitId":"pjanthony2001"},"content":" throw new InputException(message, e);","lastModifiedDate":"2024-01-26"},{"lineNumber":97,"author":{"gitId":"pjanthony2001"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":98,"author":{"gitId":"pjanthony2001"},"content":" String message \u003d \"You inputted an unrecognizable command\";","lastModifiedDate":"2024-01-26"},{"lineNumber":99,"author":{"gitId":"pjanthony2001"},"content":" throw new InputException(message);","lastModifiedDate":"2024-01-26"},{"lineNumber":100,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":101,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":102,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":103,"author":{"gitId":"pjanthony2001"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":104,"author":{"gitId":"pjanthony2001"},"content":" * Starts the Duke application by displaying a greeting, polling for user input, and then exiting.","lastModifiedDate":"2024-01-28"},{"lineNumber":105,"author":{"gitId":"pjanthony2001"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":106,"author":{"gitId":"pjanthony2001"},"content":" public void start() {","lastModifiedDate":"2024-01-22"},{"lineNumber":107,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":108,"author":{"gitId":"pjanthony2001"},"content":" if (!startUpSuccess) {","lastModifiedDate":"2024-01-26"},{"lineNumber":109,"author":{"gitId":"pjanthony2001"},"content":" startUpFailure();","lastModifiedDate":"2024-01-26"},{"lineNumber":110,"author":{"gitId":"pjanthony2001"},"content":" return;","lastModifiedDate":"2024-01-26"},{"lineNumber":111,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":112,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":113,"author":{"gitId":"pjanthony2001"},"content":" greet();","lastModifiedDate":"2024-01-22"},{"lineNumber":114,"author":{"gitId":"pjanthony2001"},"content":" poll();","lastModifiedDate":"2024-01-22"},{"lineNumber":115,"author":{"gitId":"pjanthony2001"},"content":" exit();","lastModifiedDate":"2024-01-22"},{"lineNumber":116,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":117,"author":{"gitId":"pjanthony2001"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"pjanthony2001":117}},{"path":"src/test/java/duke/DukeTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pjanthony2001"},"content":"package duke;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"pjanthony2001"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"pjanthony2001"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"pjanthony2001"},"content":"public class DukeTest {","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"pjanthony2001"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"pjanthony2001"},"content":" public void dummyTest() {","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"pjanthony2001"},"content":" assertEquals(2, 2);","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"pjanthony2001"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"pjanthony2001"},"content":" public void anotherDummyTest() {","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"pjanthony2001"},"content":" assertEquals(4, 4);","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"pjanthony2001"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"pjanthony2001":17}},{"path":"src/test/java/duke/codec/TimeProcessorTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pjanthony2001"},"content":"package duke.codec;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"pjanthony2001"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"pjanthony2001"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"pjanthony2001"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"pjanthony2001"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"pjanthony2001"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"pjanthony2001"},"content":"public class TimeProcessorTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"pjanthony2001"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"pjanthony2001"},"content":" public void testToString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"pjanthony2001"},"content":" LocalDateTime dateTime \u003d LocalDateTime.of(2024, 1, 31, 12, 0);","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"pjanthony2001"},"content":" String formattedString \u003d TimeProcessor.toString(dateTime);","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"pjanthony2001"},"content":" assertEquals(\"31-01-2024 12:00\", formattedString);","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"pjanthony2001"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"pjanthony2001"},"content":" public void testFromString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"pjanthony2001"},"content":" String formattedString \u003d \"31-01-2024 12:00\";","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"pjanthony2001"},"content":" LocalDateTime dateTime \u003d TimeProcessor.fromString(formattedString);","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"pjanthony2001"},"content":" assertEquals(2024, dateTime.getYear());","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"pjanthony2001"},"content":" assertEquals(1, dateTime.getMonthValue());","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"pjanthony2001"},"content":" assertEquals(31, dateTime.getDayOfMonth());","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"pjanthony2001"},"content":" assertEquals(12, dateTime.getHour());","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"pjanthony2001"},"content":" assertEquals(0, dateTime.getMinute());","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"pjanthony2001"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"pjanthony2001"},"content":" public void testFromStringWithDateOnly() {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"pjanthony2001"},"content":" String formattedString \u003d \"31-01-2024\";","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"pjanthony2001"},"content":" LocalDateTime dateTime \u003d TimeProcessor.fromString(formattedString);","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"pjanthony2001"},"content":" assertEquals(2024, dateTime.getYear());","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"pjanthony2001"},"content":" assertEquals(1, dateTime.getMonthValue());","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"pjanthony2001"},"content":" assertEquals(31, dateTime.getDayOfMonth());","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"pjanthony2001"},"content":" assertEquals(0, dateTime.getHour());","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"pjanthony2001"},"content":" assertEquals(0, dateTime.getMinute());","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"pjanthony2001"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"pjanthony2001"},"content":" public void testFromStringWithInvalidFormat() {","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"pjanthony2001"},"content":" String invalidFormattedString \u003d \"2024-01-31 12:00\"; // Invalid format","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"pjanthony2001"},"content":" assertThrows(DateTimeParseException.class, () -\u003e TimeProcessor.fromString(invalidFormattedString));","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"pjanthony2001"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"pjanthony2001":47}},{"path":"src/test/java/duke/tasks/DeadlineTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pjanthony2001"},"content":"package duke.tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"pjanthony2001"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"pjanthony2001"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"pjanthony2001"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"pjanthony2001"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"pjanthony2001"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"pjanthony2001"},"content":"public class DeadlineTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"pjanthony2001"},"content":" private Deadline deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"pjanthony2001"},"content":" @BeforeEach","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"pjanthony2001"},"content":" public void setUp() {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"pjanthony2001"},"content":" LocalDateTime dateTime \u003d LocalDateTime.of(2024, 1, 31, 12, 0);","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"pjanthony2001"},"content":" deadline \u003d new Deadline(\"Finish Assignment\", dateTime, false);","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"pjanthony2001"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"pjanthony2001"},"content":" public void testConstructor() {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"pjanthony2001"},"content":" assertEquals(\"Finish Assignment\", deadline.getTaskName());","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"pjanthony2001"},"content":" assertFalse(deadline.getDone());","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"pjanthony2001"},"content":" assertEquals(\"D\", deadline.getIdentifier());","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"pjanthony2001"},"content":" LocalDateTime expectedDateTime \u003d LocalDateTime.of(2024, 1, 31, 12, 0);","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"pjanthony2001"},"content":" assertEquals(expectedDateTime, deadline.getBy());","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"pjanthony2001"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"pjanthony2001"},"content":" public void testToString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"pjanthony2001"},"content":" assertEquals(\"[D] [ ] Finish Assignment by: 31-01-2024 12:00\", deadline.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"pjanthony2001"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"pjanthony2001"},"content":" public void testEncode() {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"pjanthony2001"},"content":" String[] encoded \u003d deadline.encode();","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"pjanthony2001"},"content":" assertEquals(4, encoded.length);","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"pjanthony2001"},"content":" assertEquals(\"D\", encoded[0]);","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"pjanthony2001"},"content":" assertEquals(\"false\", encoded[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"pjanthony2001"},"content":" assertEquals(\"Finish Assignment\", encoded[2]);","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"pjanthony2001"},"content":" assertEquals(\"31-01-2024 12:00\", encoded[3]);","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"pjanthony2001"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"pjanthony2001":44}},{"path":"src/test/java/duke/tasks/EventTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pjanthony2001"},"content":"package duke.tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"pjanthony2001"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"pjanthony2001"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"pjanthony2001"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"pjanthony2001"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"pjanthony2001"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"pjanthony2001"},"content":"public class EventTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"pjanthony2001"},"content":" private Event event;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"pjanthony2001"},"content":" @BeforeEach","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"pjanthony2001"},"content":" public void setUp() {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"pjanthony2001"},"content":" LocalDateTime fromDateTime \u003d LocalDateTime.of(2024, 1, 31, 10, 0);","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"pjanthony2001"},"content":" LocalDateTime toDateTime \u003d LocalDateTime.of(2024, 1, 31, 12, 0);","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"pjanthony2001"},"content":" event \u003d new Event(\"Meeting\", fromDateTime, toDateTime, false);","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"pjanthony2001"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"pjanthony2001"},"content":" public void testConstructor() {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"pjanthony2001"},"content":" assertEquals(\"Meeting\", event.getTaskName());","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"pjanthony2001"},"content":" assertFalse(event.getDone());","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"pjanthony2001"},"content":" assertEquals(\"E\", event.getIdentifier());","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"pjanthony2001"},"content":" LocalDateTime expectedFromDateTime \u003d LocalDateTime.of(2024, 1, 31, 10, 0);","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"pjanthony2001"},"content":" LocalDateTime expectedToDateTime \u003d LocalDateTime.of(2024, 1, 31, 12, 0);","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"pjanthony2001"},"content":" assertEquals(expectedFromDateTime, event.getFrom());","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"pjanthony2001"},"content":" assertEquals(expectedToDateTime, event.getTo());","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"pjanthony2001"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"pjanthony2001"},"content":" public void testToString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"pjanthony2001"},"content":" assertEquals(\"[E] [ ] Meeting from: 31-01-2024 10:00 to: 31-01-2024 12:00\", event.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"pjanthony2001"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"pjanthony2001"},"content":" public void testEncode() {","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"pjanthony2001"},"content":" String[] encoded \u003d event.encode();","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"pjanthony2001"},"content":" assertEquals(5, encoded.length);","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"pjanthony2001"},"content":" assertEquals(\"E\", encoded[0]);","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"pjanthony2001"},"content":" assertEquals(\"false\", encoded[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"pjanthony2001"},"content":" assertEquals(\"Meeting\", encoded[2]);","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"pjanthony2001"},"content":" assertEquals(\"31-01-2024 10:00\", encoded[3]);","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"pjanthony2001"},"content":" assertEquals(\"31-01-2024 12:00\", encoded[4]);","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"pjanthony2001"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"pjanthony2001":51}},{"path":"src/test/java/duke/tasks/TaskTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pjanthony2001"},"content":"package duke.tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"pjanthony2001"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"pjanthony2001"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"pjanthony2001"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"pjanthony2001"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"pjanthony2001"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"pjanthony2001"},"content":"public class TaskTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"pjanthony2001"},"content":" private static class ConcreteTask extends Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"pjanthony2001"},"content":" ConcreteTask(String taskName, boolean done) {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"pjanthony2001"},"content":" super(taskName, done);","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"pjanthony2001"},"content":" private Task task;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"pjanthony2001"},"content":" @BeforeEach","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"pjanthony2001"},"content":" public void setUp() {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"pjanthony2001"},"content":" task \u003d new ConcreteTask(\"Test Task\", false);","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"pjanthony2001"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"pjanthony2001"},"content":" public void testConstructor() {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"pjanthony2001"},"content":" assertEquals(\"Test Task\", task.getTaskName());","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"pjanthony2001"},"content":" assertFalse(task.getDone());","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"pjanthony2001"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"pjanthony2001"},"content":" public void testMarkDone() {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"pjanthony2001"},"content":" task.markDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"pjanthony2001"},"content":" assertTrue(task.getDone());","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"pjanthony2001"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"pjanthony2001"},"content":" public void testMarkUndone() {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"pjanthony2001"},"content":" task.markDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"pjanthony2001"},"content":" task.markUndone();","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"pjanthony2001"},"content":" assertFalse(task.getDone());","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"pjanthony2001"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"pjanthony2001"},"content":" public void testToString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"pjanthony2001"},"content":" assertEquals(\"[ ] [ ] Test Task\", task.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"pjanthony2001"},"content":" task.markDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"pjanthony2001"},"content":" assertEquals(\"[ ] [X] Test Task\", task.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"pjanthony2001"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"pjanthony2001"},"content":" public void testEncode() {","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"pjanthony2001"},"content":" String[] encoded \u003d task.encode();","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"pjanthony2001"},"content":" assertEquals(3, encoded.length);","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"pjanthony2001"},"content":" assertEquals(\" \", encoded[0]);","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"pjanthony2001"},"content":" assertEquals(\"false\", encoded[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"pjanthony2001"},"content":" assertEquals(\"Test Task\", encoded[2]);","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"pjanthony2001"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"pjanthony2001":57}},{"path":"src/test/java/duke/tasks/TodoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pjanthony2001"},"content":"package duke.tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"pjanthony2001"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"pjanthony2001"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"pjanthony2001"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"pjanthony2001"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"pjanthony2001"},"content":"public class TodoTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"pjanthony2001"},"content":" private Todo todo;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"pjanthony2001"},"content":" @BeforeEach","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"pjanthony2001"},"content":" public void setUp() {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"pjanthony2001"},"content":" todo \u003d new Todo(\"Buy groceries\", false);","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"pjanthony2001"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"pjanthony2001"},"content":" public void testConstructor() {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"pjanthony2001"},"content":" assertEquals(\"Buy groceries\", todo.getTaskName());","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"pjanthony2001"},"content":" assertFalse(todo.getDone());","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"pjanthony2001"},"content":" assertEquals(\"T\", todo.getIdentifier());","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"pjanthony2001"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"pjanthony2001"},"content":" public void testToString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"pjanthony2001"},"content":" assertEquals(\"[T] [ ] Buy groceries\", todo.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"pjanthony2001"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"pjanthony2001"},"content":" public void testEncode() {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"pjanthony2001"},"content":" String[] encoded \u003d todo.encode();","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"pjanthony2001"},"content":" assertEquals(3, encoded.length);","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"pjanthony2001"},"content":" assertEquals(\"T\", encoded[0]);","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"pjanthony2001"},"content":" assertEquals(\"false\", encoded[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"pjanthony2001"},"content":" assertEquals(\"Buy groceries\", encoded[2]);","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"pjanthony2001"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"pjanthony2001"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"pjanthony2001":37}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"pjanthony2001"},"content":"Hello","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"pjanthony2001"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"pjanthony2001"},"content":"DEADLINE /by Monday","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"pjanthony2001"},"content":"deadline /from Monday","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"pjanthony2001"},"content":"deadline /BY Monday","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"pjanthony2001"},"content":"TODO homework","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"pjanthony2001"},"content":"EVENT concert /from 5pm /to 6pm","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"pjanthony2001"},"content":"event concert /by 5pm /to 6pm","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"pjanthony2001"},"content":"event concert /from 5pm /by 6pm","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"pjanthony2001"},"content":"event concert /FROM 5pm /to 6pm","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"pjanthony2001"},"content":"event concert /from 5pm /TO 6pm","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"pjanthony2001"},"content":"list ","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"pjanthony2001"},"content":"deadline /by Monday","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"pjanthony2001"},"content":"todo homework","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"pjanthony2001"},"content":"event concert /from 5pm /to 6pm","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"pjanthony2001"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"pjanthony2001"},"content":"mark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"pjanthony2001"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"pjanthony2001"},"content":"mark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"pjanthony2001"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"pjanthony2001"},"content":"unmark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"pjanthony2001"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"pjanthony2001"},"content":"delete 3","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"pjanthony2001"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"pjanthony2001"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"pjanthony2001":25}}] diff --git a/pjanthony2001_ip_master/commits.json b/pjanthony2001_ip_master/commits.json index e73d788c..51741c1d 100644 --- a/pjanthony2001_ip_master/commits.json +++ b/pjanthony2001_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"pjanthony2001":[{"date":"2024-01-20","commitResults":[{"hash":"891ce5c94c5c2e9fc96db4d7e9c66d24059d4590","isMergeCommit":false,"messageTitle":"Change the ASCII message when Duke runs to HAL9000","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":6}}}]},{"date":"2024-01-22","commitResults":[{"hash":"995517c71ce5764689f62b373d6039601f43319e","isMergeCommit":false,"messageTitle":"Created UserInterface class, to handle all the logic of the Level 0 requirements","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":0}}},{"hash":"3d374dce77bd810299c1e39f84bb8ffbccdfa55d","isMergeCommit":false,"messageTitle":"Changed .gitignore to ignore *.class files","messageBody":"Updated the UserInterface to handle Level-1 requirements\n","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":1}}},{"hash":"f8b5ffa7f43dd710052a3ab5afdb20cbb7dfbb38","isMergeCommit":false,"messageTitle":"Revert \"Changed .gitignore to ignore *.class files\"","messageBody":"This reverts commit 3d374dce77bd810299c1e39f84bb8ffbccdfa55d.\n","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":18}}},{"hash":"aac28814f36b4e4689f9edb6af6ee4004afb6bbe","isMergeCommit":false,"messageTitle":"Called UserInterface in Duke.java to start the polling","messageBody":"Finalised Level-0\n","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":0}}},{"hash":"902695f127d5b66efbfd081e105ae10e4b34773f","isMergeCommit":false,"messageTitle":"Updated UserInterface to fulfill Level-1 requirements","messageBody":"Updated .gitignore to ignore .class files\n","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":1}}},{"hash":"c5e5234ce22af764aa55e00a113eb9967f9014a2","isMergeCommit":false,"messageTitle":"Updated UserInterface to fulfill Level-2 requrements","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":11}}},{"hash":"8ebfbd1004386fc5a98ff7df65ca43f7c34f8794","isMergeCommit":false,"messageTitle":"Updated UserInterface to handle Level-3 requirements","messageBody":"Created Task class\n","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":62,"deletions":9}}},{"hash":"0521a2bc04782f42b26ae3d484276249f91e6cdc","isMergeCommit":false,"messageTitle":"Added Deadline, Event, Todo that extends Task","messageBody":"Made Task abstract\n\nCreated CommandProccessor to process commands\n\nUpdated UserInterface to handle Level-4 requirements\n","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":141,"deletions":49}}},{"hash":"4a3a51d865bc4cc23bec806b2753ffedf4aad921","isMergeCommit":false,"messageTitle":"Added InputException, ProcessingException to handle Exceptions","messageBody":"Modified CommandProcessor and UserInterface to fulfil Level-5 requirements\n","fileTypesAndContributionMap":{"java":{"insertions":106,"deletions":69}}},{"hash":"89e0a2a6e8a9b034a26f8f2d96df3f38ddb95a49","isMergeCommit":false,"messageTitle":"Remedied a redundant \"throws ProcessingException\"","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}}]},{"date":"2024-01-23","commitResults":[{"hash":"f21183676165ebb5346d34ea3aca074720fe086d","isMergeCommit":false,"messageTitle":"Changed CommandProcessor to handle delete command","messageBody":"Added ArrayList\u003c\u003e instead of Task[]\n\nAdded a new message to pop when list is empty\n\nFulfilled Level 6 requirements\n","tags":["Level-6","A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":9}}}]},{"date":"2024-01-24","commitResults":[{"hash":"b615041174df92c43189d40040f967677add34b9","isMergeCommit":false,"messageTitle":"Edited EXPECTED.txt and input.txt for testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":25,"deletions":0}}}]},{"date":"2024-01-26","commitResults":[{"hash":"e9d01d20ab742692a435721e819b74c63818ed19","isMergeCommit":false,"messageTitle":"Added Storage encapsulating TempStorage and LocalStorage to handle storage on the txt file and in the ArrayList\u003cTask\u003e Added Codec to decode and encode from Task to String and vice versa Added encode method to Tasks that encode tasks to strings for storage Added identifier field to tasks for encoding/decoding and a new constructor that takes in a boolean \"done\" as well Added StartUpException to handle issues when the program loads up Updated ProcessingException to handle causes as well","messageBody":"Level 7 requirements fulfilled\n","fileTypesAndContributionMap":{"java":{"insertions":430,"deletions":63}}},{"hash":"965eb2e6d33eafcb3ae4bfe692b3b43ebc756f56","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-7\u0027","messageBody":"* branch-level-7:\n Added Storage encapsulating TempStorage and LocalStorage to handle storage on the txt file and in the ArrayList\u003cTask\u003e Added Codec to decode and encode from Task to String and vice versa Added encode method to Tasks that encode tasks to strings for storage Added identifier field to tasks for encoding/decoding and a new constructor that takes in a boolean \"done\" as well Added StartUpException to handle issues when the program loads up Updated ProcessingException to handle causes as well\n","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"322c451486a682ba03058888d1279f6f11de6a82","isMergeCommit":false,"messageTitle":"Added TimeProcessor class to handle processing and parsing of time Updated Deadline and Event with the LocalDateTime fields as required Updated InputException to be constructed with a throwable cause as well Fixed catch-all exception handling","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":78,"deletions":28}}},{"hash":"ffe251649420a34f87e3743220107ca4246551ae","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-8\u0027","messageBody":"* branch-level-8:\n Added TimeProcessor class to handle processing and parsing of time Updated Deadline and Event with the LocalDateTime fields as required Updated InputException to be constructed with a throwable cause as well Fixed catch-all exception handling\n","fileTypesAndContributionMap":{}},{"hash":"4ce0fa961f9a62ad99da01a42fedfa2bfd562528","isMergeCommit":false,"messageTitle":"Added Enums in the form of Command Updated UserInterface, CommandProcessor to use Command Updated Event to fix bug when decoding from .txt file Updated Codec to remove redundant lines and utilise ProcessingExceptions constructor with case Added new method exceptionCommandProcessing to make the code neater","messageBody":"Level 8 requirements fulfilled\n","tags":["Level-8","A-MoreOOP","A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":114,"deletions":73}}},{"hash":"83e1aad2f42883e7ab51bba550a4b8d8d2216279","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-01-28","commitResults":[{"hash":"8550cc003a8cf23fc54d75053f5c4263606ab22b","isMergeCommit":false,"messageTitle":"Added Packaging into ui, command, tasks, exceptions, codec, storage","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":78,"deletions":18}}},{"hash":"09a8e01a5625dc62ea95f034ab457fc8c368570f","isMergeCommit":false,"messageTitle":"Added Gradle functionality Added JavaDoc to all files Made changes to adhere to CheckStyle Made changes to access modifiers","messageBody":"","tags":["A-JavaDoc","A-CodingStandard"],"fileTypesAndContributionMap":{"gradle":{"insertions":9,"deletions":2},"txt":{"insertions":0,"deletions":3},"java":{"insertions":465,"deletions":222}}},{"hash":"151f58ad03f3b74b9fdc0c2a3a56f9249b854465","isMergeCommit":false,"messageTitle":"Add Level-9 requirements","messageBody":"Added Search class add search functionality\n\nUpdated CommandProcessor, Storage, TempStorage to reflect changes\n\nUpdated Task and subclasses to have a getter for the taskName\n","fileTypesAndContributionMap":{"java":{"insertions":96,"deletions":6}}},{"hash":"263bdcd369c12e4fc2e829faae4ecfa0f91df368","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-9\u0027","messageBody":"* branch-level-9:\n Add Level-9 requirements\n","tags":["Level-9"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"pjanthony2001":{"java":1131,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":8,"txt":25}},"authorContributionVariance":{"pjanthony2001":120593.25},"authorDisplayNameMap":{"pjanthony2001":"CS2103T-W12-4 P J ..HONY"}} +{"authorDailyContributionsMap":{"pjanthony2001":[{"date":"2024-01-20","commitResults":[{"hash":"891ce5c94c5c2e9fc96db4d7e9c66d24059d4590","isMergeCommit":false,"messageTitle":"Change the ASCII message when Duke runs to HAL9000","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":6}}}]},{"date":"2024-01-22","commitResults":[{"hash":"995517c71ce5764689f62b373d6039601f43319e","isMergeCommit":false,"messageTitle":"Created UserInterface class, to handle all the logic of the Level 0 requirements","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":0}}},{"hash":"3d374dce77bd810299c1e39f84bb8ffbccdfa55d","isMergeCommit":false,"messageTitle":"Changed .gitignore to ignore *.class files","messageBody":"Updated the UserInterface to handle Level-1 requirements\n","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":1}}},{"hash":"f8b5ffa7f43dd710052a3ab5afdb20cbb7dfbb38","isMergeCommit":false,"messageTitle":"Revert \"Changed .gitignore to ignore *.class files\"","messageBody":"This reverts commit 3d374dce77bd810299c1e39f84bb8ffbccdfa55d.\n","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":18}}},{"hash":"aac28814f36b4e4689f9edb6af6ee4004afb6bbe","isMergeCommit":false,"messageTitle":"Called UserInterface in Duke.java to start the polling","messageBody":"Finalised Level-0\n","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":0}}},{"hash":"902695f127d5b66efbfd081e105ae10e4b34773f","isMergeCommit":false,"messageTitle":"Updated UserInterface to fulfill Level-1 requirements","messageBody":"Updated .gitignore to ignore .class files\n","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":1}}},{"hash":"c5e5234ce22af764aa55e00a113eb9967f9014a2","isMergeCommit":false,"messageTitle":"Updated UserInterface to fulfill Level-2 requrements","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":11}}},{"hash":"8ebfbd1004386fc5a98ff7df65ca43f7c34f8794","isMergeCommit":false,"messageTitle":"Updated UserInterface to handle Level-3 requirements","messageBody":"Created Task class\n","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":62,"deletions":9}}},{"hash":"0521a2bc04782f42b26ae3d484276249f91e6cdc","isMergeCommit":false,"messageTitle":"Added Deadline, Event, Todo that extends Task","messageBody":"Made Task abstract\n\nCreated CommandProccessor to process commands\n\nUpdated UserInterface to handle Level-4 requirements\n","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":141,"deletions":49}}},{"hash":"4a3a51d865bc4cc23bec806b2753ffedf4aad921","isMergeCommit":false,"messageTitle":"Added InputException, ProcessingException to handle Exceptions","messageBody":"Modified CommandProcessor and UserInterface to fulfil Level-5 requirements\n","fileTypesAndContributionMap":{"java":{"insertions":106,"deletions":69}}},{"hash":"89e0a2a6e8a9b034a26f8f2d96df3f38ddb95a49","isMergeCommit":false,"messageTitle":"Remedied a redundant \"throws ProcessingException\"","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}}]},{"date":"2024-01-23","commitResults":[{"hash":"f21183676165ebb5346d34ea3aca074720fe086d","isMergeCommit":false,"messageTitle":"Changed CommandProcessor to handle delete command","messageBody":"Added ArrayList\u003c\u003e instead of Task[]\n\nAdded a new message to pop when list is empty\n\nFulfilled Level 6 requirements\n","tags":["Level-6","A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":9}}}]},{"date":"2024-01-24","commitResults":[{"hash":"b615041174df92c43189d40040f967677add34b9","isMergeCommit":false,"messageTitle":"Edited EXPECTED.txt and input.txt for testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":25,"deletions":0}}}]},{"date":"2024-01-26","commitResults":[{"hash":"e9d01d20ab742692a435721e819b74c63818ed19","isMergeCommit":false,"messageTitle":"Added Storage encapsulating TempStorage and LocalStorage to handle storage on the txt file and in the ArrayList\u003cTask\u003e Added Codec to decode and encode from Task to String and vice versa Added encode method to Tasks that encode tasks to strings for storage Added identifier field to tasks for encoding/decoding and a new constructor that takes in a boolean \"done\" as well Added StartUpException to handle issues when the program loads up Updated ProcessingException to handle causes as well","messageBody":"Level 7 requirements fulfilled\n","fileTypesAndContributionMap":{"java":{"insertions":430,"deletions":63}}},{"hash":"965eb2e6d33eafcb3ae4bfe692b3b43ebc756f56","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-7\u0027","messageBody":"* branch-level-7:\n Added Storage encapsulating TempStorage and LocalStorage to handle storage on the txt file and in the ArrayList\u003cTask\u003e Added Codec to decode and encode from Task to String and vice versa Added encode method to Tasks that encode tasks to strings for storage Added identifier field to tasks for encoding/decoding and a new constructor that takes in a boolean \"done\" as well Added StartUpException to handle issues when the program loads up Updated ProcessingException to handle causes as well\n","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"322c451486a682ba03058888d1279f6f11de6a82","isMergeCommit":false,"messageTitle":"Added TimeProcessor class to handle processing and parsing of time Updated Deadline and Event with the LocalDateTime fields as required Updated InputException to be constructed with a throwable cause as well Fixed catch-all exception handling","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":78,"deletions":28}}},{"hash":"ffe251649420a34f87e3743220107ca4246551ae","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-8\u0027","messageBody":"* branch-level-8:\n Added TimeProcessor class to handle processing and parsing of time Updated Deadline and Event with the LocalDateTime fields as required Updated InputException to be constructed with a throwable cause as well Fixed catch-all exception handling\n","fileTypesAndContributionMap":{}},{"hash":"4ce0fa961f9a62ad99da01a42fedfa2bfd562528","isMergeCommit":false,"messageTitle":"Added Enums in the form of Command Updated UserInterface, CommandProcessor to use Command Updated Event to fix bug when decoding from .txt file Updated Codec to remove redundant lines and utilise ProcessingExceptions constructor with case Added new method exceptionCommandProcessing to make the code neater","messageBody":"Level 8 requirements fulfilled\n","tags":["Level-8","A-MoreOOP","A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":114,"deletions":73}}},{"hash":"83e1aad2f42883e7ab51bba550a4b8d8d2216279","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-01-28","commitResults":[{"hash":"8550cc003a8cf23fc54d75053f5c4263606ab22b","isMergeCommit":false,"messageTitle":"Added Packaging into ui, command, tasks, exceptions, codec, storage","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":78,"deletions":18}}},{"hash":"09a8e01a5625dc62ea95f034ab457fc8c368570f","isMergeCommit":false,"messageTitle":"Added Gradle functionality Added JavaDoc to all files Made changes to adhere to CheckStyle Made changes to access modifiers","messageBody":"","tags":["A-JavaDoc","A-Gradle","A-CodingStandard"],"fileTypesAndContributionMap":{"gradle":{"insertions":9,"deletions":2},"txt":{"insertions":0,"deletions":3},"java":{"insertions":465,"deletions":222}}},{"hash":"151f58ad03f3b74b9fdc0c2a3a56f9249b854465","isMergeCommit":false,"messageTitle":"Add Level-9 requirements","messageBody":"Added Search class add search functionality\n\nUpdated CommandProcessor, Storage, TempStorage to reflect changes\n\nUpdated Task and subclasses to have a getter for the taskName\n","fileTypesAndContributionMap":{"java":{"insertions":96,"deletions":6}}},{"hash":"263bdcd369c12e4fc2e829faae4ecfa0f91df368","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-9\u0027","messageBody":"* branch-level-9:\n Add Level-9 requirements\n","tags":["Level-9"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-30","commitResults":[{"hash":"aaadee7c4b6f71aec079b35d48e6c72e2bbbe015","isMergeCommit":false,"messageTitle":"Add Unit Testing","messageBody":"Added Unit Testing with JUnit for the following classes:\n* TimeProcessor\n* Task\n* Deadline\n* Event\n* Todo\n\nTested JAR file capability with ShadowJar and it works fine\n","tags":["A-Jar","A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":251,"deletions":2}}}]}]},"authorFileTypeContributionMap":{"pjanthony2001":{"java":1380,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":8,"txt":25}},"authorContributionVariance":{"pjanthony2001":104751.555},"authorDisplayNameMap":{"pjanthony2001":"CS2103T-W12-4 P J ..HONY"}} diff --git a/reetmitra_ip_master/authorship.json b/reetmitra_ip_master/authorship.json index fedcd0ec..f4c0fb12 100644 --- a/reetmitra_ip_master/authorship.json +++ b/reetmitra_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"reetmitra"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"reetmitra"},"content":" protected String by;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"reetmitra"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"reetmitra"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"reetmitra"},"content":" super(description);","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"reetmitra"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"reetmitra"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"reetmitra"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"reetmitra"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"reetmitra"},"content":" public String toString() {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"reetmitra"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"reetmitra"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"reetmitra"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"reetmitra":13}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"reetmitra"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"reetmitra"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":4,"author":{"gitId":"reetmitra"},"content":" private static final int MAX_NO_OF_TASKS \u003d 100;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"reetmitra"},"content":" private static Task[] tasks \u003d new Task[MAX_NO_OF_TASKS];","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"reetmitra"},"content":" private static int taskCount \u003d 0;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"reetmitra"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":9,"author":{"gitId":"reetmitra"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"reetmitra"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"reetmitra"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"reetmitra"},"content":" System.out.println(\"Hello! I\u0027m EchoPilot.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"reetmitra"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"reetmitra"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"reetmitra"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"reetmitra"},"content":" while (true) {","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"reetmitra"},"content":" String userInput \u003d scanner.nextLine().trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"reetmitra"},"content":" String[] parts \u003d userInput.split(\" \", 2);","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"reetmitra"},"content":" String command \u003d parts[0];","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"reetmitra"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"reetmitra"},"content":" if (command.equalsIgnoreCase(\"bye\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"reetmitra"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"reetmitra"},"content":" } else if (command.equalsIgnoreCase(\"list\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"reetmitra"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"reetmitra"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"reetmitra"},"content":" for (int i \u003d 0; i \u003c taskCount; i++) {","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"reetmitra"},"content":" System.out.println((i + 1) + \".\" + tasks[i]);","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"reetmitra"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"reetmitra"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"reetmitra"},"content":" } else if (command.equalsIgnoreCase(\"mark\") || command.equalsIgnoreCase(\"unmark\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"reetmitra"},"content":" markAsDone(command, parts[1]);","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"reetmitra"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"reetmitra"},"content":" createNewTask(parts);","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"reetmitra"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"reetmitra"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"reetmitra"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"reetmitra"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"reetmitra"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"reetmitra"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"reetmitra"},"content":" scanner.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":42,"author":{"gitId":"reetmitra"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"reetmitra"},"content":" private static void markAsDone(String command, String taskNumberStr) {","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"reetmitra"},"content":" int taskNumber \u003d Integer.parseInt(taskNumberStr) - 1;","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"reetmitra"},"content":" if (taskNumber \u003e\u003d 0 \u0026\u0026 taskNumber \u003c taskCount) {","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"reetmitra"},"content":" if (command.equalsIgnoreCase(\"mark\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"reetmitra"},"content":" tasks[taskNumber].markAsDone();","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"reetmitra"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"reetmitra"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\\n \" + tasks[taskNumber]);","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"reetmitra"},"content":" } else if (command.equalsIgnoreCase(\"unmark\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"reetmitra"},"content":" tasks[taskNumber].unmarkAsDone();","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"reetmitra"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"reetmitra"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\\n \" + tasks[taskNumber]);","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"reetmitra"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"reetmitra"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"reetmitra"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"reetmitra"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"reetmitra"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"reetmitra"},"content":" private static void createNewTask(String[] parts) {","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"reetmitra"},"content":" Task newTask \u003d null;","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"reetmitra"},"content":" switch (parts[0].toLowerCase()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"reetmitra"},"content":" case \"todo\":","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"reetmitra"},"content":" newTask \u003d new Todo(parts[1]);","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"reetmitra"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"reetmitra"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"reetmitra"},"content":" String[] deadlineParts \u003d parts[1].split(\" /by \", 2);","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"reetmitra"},"content":" newTask \u003d new Deadline(deadlineParts[0], deadlineParts[1]);","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"reetmitra"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"reetmitra"},"content":" case \"event\":","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"reetmitra"},"content":" String[] eventParts \u003d parts[1].split(\" /from \", 2);","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"reetmitra"},"content":" String[] timeParts \u003d eventParts[1].split(\" /to \", 2);","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"reetmitra"},"content":" newTask \u003d new Event(eventParts[0], timeParts[0], timeParts[1]);","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"reetmitra"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"reetmitra"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"reetmitra"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"reetmitra"},"content":" if (newTask !\u003d null) {","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"reetmitra"},"content":" tasks[taskCount++] \u003d newTask;","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"reetmitra"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"reetmitra"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n \" + newTask);","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"reetmitra"},"content":" System.out.println(\"Now you have \" + taskCount + \" tasks in the list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"reetmitra"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"reetmitra"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"reetmitra":79,"-":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"reetmitra"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"reetmitra"},"content":" protected String from;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"reetmitra"},"content":" protected String to;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"reetmitra"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"reetmitra"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"reetmitra"},"content":" super(description);","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"reetmitra"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"reetmitra"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"reetmitra"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"reetmitra"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"reetmitra"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"reetmitra"},"content":" public String toString() {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"reetmitra"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from + \" to: \" + to + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"reetmitra"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"reetmitra"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"reetmitra":15}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"reetmitra"},"content":"public class Task {","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"reetmitra"},"content":" protected String description;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"reetmitra"},"content":" protected boolean isComplete;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"reetmitra"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"reetmitra"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"reetmitra"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"reetmitra"},"content":" this.isComplete \u003d false;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"reetmitra"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"reetmitra"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"reetmitra"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"reetmitra"},"content":" isComplete \u003d true;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"reetmitra"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"reetmitra"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"reetmitra"},"content":" public void unmarkAsDone() {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"reetmitra"},"content":" isComplete \u003d false;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"reetmitra"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"reetmitra"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"reetmitra"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"reetmitra"},"content":" return (isComplete ? \"X\" : \" \");","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"reetmitra"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"reetmitra"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"reetmitra"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"reetmitra"},"content":" public String toString() {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"reetmitra"},"content":" return \"[\" + getStatusIcon() + \"] \" + description;","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"reetmitra"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"reetmitra"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"reetmitra":26}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"reetmitra"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"reetmitra"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"reetmitra"},"content":" super(description);","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"reetmitra"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"reetmitra"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"reetmitra"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"reetmitra"},"content":" public String toString() {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"reetmitra"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"reetmitra"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"reetmitra"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"reetmitra":10}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"reetmitra"},"content":"todo read a book","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"reetmitra"},"content":"deadline return library books /by Friday","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"reetmitra"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"reetmitra"},"content":"list","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"reetmitra"},"content":"mark 1","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"reetmitra"},"content":"list","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"reetmitra"},"content":"unmark 1","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"reetmitra"},"content":"list","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"reetmitra"},"content":"bye","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"reetmitra":9}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"java -classpath ../bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"reetmitra"},"content":"diff ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"reetmitra":1,"-":33}}] +[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"reetmitra"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"reetmitra"},"content":" protected String by;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"reetmitra"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"reetmitra"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"reetmitra"},"content":" super(description);","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"reetmitra"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"reetmitra"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"reetmitra"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"reetmitra"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"reetmitra"},"content":" public String toString() {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"reetmitra"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"reetmitra"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"reetmitra"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"reetmitra":13}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"reetmitra"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"reetmitra"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"reetmitra"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":5,"author":{"gitId":"reetmitra"},"content":" private static ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"reetmitra"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":8,"author":{"gitId":"reetmitra"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"reetmitra"},"content":" printWelcomeMessage();","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"reetmitra"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"reetmitra"},"content":" while (true) {","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"reetmitra"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"reetmitra"},"content":" String userInput \u003d scanner.nextLine().trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"reetmitra"},"content":" if (userInput.equalsIgnoreCase(\"bye\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"reetmitra"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"reetmitra"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"reetmitra"},"content":" handleInput(userInput);","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"reetmitra"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"reetmitra"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"reetmitra"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"reetmitra"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"reetmitra"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"reetmitra"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"reetmitra"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"reetmitra"},"content":" printGoodbyeMessage();","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"reetmitra"},"content":" scanner.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":28,"author":{"gitId":"reetmitra"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"reetmitra"},"content":" private static void handleInput(String userInput) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"reetmitra"},"content":" String[] parts \u003d userInput.split(\" \", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"reetmitra"},"content":" String command \u003d parts[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"reetmitra"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"reetmitra"},"content":" switch (command.toLowerCase()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"reetmitra"},"content":" case \"list\":","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"reetmitra"},"content":" printTaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"reetmitra"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"reetmitra"},"content":" case \"delete\":","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"reetmitra"},"content":" deleteTask(parts[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"reetmitra"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"reetmitra"},"content":" case \"mark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"reetmitra"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"reetmitra"},"content":" markOrUnmarkTask(command, parts[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"reetmitra"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"reetmitra"},"content":" case \"todo\":","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"reetmitra"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"reetmitra"},"content":" case \"event\":","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"reetmitra"},"content":" createNewTask(parts);","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"reetmitra"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"reetmitra"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"reetmitra"},"content":" throw new DukeException(\"Whoops! I didn\u0027t catch that. Could you try a different command?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"reetmitra"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"reetmitra"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"reetmitra"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"reetmitra"},"content":" private static void markOrUnmarkTask(String command, String taskNumberStr) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"reetmitra"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"reetmitra"},"content":" int taskNumber \u003d Integer.parseInt(taskNumberStr) - 1;","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"reetmitra"},"content":" if (taskNumber \u003c 0 || taskNumber \u003e\u003d tasks.size()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"reetmitra"},"content":" throw new DukeException(\"Oopsie! I can\u0027t seem to find that task. Could it be a magical invisible task?.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"reetmitra"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"reetmitra"},"content":" Task task \u003d tasks.get(taskNumber);","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"reetmitra"},"content":" if (command.equalsIgnoreCase(\"mark\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"reetmitra"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"reetmitra"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"reetmitra"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\\n \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"reetmitra"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"reetmitra"},"content":" task.unmarkAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"reetmitra"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"reetmitra"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\\n \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"reetmitra"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"reetmitra"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"reetmitra"},"content":" throw new DukeException(\"Whoops! Looks like that\u0027s not a valid number for a task. Numbers only, please!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"reetmitra"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"reetmitra"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"reetmitra"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"reetmitra"},"content":" private static void createNewTask(String[] parts) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"reetmitra"},"content":" if (parts.length \u003c 2 || parts[1].isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"reetmitra"},"content":" throw new DukeException(\"Looks like you missed the description! \" + parts[0] + \" cannot be empty.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"reetmitra"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"reetmitra"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"reetmitra"},"content":" Task newTask \u003d null;","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"reetmitra"},"content":" switch (parts[0].toLowerCase()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"reetmitra"},"content":" case \"todo\":","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"reetmitra"},"content":" newTask \u003d new Todo(parts[1]);","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"reetmitra"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"reetmitra"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"reetmitra"},"content":" String[] deadlineParts \u003d parts[1].split(\" /by \", 2);","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"reetmitra"},"content":" newTask \u003d new Deadline(deadlineParts[0], deadlineParts[1]);","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"reetmitra"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"reetmitra"},"content":" case \"event\":","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"reetmitra"},"content":" String[] eventParts \u003d parts[1].split(\" /from \", 2);","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"reetmitra"},"content":" String[] timeParts \u003d eventParts[1].split(\" /to \", 2);","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"reetmitra"},"content":" newTask \u003d new Event(eventParts[0], timeParts[0], timeParts[1]);","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"reetmitra"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"reetmitra"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"reetmitra"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"reetmitra"},"content":" if (newTask !\u003d null) {","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"reetmitra"},"content":" tasks.add(newTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"reetmitra"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"reetmitra"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n \" + newTask);","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"reetmitra"},"content":" System.out.println(\"Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"reetmitra"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"reetmitra"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"reetmitra"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"reetmitra"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"reetmitra"},"content":" private static void deleteTask(String taskNumberStr) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"reetmitra"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"reetmitra"},"content":" int taskNumber \u003d Integer.parseInt(taskNumberStr) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"reetmitra"},"content":" if (taskNumber \u003c 0 || taskNumber \u003e\u003d tasks.size()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"reetmitra"},"content":" throw new DukeException(\"Uh-oh, can\u0027t find that task. Are you sure it\u0027s the right number?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"reetmitra"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"reetmitra"},"content":" Task removedTask \u003d tasks.remove(taskNumber);","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"reetmitra"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"reetmitra"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\\n \" + removedTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"reetmitra"},"content":" System.out.println(\"Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"reetmitra"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"reetmitra"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"reetmitra"},"content":" throw new DukeException(\"Whoops! Looks like that\u0027s not a valid number for a task. Numbers only, please!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"reetmitra"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":119,"author":{"gitId":"reetmitra"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":120,"author":{"gitId":"reetmitra"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"reetmitra"},"content":" private static void printTaskList() {","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"reetmitra"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-30"},{"lineNumber":123,"author":{"gitId":"reetmitra"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":124,"author":{"gitId":"reetmitra"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"reetmitra"},"content":" System.out.println((i + 1) + \".\" + tasks.get(i));","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":127,"author":{"gitId":"reetmitra"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-30"},{"lineNumber":128,"author":{"gitId":"reetmitra"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"reetmitra"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"reetmitra"},"content":" private static void printWelcomeMessage() {","lastModifiedDate":"2024-01-30"},{"lineNumber":131,"author":{"gitId":"reetmitra"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"reetmitra"},"content":" System.out.println(\"Hello! I\u0027m EchoPilot.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":133,"author":{"gitId":"reetmitra"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":134,"author":{"gitId":"reetmitra"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-30"},{"lineNumber":135,"author":{"gitId":"reetmitra"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":136,"author":{"gitId":"reetmitra"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"reetmitra"},"content":" private static void printGoodbyeMessage() {","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"reetmitra"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":139,"author":{"gitId":"reetmitra"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":141,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"reetmitra"},"content":"","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"reetmitra":136,"-":6}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"reetmitra"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"reetmitra"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"reetmitra"},"content":" super(message);","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"reetmitra"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"reetmitra"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"reetmitra":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"reetmitra"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"reetmitra"},"content":" protected String from;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"reetmitra"},"content":" protected String to;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"reetmitra"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"reetmitra"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"reetmitra"},"content":" super(description);","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"reetmitra"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"reetmitra"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"reetmitra"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"reetmitra"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"reetmitra"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"reetmitra"},"content":" public String toString() {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"reetmitra"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from + \" to: \" + to + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"reetmitra"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"reetmitra"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"reetmitra":15}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"reetmitra"},"content":"public class Task {","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"reetmitra"},"content":" protected String description;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"reetmitra"},"content":" protected boolean isComplete;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"reetmitra"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"reetmitra"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"reetmitra"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"reetmitra"},"content":" this.isComplete \u003d false;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"reetmitra"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"reetmitra"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"reetmitra"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"reetmitra"},"content":" isComplete \u003d true;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"reetmitra"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"reetmitra"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"reetmitra"},"content":" public void unmarkAsDone() {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"reetmitra"},"content":" isComplete \u003d false;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"reetmitra"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"reetmitra"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"reetmitra"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"reetmitra"},"content":" return (isComplete ? \"X\" : \" \");","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"reetmitra"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"reetmitra"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"reetmitra"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"reetmitra"},"content":" public String toString() {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"reetmitra"},"content":" return \"[\" + getStatusIcon() + \"] \" + description;","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"reetmitra"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"reetmitra"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"reetmitra":26}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"reetmitra"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"reetmitra"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"reetmitra"},"content":" super(description);","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"reetmitra"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"reetmitra"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"reetmitra"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"reetmitra"},"content":" public String toString() {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"reetmitra"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"reetmitra"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"reetmitra"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"reetmitra":10}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"reetmitra"},"content":"todo read a book","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"reetmitra"},"content":"deadline return library books /by Friday","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"reetmitra"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"reetmitra"},"content":"list","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"reetmitra"},"content":"mark 1","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"reetmitra"},"content":"list","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"reetmitra"},"content":"unmark 1","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"reetmitra"},"content":"list","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"reetmitra"},"content":"bye","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"reetmitra":9}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"java -classpath ../bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"reetmitra"},"content":"diff ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"reetmitra":1,"-":33}}] diff --git a/reetmitra_ip_master/commits.json b/reetmitra_ip_master/commits.json index 3c9d1590..b7ab984f 100644 --- a/reetmitra_ip_master/commits.json +++ b/reetmitra_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"reetmitra":[{"date":"2024-01-28","commitResults":[{"hash":"564da4ebe24dce2b6ea4953efe18d069bc373b82","isMergeCommit":false,"messageTitle":"Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":6}}},{"hash":"07dd8439a936e32e3531956d5956f0fdc7d66e1e","isMergeCommit":false,"messageTitle":"Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":0}}},{"hash":"8d24cfe6287c305ea81146a7b87b60c436b943d6","isMergeCommit":false,"messageTitle":"Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":4}}}]},{"date":"2024-01-29","commitResults":[{"hash":"1da0dc261a46c9bea5c4fc4258d37154ff0b2cbf","isMergeCommit":false,"messageTitle":"Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":55,"deletions":22}}},{"hash":"2b70cec1152f17715266dc1269b834cee7932863","isMergeCommit":false,"messageTitle":"ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":85,"deletions":20}}},{"hash":"58b174737a2b886959e9afe4cb9d2a6a34366b85","isMergeCommit":false,"messageTitle":"Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"sh":{"insertions":1,"deletions":5}}}]}]},"authorFileTypeContributionMap":{"reetmitra":{"java":143,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":0,"txt":9}},"authorContributionVariance":{"reetmitra":3309.5042},"authorDisplayNameMap":{"reetmitra":"CS2103T-T11-2 MITR..REET"}} +{"authorDailyContributionsMap":{"reetmitra":[{"date":"2024-01-28","commitResults":[{"hash":"564da4ebe24dce2b6ea4953efe18d069bc373b82","isMergeCommit":false,"messageTitle":"Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":6}}},{"hash":"07dd8439a936e32e3531956d5956f0fdc7d66e1e","isMergeCommit":false,"messageTitle":"Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":0}}},{"hash":"8d24cfe6287c305ea81146a7b87b60c436b943d6","isMergeCommit":false,"messageTitle":"Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":4}}}]},{"date":"2024-01-29","commitResults":[{"hash":"1da0dc261a46c9bea5c4fc4258d37154ff0b2cbf","isMergeCommit":false,"messageTitle":"Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":55,"deletions":22}}},{"hash":"2b70cec1152f17715266dc1269b834cee7932863","isMergeCommit":false,"messageTitle":"ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":85,"deletions":20}}},{"hash":"58b174737a2b886959e9afe4cb9d2a6a34366b85","isMergeCommit":false,"messageTitle":"Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"sh":{"insertions":1,"deletions":5}}}]},{"date":"2024-01-30","commitResults":[{"hash":"5c6af8ead1c8574ca73fca92be34440492acdd60","isMergeCommit":false,"messageTitle":"Handle Errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":73,"deletions":28}}},{"hash":"896eecfe8d8645ed2a42c512aba70a47f35e6960","isMergeCommit":false,"messageTitle":"Delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":13}}}]}]},"authorFileTypeContributionMap":{"reetmitra":{"java":205,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":0,"txt":9}},"authorContributionVariance":{"reetmitra":4163.9165},"authorDisplayNameMap":{"reetmitra":"CS2103T-T11-2 MITR..REET"}} diff --git a/reposense-logs/reposense.log.0 b/reposense-logs/reposense.log.0 index 0a0026df..20ed4446 100644 --- a/reposense-logs/reposense.log.0 +++ b/reposense-logs/reposense.log.0 @@ -1,26 +1,26 @@ -Jan 30, 2024 2:09:21 AM reposense.system.LogsManager addFileHandler +Jan 30, 2024 6:31:55 AM reposense.system.LogsManager addFileHandler INFO: Log temp folder has been successfully created -Jan 30, 2024 2:09:21 AM reposense.parser.CsvParser validateHeader +Jan 30, 2024 6:31:55 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 -Jan 30, 2024 2:09:22 AM reposense.parser.CsvParser validateHeader +Jan 30, 2024 6:31:56 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 -Jan 30, 2024 2:09:22 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Jan 30, 2024 6:31:56 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias amanzainal found. The alias will belong to the last author - amanzainal -Jan 30, 2024 2:09:22 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Jan 30, 2024 6:31:56 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias alphajae11 found. The alias will belong to the last author - alphajae11 -Jan 30, 2024 2:09:22 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Jan 30, 2024 6:31:56 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jayne1010 found. The alias will belong to the last author - Jayne1010 -Jan 30, 2024 2:09:22 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Jan 30, 2024 6:31:56 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias miffi found. The alias will belong to the last author - miffi -Jan 30, 2024 2:09:22 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Jan 30, 2024 6:31:56 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias amanzainal found. The alias will belong to the last author - amanzainal -Jan 30, 2024 2:09:22 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Jan 30, 2024 6:31:56 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias alphajae11 found. The alias will belong to the last author - alphajae11 -Jan 30, 2024 2:09:22 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Jan 30, 2024 6:31:56 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jayne1010 found. The alias will belong to the last author - Jayne1010 -Jan 30, 2024 2:09:22 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Jan 30, 2024 6:31:56 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias miffi found. The alias will belong to the last author - miffi -Jan 30, 2024 2:09:22 AM reposense.git.GitConfig getGlobalGitLfsConfig +Jan 30, 2024 6:31:56 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 @@ -36,23 +36,23 @@ fatal: unable to read config file '/home/runner/.gitconfig': No such file or dir at reposense.system.CommandRunner.runCommand(CommandRunner.java:21) ... 3 more -Jan 30, 2024 2:09:22 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:31:56 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/fy17ohhh/ip.git... -Jan 30, 2024 2:09:22 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:31:56 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/chuahjiajie/ip.git... -Jan 30, 2024 2:09:22 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:31:56 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Austintjh19/ip.git... -Jan 30, 2024 2:09:22 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:31:56 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/eliotlee68/ip.git... -Jan 30, 2024 2:09:22 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:31:56 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/chuahjiajie/ip.git to complete... -Jan 30, 2024 2:09:22 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/eliotlee68/ip.git to complete... -Jan 30, 2024 2:09:22 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:31:56 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/fy17ohhh/ip.git to complete... -Jan 30, 2024 2:09:22 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:31:56 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/eliotlee68/ip.git to complete... +Jan 30, 2024 6:31:56 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Austintjh19/ip.git to complete... -Jan 30, 2024 2:09:22 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:31:56 AM reposense.report.RepoCloner waitForCloneProcess WARNING: Exception met while trying to clone the repo "chuahjiajie/ip[master]", will skip this repo. reposense.system.CommandRunnerProcessException: Error returned from command git clone --bare 'https://github.com/chuahjiajie/ip.git' 'repos/chuahjiajie_ip/ip_bare' on path . : Cloning into bare repository 'repos/chuahjiajie_ip/ip_bare'... @@ -68,307 +68,443 @@ fatal: could not read Username for 'https://github.com': No such device or addre at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:829) -Jan 30, 2024 2:09:22 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:31:56 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/linnn-7/ip.git... -Jan 30, 2024 2:09:22 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:31:56 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/linnn-7/ip.git to complete... -Jan 30, 2024 2:09:22 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/fy17ohhh/ip.git completed! -Jan 30, 2024 2:09:22 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:31:57 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/eliotlee68/ip.git completed! +Jan 30, 2024 6:31:57 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/dedsecrattle/ip.git... -Jan 30, 2024 2:09:22 AM reposense.report.ReportGenerator analyzeRepos -INFO: [1/428] Analyzing https://github.com/fy17ohhh/ip.git (master)... -Jan 30, 2024 2:09:22 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:31:57 AM reposense.report.ReportGenerator analyzeRepos +INFO: [1/428] Analyzing https://github.com/eliotlee68/ip.git (master)... +Jan 30, 2024 6:31:57 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/dedsecrattle/ip.git to complete... -Jan 30, 2024 2:09:22 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/eliotlee68/ip.git completed! -Jan 30, 2024 2:09:22 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Austintjh19/ip.git completed! -Jan 30, 2024 2:09:22 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:31:57 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/eliotlee68/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:31:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/eliotlee68/ip.git (master)... +Jan 30, 2024 6:31:57 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/fy17ohhh/ip.git completed! +Jan 30, 2024 6:31:57 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/gavingoh99/ip.git... -Jan 30, 2024 2:09:22 AM reposense.report.ReportGenerator analyzeRepos -INFO: [2/428] Analyzing https://github.com/eliotlee68/ip.git (master)... -Jan 30, 2024 2:09:23 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:31:57 AM reposense.report.ReportGenerator analyzeRepos +INFO: [2/428] Analyzing https://github.com/fy17ohhh/ip.git (master)... +Jan 30, 2024 6:31:57 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/gavingoh99/ip.git to complete... -Jan 30, 2024 2:09:23 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:31:57 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/fy17ohhh/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:31:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/fy17ohhh/ip.git (master)... +Jan 30, 2024 6:31:57 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Austintjh19/ip.git completed! +Jan 30, 2024 6:31:57 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/whitesnowx/ip.git... -Jan 30, 2024 2:09:23 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 6:31:57 AM reposense.report.ReportGenerator analyzeRepos INFO: [3/428] Analyzing https://github.com/Austintjh19/ip.git (master)... -Jan 30, 2024 2:09:23 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:31:57 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/whitesnowx/ip.git to complete... -Jan 30, 2024 2:09:23 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/fy17ohhh/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/fy17ohhh/ip.git (master)... -Jan 30, 2024 2:09:23 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/eliotlee68/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/eliotlee68/ip.git (master)... -Jan 30, 2024 2:09:23 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:31:57 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Austintjh19/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:31:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Austintjh19/ip.git (master)... -Jan 30, 2024 2:09:23 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:31:57 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/linnn-7/ip.git completed! -Jan 30, 2024 2:09:23 AM reposense.report.ReportGenerator analyzeRepos -INFO: [4/428] Analyzing https://github.com/linnn-7/ip.git (master)... -Jan 30, 2024 2:09:23 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:31:57 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/gavin331/ip.git... -Jan 30, 2024 2:09:23 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:31:57 AM reposense.report.ReportGenerator analyzeRepos +INFO: [4/428] Analyzing https://github.com/linnn-7/ip.git (master)... +Jan 30, 2024 6:31:57 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/gavin331/ip.git to complete... -Jan 30, 2024 2:09:23 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:31:57 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/linnn-7/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:31:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/linnn-7/ip.git (master)... -Jan 30, 2024 2:09:23 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:31:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/fy17ohhh/ip.git (master)... +Jan 30, 2024 6:31:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/fy17ohhh/ip.git (master)... +Jan 30, 2024 6:31:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/eliotlee68/ip.git (master)... +Jan 30, 2024 6:31:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/eliotlee68/ip.git (master)... +Jan 30, 2024 6:31:57 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/fy17ohhh/ip.git (master) completed! +Jan 30, 2024 6:31:57 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/eliotlee68/ip.git (master) completed! +Jan 30, 2024 6:31:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Austintjh19/ip.git (master)... +Jan 30, 2024 6:31:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Austintjh19/ip.git (master)... +Jan 30, 2024 6:31:57 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Austintjh19/ip.git (master) completed! +Jan 30, 2024 6:31:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/linnn-7/ip.git (master)... +Jan 30, 2024 6:31:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/linnn-7/ip.git (master)... +Jan 30, 2024 6:31:58 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/linnn-7/ip.git (master) completed! +Jan 30, 2024 6:31:58 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/dedsecrattle/ip.git completed! -Jan 30, 2024 2:09:23 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/whitesnowx/ip.git completed! -Jan 30, 2024 2:09:23 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/gavingoh99/ip.git completed! -Jan 30, 2024 2:09:23 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:31:58 AM reposense.report.ReportGenerator analyzeRepos +INFO: [5/428] Analyzing https://github.com/dedsecrattle/ip.git (master)... +Jan 30, 2024 6:31:58 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/SherisseTJW/ip.git... -Jan 30, 2024 2:09:23 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:31:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/SherisseTJW/ip.git to complete... +Jan 30, 2024 6:31:58 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/dedsecrattle/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:31:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/dedsecrattle/ip.git (master)... +Jan 30, 2024 6:31:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/gavingoh99/ip.git completed! +Jan 30, 2024 6:31:58 AM reposense.report.ReportGenerator analyzeRepos +INFO: [6/428] Analyzing https://github.com/gavingoh99/ip.git (master)... +Jan 30, 2024 6:31:58 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/tahnya/ip.git... -Jan 30, 2024 2:09:23 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:31:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/tahnya/ip.git to complete... +Jan 30, 2024 6:31:58 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/gavingoh99/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:31:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/gavingoh99/ip.git (master)... +Jan 30, 2024 6:31:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/whitesnowx/ip.git completed! +Jan 30, 2024 6:31:58 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/yongkotaro/ip.git... -Jan 30, 2024 2:09:23 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:31:58 AM reposense.report.ReportGenerator analyzeRepos +INFO: [7/428] Analyzing https://github.com/whitesnowx/ip.git (master)... +Jan 30, 2024 6:31:58 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/yongkotaro/ip.git to complete... -Jan 30, 2024 2:09:23 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/tahnya/ip.git to complete... -Jan 30, 2024 2:09:23 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/SherisseTJW/ip.git to complete... -Jan 30, 2024 2:09:23 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:31:58 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/whitesnowx/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:31:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/whitesnowx/ip.git (master)... +Jan 30, 2024 6:31:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/gavingoh99/ip.git (master)... +Jan 30, 2024 6:31:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/gavingoh99/ip.git (master)... +Jan 30, 2024 6:31:58 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/gavingoh99/ip.git (master) completed! +Jan 30, 2024 6:31:58 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/gavin331/ip.git completed! -Jan 30, 2024 2:09:23 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:31:58 AM reposense.report.ReportGenerator analyzeRepos +INFO: [8/428] Analyzing https://github.com/gavin331/ip.git (master)... +Jan 30, 2024 6:31:58 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/E0735389/ip.git... -Jan 30, 2024 2:09:23 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:31:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/dedsecrattle/ip.git (master)... +Jan 30, 2024 6:31:58 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/E0735389/ip.git to complete... -Jan 30, 2024 2:09:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/fy17ohhh/ip.git (master)... -Jan 30, 2024 2:09:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/fy17ohhh/ip.git (master)... -Jan 30, 2024 2:09:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Austintjh19/ip.git (master)... -Jan 30, 2024 2:09:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/eliotlee68/ip.git (master)... -Jan 30, 2024 2:09:23 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:31:58 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/gavin331/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:31:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/gavin331/ip.git (master)... +Jan 30, 2024 6:31:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/dedsecrattle/ip.git (master)... +Jan 30, 2024 6:31:58 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/dedsecrattle/ip.git (master) completed! +Jan 30, 2024 6:31:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/whitesnowx/ip.git (master)... +Jan 30, 2024 6:31:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/whitesnowx/ip.git (master)... +Jan 30, 2024 6:31:58 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/whitesnowx/ip.git (master) completed! +Jan 30, 2024 6:31:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/gavin331/ip.git (master)... +Jan 30, 2024 6:31:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/gavin331/ip.git (master)... +Jan 30, 2024 6:31:58 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/gavin331/ip.git (master) completed! +Jan 30, 2024 6:31:59 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/SherisseTJW/ip.git completed! -Jan 30, 2024 2:09:23 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tahnya/ip.git completed! -Jan 30, 2024 2:09:23 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/yongkotaro/ip.git completed! -Jan 30, 2024 2:09:23 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:31:59 AM reposense.report.ReportGenerator analyzeRepos +INFO: [9/428] Analyzing https://github.com/SherisseTJW/ip.git (master)... +Jan 30, 2024 6:31:59 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/beefsausagee/ip.git... -Jan 30, 2024 2:09:23 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:31:59 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/beefsausagee/ip.git to complete... +Jan 30, 2024 6:31:59 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/SherisseTJW/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:31:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/SherisseTJW/ip.git (master)... +Jan 30, 2024 6:31:59 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tahnya/ip.git completed! +Jan 30, 2024 6:31:59 AM reposense.report.ReportGenerator analyzeRepos +INFO: [10/428] Analyzing https://github.com/tahnya/ip.git (master)... +Jan 30, 2024 6:31:59 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/c-wenlong/ip.git... -Jan 30, 2024 2:09:23 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/fy17ohhh/ip.git (master) completed! -Jan 30, 2024 2:09:23 AM reposense.report.ReportGenerator analyzeRepos -INFO: [5/428] Analyzing https://github.com/dedsecrattle/ip.git (master)... -Jan 30, 2024 2:09:23 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:31:59 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/c-wenlong/ip.git to complete... -Jan 30, 2024 2:09:23 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/E0735389/ip.git completed! -Jan 30, 2024 2:09:23 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/beefsausagee/ip.git to complete... -Jan 30, 2024 2:09:23 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:31:59 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/tahnya/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:31:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/tahnya/ip.git (master)... +Jan 30, 2024 6:31:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/tahnya/ip.git (master)... +Jan 30, 2024 6:31:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/tahnya/ip.git (master)... +Jan 30, 2024 6:31:59 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/tahnya/ip.git (master) completed! +Jan 30, 2024 6:31:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/SherisseTJW/ip.git (master)... +Jan 30, 2024 6:31:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/SherisseTJW/ip.git (master)... +Jan 30, 2024 6:31:59 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/SherisseTJW/ip.git (master) completed! +Jan 30, 2024 6:31:59 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/yongkotaro/ip.git completed! +Jan 30, 2024 6:31:59 AM reposense.report.ReportGenerator analyzeRepos +INFO: [11/428] Analyzing https://github.com/yongkotaro/ip.git (master)... +Jan 30, 2024 6:31:59 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ChuaZenKhoon/ip.git... -Jan 30, 2024 2:09:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/eliotlee68/ip.git (master)... -Jan 30, 2024 2:09:23 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:31:59 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ChuaZenKhoon/ip.git to complete... -Jan 30, 2024 2:09:23 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/eliotlee68/ip.git (master) completed! -Jan 30, 2024 2:09:23 AM reposense.report.ReportGenerator analyzeRepos -INFO: [6/428] Analyzing https://github.com/whitesnowx/ip.git (master)... -Jan 30, 2024 2:09:23 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:31:59 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/yongkotaro/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:31:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/yongkotaro/ip.git (master)... +Jan 30, 2024 6:31:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/yongkotaro/ip.git (master)... +Jan 30, 2024 6:31:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/yongkotaro/ip.git (master)... +Jan 30, 2024 6:31:59 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/E0735389/ip.git completed! +Jan 30, 2024 6:31:59 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/yongkotaro/ip.git (master) completed! +Jan 30, 2024 6:31:59 AM reposense.report.ReportGenerator analyzeRepos +INFO: [12/428] Analyzing https://github.com/E0735389/ip.git (master)... +Jan 30, 2024 6:31:59 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ziyi22/ip.git... -Jan 30, 2024 2:09:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Austintjh19/ip.git (master)... -Jan 30, 2024 2:09:23 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:31:59 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ziyi22/ip.git to complete... -Jan 30, 2024 2:09:23 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/dedsecrattle/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/dedsecrattle/ip.git (master)... -Jan 30, 2024 2:09:23 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/whitesnowx/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/whitesnowx/ip.git (master)... -Jan 30, 2024 2:09:23 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Austintjh19/ip.git (master) completed! -Jan 30, 2024 2:09:23 AM reposense.report.ReportGenerator analyzeRepos -INFO: [7/428] Analyzing https://github.com/gavingoh99/ip.git (master)... -Jan 30, 2024 2:09:23 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/gavingoh99/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/gavingoh99/ip.git (master)... -Jan 30, 2024 2:09:24 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/c-wenlong/ip.git completed! -Jan 30, 2024 2:09:24 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:31:59 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/E0735389/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:31:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/E0735389/ip.git (master)... +Jan 30, 2024 6:31:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/E0735389/ip.git (master)... +Jan 30, 2024 6:31:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/E0735389/ip.git (master)... +Jan 30, 2024 6:31:59 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/E0735389/ip.git (master) completed! +Jan 30, 2024 6:31:59 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/beefsausagee/ip.git completed! -Jan 30, 2024 2:09:24 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:31:59 AM reposense.report.ReportGenerator analyzeRepos +INFO: [13/428] Analyzing https://github.com/beefsausagee/ip.git (master)... +Jan 30, 2024 6:31:59 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/gauravuj/ip.git... -Jan 30, 2024 2:09:24 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ChuaZenKhoon/ip.git completed! -Jan 30, 2024 2:09:24 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:31:59 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/gauravuj/ip.git to complete... -Jan 30, 2024 2:09:24 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:31:59 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/beefsausagee/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:31:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/beefsausagee/ip.git (master)... +Jan 30, 2024 6:31:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/beefsausagee/ip.git (master)... +Jan 30, 2024 6:31:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/beefsausagee/ip.git (master)... +Jan 30, 2024 6:31:59 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/beefsausagee/ip.git (master) completed! +Jan 30, 2024 6:31:59 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/c-wenlong/ip.git completed! +Jan 30, 2024 6:31:59 AM reposense.report.ReportGenerator analyzeRepos +INFO: [14/428] Analyzing https://github.com/c-wenlong/ip.git (master)... +Jan 30, 2024 6:31:59 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/marclamp/ip.git... -Jan 30, 2024 2:09:24 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:31:59 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/marclamp/ip.git to complete... +Jan 30, 2024 6:31:59 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/c-wenlong/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:31:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/c-wenlong/ip.git (master)... +Jan 30, 2024 6:31:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/c-wenlong/ip.git (master)... +Jan 30, 2024 6:31:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/c-wenlong/ip.git (master)... +Jan 30, 2024 6:31:59 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/c-wenlong/ip.git (master) completed! +Jan 30, 2024 6:32:00 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ChuaZenKhoon/ip.git completed! +Jan 30, 2024 6:32:00 AM reposense.report.ReportGenerator analyzeRepos +INFO: [15/428] Analyzing https://github.com/ChuaZenKhoon/ip.git (master)... +Jan 30, 2024 6:32:00 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/LifHoshi/ip.git... -Jan 30, 2024 2:09:24 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:00 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/LifHoshi/ip.git to complete... +Jan 30, 2024 6:32:00 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ChuaZenKhoon/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ChuaZenKhoon/ip.git (master)... +Jan 30, 2024 6:32:00 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ziyi22/ip.git completed! -Jan 30, 2024 2:09:24 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/marclamp/ip.git to complete... -Jan 30, 2024 2:09:24 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:00 AM reposense.report.ReportGenerator analyzeRepos +INFO: [16/428] Analyzing https://github.com/ziyi22/ip.git (master)... +Jan 30, 2024 6:32:00 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/erv-teo/ip.git... -Jan 30, 2024 2:09:24 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/LifHoshi/ip.git to complete... -Jan 30, 2024 2:09:24 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:00 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/erv-teo/ip.git to complete... -Jan 30, 2024 2:09:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/whitesnowx/ip.git (master)... -Jan 30, 2024 2:09:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/gavingoh99/ip.git (master)... -Jan 30, 2024 2:09:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/whitesnowx/ip.git (master)... -Jan 30, 2024 2:09:24 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/whitesnowx/ip.git (master) completed! -Jan 30, 2024 2:09:24 AM reposense.report.ReportGenerator analyzeRepos -INFO: [8/428] Analyzing https://github.com/gavin331/ip.git (master)... -Jan 30, 2024 2:09:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/gavingoh99/ip.git (master)... -Jan 30, 2024 2:09:24 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:00 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ziyi22/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ziyi22/ip.git (master)... +Jan 30, 2024 6:32:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ChuaZenKhoon/ip.git (master)... +Jan 30, 2024 6:32:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ChuaZenKhoon/ip.git (master)... +Jan 30, 2024 6:32:00 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ChuaZenKhoon/ip.git (master) completed! +Jan 30, 2024 6:32:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ziyi22/ip.git (master)... +Jan 30, 2024 6:32:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ziyi22/ip.git (master)... +Jan 30, 2024 6:32:00 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ziyi22/ip.git (master) completed! +Jan 30, 2024 6:32:00 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/gauravuj/ip.git completed! -Jan 30, 2024 2:09:24 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/gavin331/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/gavin331/ip.git (master)... -Jan 30, 2024 2:09:24 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/gavingoh99/ip.git (master) completed! -Jan 30, 2024 2:09:24 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:00 AM reposense.report.ReportGenerator analyzeRepos +INFO: [17/428] Analyzing https://github.com/gauravuj/ip.git (master)... +Jan 30, 2024 6:32:00 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/PyromancerBoom/ip.git... -Jan 30, 2024 2:09:24 AM reposense.report.ReportGenerator analyzeRepos -INFO: [9/428] Analyzing https://github.com/SherisseTJW/ip.git (master)... -Jan 30, 2024 2:09:24 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/marclamp/ip.git completed! -Jan 30, 2024 2:09:24 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:00 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/PyromancerBoom/ip.git to complete... -Jan 30, 2024 2:09:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/linnn-7/ip.git (master)... -Jan 30, 2024 2:09:24 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:00 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/gauravuj/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/gauravuj/ip.git (master)... +Jan 30, 2024 6:32:00 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/marclamp/ip.git completed! +Jan 30, 2024 6:32:00 AM reposense.report.ReportGenerator analyzeRepos +INFO: [18/428] Analyzing https://github.com/marclamp/ip.git (master)... +Jan 30, 2024 6:32:00 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/javierng2knus/ip.git... -Jan 30, 2024 2:09:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/dedsecrattle/ip.git (master)... -Jan 30, 2024 2:09:24 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/erv-teo/ip.git completed! -Jan 30, 2024 2:09:24 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:00 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/javierng2knus/ip.git to complete... +Jan 30, 2024 6:32:00 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/marclamp/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/marclamp/ip.git (master)... +Jan 30, 2024 6:32:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/gauravuj/ip.git (master)... +Jan 30, 2024 6:32:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/gauravuj/ip.git (master)... +Jan 30, 2024 6:32:00 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/gauravuj/ip.git (master) completed! +Jan 30, 2024 6:32:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/marclamp/ip.git (master)... +Jan 30, 2024 6:32:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/marclamp/ip.git (master)... +Jan 30, 2024 6:32:00 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/marclamp/ip.git (master) completed! +Jan 30, 2024 6:32:00 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/LifHoshi/ip.git completed! -Jan 30, 2024 2:09:24 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/SherisseTJW/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/SherisseTJW/ip.git (master)... -Jan 30, 2024 2:09:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/linnn-7/ip.git (master)... -Jan 30, 2024 2:09:24 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:00 AM reposense.report.ReportGenerator analyzeRepos +INFO: [19/428] Analyzing https://github.com/LifHoshi/ip.git (master)... +Jan 30, 2024 6:32:00 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Lalelulilulela/ip.git... -Jan 30, 2024 2:09:24 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/javierng2knus/ip.git to complete... -Jan 30, 2024 2:09:24 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:00 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Lalelulilulela/ip.git to complete... -Jan 30, 2024 2:09:24 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:00 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/LifHoshi/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/LifHoshi/ip.git (master)... +Jan 30, 2024 6:32:00 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/erv-teo/ip.git completed! +Jan 30, 2024 6:32:00 AM reposense.report.ReportGenerator analyzeRepos +INFO: [20/428] Analyzing https://github.com/erv-teo/ip.git (master)... +Jan 30, 2024 6:32:00 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/martinng01/ip.git... -Jan 30, 2024 2:09:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/dedsecrattle/ip.git (master)... -Jan 30, 2024 2:09:24 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/linnn-7/ip.git (master) completed! -Jan 30, 2024 2:09:24 AM reposense.report.ReportGenerator analyzeRepos -INFO: [10/428] Analyzing https://github.com/yongkotaro/ip.git (master)... -Jan 30, 2024 2:09:24 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:00 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/martinng01/ip.git to complete... -Jan 30, 2024 2:09:24 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/dedsecrattle/ip.git (master) completed! -Jan 30, 2024 2:09:24 AM reposense.report.ReportGenerator analyzeRepos -INFO: [11/428] Analyzing https://github.com/tahnya/ip.git (master)... -Jan 30, 2024 2:09:24 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/yongkotaro/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/yongkotaro/ip.git (master)... -Jan 30, 2024 2:09:24 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/tahnya/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/tahnya/ip.git (master)... -Jan 30, 2024 2:09:24 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:00 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/erv-teo/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/erv-teo/ip.git (master)... +Jan 30, 2024 6:32:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/LifHoshi/ip.git (master)... +Jan 30, 2024 6:32:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/LifHoshi/ip.git (master)... +Jan 30, 2024 6:32:00 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/LifHoshi/ip.git (master) completed! +Jan 30, 2024 6:32:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/erv-teo/ip.git (master)... +Jan 30, 2024 6:32:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/erv-teo/ip.git (master)... +Jan 30, 2024 6:32:00 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/erv-teo/ip.git (master) completed! +Jan 30, 2024 6:32:01 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/PyromancerBoom/ip.git completed! -Jan 30, 2024 2:09:24 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/javierng2knus/ip.git completed! -Jan 30, 2024 2:09:24 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:01 AM reposense.report.ReportGenerator analyzeRepos +INFO: [21/428] Analyzing https://github.com/PyromancerBoom/ip.git (master)... +Jan 30, 2024 6:32:01 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/dwangwk/ip.git... -Jan 30, 2024 2:09:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/gavin331/ip.git (master)... -Jan 30, 2024 2:09:24 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:01 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/dwangwk/ip.git to complete... -Jan 30, 2024 2:09:24 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:01 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/PyromancerBoom/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/PyromancerBoom/ip.git (master)... +Jan 30, 2024 6:32:01 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/javierng2knus/ip.git completed! +Jan 30, 2024 6:32:01 AM reposense.report.ReportGenerator analyzeRepos +INFO: [22/428] Analyzing https://github.com/javierng2knus/ip.git (master)... +Jan 30, 2024 6:32:01 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/bryanyee33/ip.git... -Jan 30, 2024 2:09:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/gavin331/ip.git (master)... -Jan 30, 2024 2:09:24 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/gavin331/ip.git (master) completed! -Jan 30, 2024 2:09:24 AM reposense.report.ReportGenerator analyzeRepos -INFO: [12/428] Analyzing https://github.com/E0735389/ip.git (master)... -Jan 30, 2024 2:09:24 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:01 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/bryanyee33/ip.git to complete... -Jan 30, 2024 2:09:24 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/martinng01/ip.git completed! -Jan 30, 2024 2:09:24 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:01 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/javierng2knus/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/javierng2knus/ip.git (master)... +Jan 30, 2024 6:32:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/PyromancerBoom/ip.git (master)... +Jan 30, 2024 6:32:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/PyromancerBoom/ip.git (master)... +Jan 30, 2024 6:32:01 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/PyromancerBoom/ip.git (master) completed! +Jan 30, 2024 6:32:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/javierng2knus/ip.git (master)... +Jan 30, 2024 6:32:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/javierng2knus/ip.git (master)... +Jan 30, 2024 6:32:01 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/javierng2knus/ip.git (master) completed! +Jan 30, 2024 6:32:01 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Lalelulilulela/ip.git completed! +Jan 30, 2024 6:32:01 AM reposense.report.ReportGenerator analyzeRepos +INFO: [23/428] Analyzing https://github.com/Lalelulilulela/ip.git (master)... +Jan 30, 2024 6:32:01 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/cliftonchee/ip.git... -Jan 30, 2024 2:09:24 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/E0735389/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/E0735389/ip.git (master)... -Jan 30, 2024 2:09:24 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:01 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/cliftonchee/ip.git to complete... -Jan 30, 2024 2:09:24 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Lalelulilulela/ip.git completed! -Jan 30, 2024 2:09:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/yongkotaro/ip.git (master)... -Jan 30, 2024 2:09:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/tahnya/ip.git (master)... -Jan 30, 2024 2:09:24 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:01 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Lalelulilulela/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Lalelulilulela/ip.git (master)... +Jan 30, 2024 6:32:01 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/martinng01/ip.git completed! +Jan 30, 2024 6:32:01 AM reposense.report.ReportGenerator analyzeRepos +INFO: [24/428] Analyzing https://github.com/martinng01/ip.git (master)... +Jan 30, 2024 6:32:01 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/peterXGD/ip.git... -Jan 30, 2024 2:09:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/tahnya/ip.git (master)... -Jan 30, 2024 2:09:24 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/tahnya/ip.git (master) completed! -Jan 30, 2024 2:09:24 AM reposense.report.ReportGenerator analyzeRepos -INFO: [13/428] Analyzing https://github.com/c-wenlong/ip.git (master)... -Jan 30, 2024 2:09:24 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:01 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/peterXGD/ip.git to complete... -Jan 30, 2024 2:09:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/yongkotaro/ip.git (master)... -Jan 30, 2024 2:09:24 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/yongkotaro/ip.git (master) completed! -Jan 30, 2024 2:09:24 AM reposense.report.ReportGenerator analyzeRepos -INFO: [14/428] Analyzing https://github.com/beefsausagee/ip.git (master)... -Jan 30, 2024 2:09:24 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/dwangwk/ip.git completed! -Jan 30, 2024 2:09:24 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/c-wenlong/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/c-wenlong/ip.git (master)... -Jan 30, 2024 2:09:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/SherisseTJW/ip.git (master)... -Jan 30, 2024 2:09:24 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/beefsausagee/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/beefsausagee/ip.git (master)... -Jan 30, 2024 2:09:24 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/alex-setyawan/ip.git... -Jan 30, 2024 2:09:24 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/alex-setyawan/ip.git to complete... -Jan 30, 2024 2:09:25 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:01 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/martinng01/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/martinng01/ip.git (master)... +Jan 30, 2024 6:32:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Lalelulilulela/ip.git (master)... +Jan 30, 2024 6:32:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Lalelulilulela/ip.git (master)... +Jan 30, 2024 6:32:01 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Lalelulilulela/ip.git (master) completed! +Jan 30, 2024 6:32:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/martinng01/ip.git (master)... +Jan 30, 2024 6:32:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/martinng01/ip.git (master)... +Jan 30, 2024 6:32:01 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/martinng01/ip.git (master) completed! +Jan 30, 2024 6:32:01 AM reposense.report.RepoCloner waitForCloneProcess WARNING: Exception met while trying to clone the repo "peterXGD/ip[master]", will skip this repo. reposense.system.CommandRunnerProcessException: Error returned from command git clone --bare 'https://github.com/peterXGD/ip.git' 'repos/peterXGD_ip/ip_bare' on path . : Cloning into bare repository 'repos/peterXGD_ip/ip_bare'... @@ -384,475 +520,545 @@ fatal: could not read Username for 'https://github.com': No such device or addre at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:829) -Jan 30, 2024 2:09:25 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:01 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/alex-setyawan/ip.git... +Jan 30, 2024 6:32:01 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/alex-setyawan/ip.git to complete... +Jan 30, 2024 6:32:02 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/dwangwk/ip.git completed! +Jan 30, 2024 6:32:02 AM reposense.report.ReportGenerator analyzeRepos +INFO: [25/428] Analyzing https://github.com/dwangwk/ip.git (master)... +Jan 30, 2024 6:32:02 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Jawad280/ip.git... -Jan 30, 2024 2:09:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/SherisseTJW/ip.git (master)... -Jan 30, 2024 2:09:25 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/SherisseTJW/ip.git (master) completed! -Jan 30, 2024 2:09:25 AM reposense.report.ReportGenerator analyzeRepos -INFO: [15/428] Analyzing https://github.com/ChuaZenKhoon/ip.git (master)... -Jan 30, 2024 2:09:25 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:02 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Jawad280/ip.git to complete... +Jan 30, 2024 6:32:02 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/dwangwk/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/dwangwk/ip.git (master)... +Jan 30, 2024 6:32:02 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/bryanyee33/ip.git completed! -Jan 30, 2024 2:09:25 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:02 AM reposense.report.ReportGenerator analyzeRepos +INFO: [26/428] Analyzing https://github.com/bryanyee33/ip.git (master)... +Jan 30, 2024 6:32:02 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Howlong11/ip.git... -Jan 30, 2024 2:09:25 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Jawad280/ip.git to complete... -Jan 30, 2024 2:09:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/beefsausagee/ip.git (master)... -Jan 30, 2024 2:09:25 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:02 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Howlong11/ip.git to complete... -Jan 30, 2024 2:09:25 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ChuaZenKhoon/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ChuaZenKhoon/ip.git (master)... -Jan 30, 2024 2:09:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/beefsausagee/ip.git (master)... -Jan 30, 2024 2:09:25 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/beefsausagee/ip.git (master) completed! -Jan 30, 2024 2:09:25 AM reposense.report.ReportGenerator analyzeRepos -INFO: [16/428] Analyzing https://github.com/ziyi22/ip.git (master)... -Jan 30, 2024 2:09:25 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/cliftonchee/ip.git completed! -Jan 30, 2024 2:09:25 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/bennyLCK/ip.git... -Jan 30, 2024 2:09:25 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/bennyLCK/ip.git to complete... -Jan 30, 2024 2:09:25 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ziyi22/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ziyi22/ip.git (master)... -Jan 30, 2024 2:09:25 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/dwangwk/ip.git (master)... +Jan 30, 2024 6:32:02 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/bryanyee33/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/bryanyee33/ip.git (master)... +Jan 30, 2024 6:32:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/dwangwk/ip.git (master)... +Jan 30, 2024 6:32:02 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/dwangwk/ip.git (master) completed! +Jan 30, 2024 6:32:02 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/cliftonchee/ip.git completed! +Jan 30, 2024 6:32:02 AM reposense.report.ReportGenerator analyzeRepos +INFO: [27/428] Analyzing https://github.com/cliftonchee/ip.git (master)... +Jan 30, 2024 6:32:02 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/bennyLCK/ip.git... +Jan 30, 2024 6:32:02 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/bennyLCK/ip.git to complete... +Jan 30, 2024 6:32:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/bryanyee33/ip.git (master)... +Jan 30, 2024 6:32:02 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/cliftonchee/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/cliftonchee/ip.git (master)... +Jan 30, 2024 6:32:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/bryanyee33/ip.git (master)... +Jan 30, 2024 6:32:02 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/bryanyee33/ip.git (master) completed! +Jan 30, 2024 6:32:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/cliftonchee/ip.git (master)... +Jan 30, 2024 6:32:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/cliftonchee/ip.git (master)... +Jan 30, 2024 6:32:02 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/cliftonchee/ip.git (master) completed! +Jan 30, 2024 6:32:02 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/alex-setyawan/ip.git completed! -Jan 30, 2024 2:09:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/E0735389/ip.git (master)... -Jan 30, 2024 2:09:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ziyi22/ip.git (master)... -Jan 30, 2024 2:09:25 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:02 AM reposense.report.ReportGenerator analyzeRepos +INFO: [28/428] Analyzing https://github.com/alex-setyawan/ip.git (master)... +Jan 30, 2024 6:32:02 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/garywongkai/ip.git... -Jan 30, 2024 2:09:25 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Jawad280/ip.git completed! -Jan 30, 2024 2:09:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/E0735389/ip.git (master)... -Jan 30, 2024 2:09:25 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/E0735389/ip.git (master) completed! -Jan 30, 2024 2:09:25 AM reposense.report.ReportGenerator analyzeRepos -INFO: [17/428] Analyzing https://github.com/gauravuj/ip.git (master)... -Jan 30, 2024 2:09:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ChuaZenKhoon/ip.git (master)... -Jan 30, 2024 2:09:25 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:02 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/garywongkai/ip.git to complete... -Jan 30, 2024 2:09:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/c-wenlong/ip.git (master)... -Jan 30, 2024 2:09:25 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Howlong11/ip.git completed! -Jan 30, 2024 2:09:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ziyi22/ip.git (master)... -Jan 30, 2024 2:09:25 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:02 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/alex-setyawan/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/alex-setyawan/ip.git (master)... +Jan 30, 2024 6:32:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/alex-setyawan/ip.git (master)... +Jan 30, 2024 6:32:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/alex-setyawan/ip.git (master)... +Jan 30, 2024 6:32:02 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/alex-setyawan/ip.git (master) completed! +Jan 30, 2024 6:32:02 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Jawad280/ip.git completed! +Jan 30, 2024 6:32:02 AM reposense.report.ReportGenerator analyzeRepos +INFO: [29/428] Analyzing https://github.com/Jawad280/ip.git (master)... +Jan 30, 2024 6:32:02 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/sebin0817/ip.git... -Jan 30, 2024 2:09:25 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ziyi22/ip.git (master) completed! -Jan 30, 2024 2:09:25 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:02 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/sebin0817/ip.git to complete... -Jan 30, 2024 2:09:25 AM reposense.report.ReportGenerator analyzeRepos -INFO: [18/428] Analyzing https://github.com/marclamp/ip.git (master)... -Jan 30, 2024 2:09:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ChuaZenKhoon/ip.git (master)... -Jan 30, 2024 2:09:25 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ChuaZenKhoon/ip.git (master) completed! -Jan 30, 2024 2:09:25 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:02 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Jawad280/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Jawad280/ip.git (master)... +Jan 30, 2024 6:32:02 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Howlong11/ip.git completed! +Jan 30, 2024 6:32:02 AM reposense.report.ReportGenerator analyzeRepos +INFO: [30/428] Analyzing https://github.com/Howlong11/ip.git (master)... +Jan 30, 2024 6:32:02 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AL-ZT/ip.git... -Jan 30, 2024 2:09:25 AM reposense.report.ReportGenerator analyzeRepos -INFO: [19/428] Analyzing https://github.com/erv-teo/ip.git (master)... -Jan 30, 2024 2:09:25 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/gauravuj/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/gauravuj/ip.git (master)... -Jan 30, 2024 2:09:25 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:02 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AL-ZT/ip.git to complete... -Jan 30, 2024 2:09:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/c-wenlong/ip.git (master)... -Jan 30, 2024 2:09:25 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/c-wenlong/ip.git (master) completed! -Jan 30, 2024 2:09:25 AM reposense.report.ReportGenerator analyzeRepos -INFO: [20/428] Analyzing https://github.com/LifHoshi/ip.git (master)... -Jan 30, 2024 2:09:25 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:02 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Howlong11/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Howlong11/ip.git (master)... +Jan 30, 2024 6:32:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Howlong11/ip.git (master)... +Jan 30, 2024 6:32:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Howlong11/ip.git (master)... +Jan 30, 2024 6:32:03 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Howlong11/ip.git (master) completed! +Jan 30, 2024 6:32:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Jawad280/ip.git (master)... +Jan 30, 2024 6:32:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Jawad280/ip.git (master)... +Jan 30, 2024 6:32:03 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Jawad280/ip.git (master) completed! +Jan 30, 2024 6:32:03 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/bennyLCK/ip.git completed! -Jan 30, 2024 2:09:25 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/marclamp/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/marclamp/ip.git (master)... -Jan 30, 2024 2:09:25 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:03 AM reposense.report.ReportGenerator analyzeRepos +INFO: [31/428] Analyzing https://github.com/bennyLCK/ip.git (master)... +Jan 30, 2024 6:32:03 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/iynixil/ip.git... -Jan 30, 2024 2:09:25 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/LifHoshi/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/LifHoshi/ip.git (master)... -Jan 30, 2024 2:09:25 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:03 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/iynixil/ip.git to complete... -Jan 30, 2024 2:09:25 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/erv-teo/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/erv-teo/ip.git (master)... -Jan 30, 2024 2:09:25 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:03 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/bennyLCK/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/bennyLCK/ip.git (master)... +Jan 30, 2024 6:32:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/bennyLCK/ip.git (master)... +Jan 30, 2024 6:32:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/bennyLCK/ip.git (master)... +Jan 30, 2024 6:32:03 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/bennyLCK/ip.git (master) completed! +Jan 30, 2024 6:32:03 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/garywongkai/ip.git completed! -Jan 30, 2024 2:09:25 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:03 AM reposense.report.ReportGenerator analyzeRepos +INFO: [32/428] Analyzing https://github.com/garywongkai/ip.git (master)... +Jan 30, 2024 6:32:03 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ys112/ip.git... -Jan 30, 2024 2:09:25 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:03 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ys112/ip.git to complete... -Jan 30, 2024 2:09:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/erv-teo/ip.git (master)... -Jan 30, 2024 2:09:25 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:03 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/garywongkai/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/garywongkai/ip.git (master)... +Jan 30, 2024 6:32:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/garywongkai/ip.git (master)... +Jan 30, 2024 6:32:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/garywongkai/ip.git (master)... +Jan 30, 2024 6:32:03 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/garywongkai/ip.git (master) completed! +Jan 30, 2024 6:32:03 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/sebin0817/ip.git completed! -Jan 30, 2024 2:09:25 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:03 AM reposense.report.ReportGenerator analyzeRepos +INFO: [33/428] Analyzing https://github.com/sebin0817/ip.git (master)... +Jan 30, 2024 6:32:03 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/acekhoon/ip.git... -Jan 30, 2024 2:09:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/erv-teo/ip.git (master)... -Jan 30, 2024 2:09:25 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:03 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/acekhoon/ip.git to complete... +Jan 30, 2024 6:32:03 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/sebin0817/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/sebin0817/ip.git (master)... +Jan 30, 2024 6:32:03 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AL-ZT/ip.git completed! -Jan 30, 2024 2:09:25 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/erv-teo/ip.git (master) completed! -Jan 30, 2024 2:09:25 AM reposense.report.ReportGenerator analyzeRepos -INFO: [21/428] Analyzing https://github.com/PyromancerBoom/ip.git (master)... -Jan 30, 2024 2:09:25 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:03 AM reposense.report.ReportGenerator analyzeRepos +INFO: [34/428] Analyzing https://github.com/AL-ZT/ip.git (master)... +Jan 30, 2024 6:32:03 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/larainezo/ip.git... -Jan 30, 2024 2:09:25 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/acekhoon/ip.git to complete... -Jan 30, 2024 2:09:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/gauravuj/ip.git (master)... -Jan 30, 2024 2:09:25 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/PyromancerBoom/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/PyromancerBoom/ip.git (master)... -Jan 30, 2024 2:09:25 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:03 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/larainezo/ip.git to complete... -Jan 30, 2024 2:09:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/marclamp/ip.git (master)... -Jan 30, 2024 2:09:25 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:03 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AL-ZT/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AL-ZT/ip.git (master)... +Jan 30, 2024 6:32:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/sebin0817/ip.git (master)... +Jan 30, 2024 6:32:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/sebin0817/ip.git (master)... +Jan 30, 2024 6:32:03 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/sebin0817/ip.git (master) completed! +Jan 30, 2024 6:32:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AL-ZT/ip.git (master)... +Jan 30, 2024 6:32:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AL-ZT/ip.git (master)... +Jan 30, 2024 6:32:03 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AL-ZT/ip.git (master) completed! +Jan 30, 2024 6:32:03 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/iynixil/ip.git completed! -Jan 30, 2024 2:09:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/marclamp/ip.git (master)... -Jan 30, 2024 2:09:25 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/marclamp/ip.git (master) completed! -Jan 30, 2024 2:09:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/gauravuj/ip.git (master)... -Jan 30, 2024 2:09:25 AM reposense.report.ReportGenerator analyzeRepos -INFO: [22/428] Analyzing https://github.com/javierng2knus/ip.git (master)... -Jan 30, 2024 2:09:25 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/gauravuj/ip.git (master) completed! -Jan 30, 2024 2:09:25 AM reposense.report.ReportGenerator analyzeRepos -INFO: [23/428] Analyzing https://github.com/martinng01/ip.git (master)... -Jan 30, 2024 2:09:25 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:03 AM reposense.report.ReportGenerator analyzeRepos +INFO: [35/428] Analyzing https://github.com/iynixil/ip.git (master)... +Jan 30, 2024 6:32:03 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/yyccbb/ip.git... -Jan 30, 2024 2:09:25 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:03 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/yyccbb/ip.git to complete... -Jan 30, 2024 2:09:25 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/martinng01/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/martinng01/ip.git (master)... -Jan 30, 2024 2:09:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/LifHoshi/ip.git (master)... -Jan 30, 2024 2:09:25 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/javierng2knus/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/javierng2knus/ip.git (master)... -Jan 30, 2024 2:09:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/LifHoshi/ip.git (master)... -Jan 30, 2024 2:09:25 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/LifHoshi/ip.git (master) completed! -Jan 30, 2024 2:09:25 AM reposense.report.ReportGenerator analyzeRepos -INFO: [24/428] Analyzing https://github.com/Lalelulilulela/ip.git (master)... -Jan 30, 2024 2:09:25 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:03 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/iynixil/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/iynixil/ip.git (master)... +Jan 30, 2024 6:32:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/iynixil/ip.git (master)... +Jan 30, 2024 6:32:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/iynixil/ip.git (master)... +Jan 30, 2024 6:32:03 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/iynixil/ip.git (master) completed! +Jan 30, 2024 6:32:04 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ys112/ip.git completed! -Jan 30, 2024 2:09:25 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:04 AM reposense.report.ReportGenerator analyzeRepos +INFO: [36/428] Analyzing https://github.com/ys112/ip.git (master)... +Jan 30, 2024 6:32:04 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AidenLYT/ip.git... -Jan 30, 2024 2:09:25 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:04 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AidenLYT/ip.git to complete... -Jan 30, 2024 2:09:25 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Lalelulilulela/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Lalelulilulela/ip.git (master)... -Jan 30, 2024 2:09:25 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/larainezo/ip.git completed! -Jan 30, 2024 2:09:25 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:04 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ys112/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ys112/ip.git (master)... +Jan 30, 2024 6:32:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ys112/ip.git (master)... +Jan 30, 2024 6:32:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ys112/ip.git (master)... +Jan 30, 2024 6:32:04 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ys112/ip.git (master) completed! +Jan 30, 2024 6:32:04 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/acekhoon/ip.git completed! +Jan 30, 2024 6:32:04 AM reposense.report.ReportGenerator analyzeRepos +INFO: [37/428] Analyzing https://github.com/acekhoon/ip.git (master)... +Jan 30, 2024 6:32:04 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/minghowC/ip.git... -Jan 30, 2024 2:09:25 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:04 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/minghowC/ip.git to complete... -Jan 30, 2024 2:09:25 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/acekhoon/ip.git completed! -Jan 30, 2024 2:09:26 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:04 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/acekhoon/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/acekhoon/ip.git (master)... +Jan 30, 2024 6:32:04 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/larainezo/ip.git completed! +Jan 30, 2024 6:32:04 AM reposense.report.ReportGenerator analyzeRepos +INFO: [38/428] Analyzing https://github.com/larainezo/ip.git (master)... +Jan 30, 2024 6:32:04 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Jaspertzx/ip.git... -Jan 30, 2024 2:09:26 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:04 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Jaspertzx/ip.git to complete... -Jan 30, 2024 2:09:26 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:04 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/larainezo/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/larainezo/ip.git (master)... +Jan 30, 2024 6:32:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/acekhoon/ip.git (master)... +Jan 30, 2024 6:32:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/acekhoon/ip.git (master)... +Jan 30, 2024 6:32:04 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/acekhoon/ip.git (master) completed! +Jan 30, 2024 6:32:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/larainezo/ip.git (master)... +Jan 30, 2024 6:32:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/larainezo/ip.git (master)... +Jan 30, 2024 6:32:04 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/larainezo/ip.git (master) completed! +Jan 30, 2024 6:32:04 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/yyccbb/ip.git completed! -Jan 30, 2024 2:09:26 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:04 AM reposense.report.ReportGenerator analyzeRepos +INFO: [39/428] Analyzing https://github.com/yyccbb/ip.git (master)... +Jan 30, 2024 6:32:04 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/limrik/ip.git... -Jan 30, 2024 2:09:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/martinng01/ip.git (master)... -Jan 30, 2024 2:09:26 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:04 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/limrik/ip.git to complete... -Jan 30, 2024 2:09:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/PyromancerBoom/ip.git (master)... -Jan 30, 2024 2:09:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/martinng01/ip.git (master)... -Jan 30, 2024 2:09:26 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/martinng01/ip.git (master) completed! -Jan 30, 2024 2:09:26 AM reposense.report.ReportGenerator analyzeRepos -INFO: [25/428] Analyzing https://github.com/dwangwk/ip.git (master)... -Jan 30, 2024 2:09:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/PyromancerBoom/ip.git (master)... -Jan 30, 2024 2:09:26 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/PyromancerBoom/ip.git (master) completed! -Jan 30, 2024 2:09:26 AM reposense.report.ReportGenerator analyzeRepos -INFO: [26/428] Analyzing https://github.com/bryanyee33/ip.git (master)... -Jan 30, 2024 2:09:26 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/dwangwk/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/dwangwk/ip.git (master)... -Jan 30, 2024 2:09:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/javierng2knus/ip.git (master)... -Jan 30, 2024 2:09:26 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/bryanyee33/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/bryanyee33/ip.git (master)... -Jan 30, 2024 2:09:26 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:04 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/yyccbb/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/yyccbb/ip.git (master)... +Jan 30, 2024 6:32:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/yyccbb/ip.git (master)... +Jan 30, 2024 6:32:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/yyccbb/ip.git (master)... +Jan 30, 2024 6:32:04 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/yyccbb/ip.git (master) completed! +Jan 30, 2024 6:32:04 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AidenLYT/ip.git completed! -Jan 30, 2024 2:09:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/javierng2knus/ip.git (master)... -Jan 30, 2024 2:09:26 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/javierng2knus/ip.git (master) completed! -Jan 30, 2024 2:09:26 AM reposense.report.ReportGenerator analyzeRepos -INFO: [27/428] Analyzing https://github.com/cliftonchee/ip.git (master)... -Jan 30, 2024 2:09:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Lalelulilulela/ip.git (master)... -Jan 30, 2024 2:09:26 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:04 AM reposense.report.ReportGenerator analyzeRepos +INFO: [40/428] Analyzing https://github.com/AidenLYT/ip.git (master)... +Jan 30, 2024 6:32:04 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/cyqjoseph/ip.git... -Jan 30, 2024 2:09:26 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/minghowC/ip.git completed! -Jan 30, 2024 2:09:26 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:04 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/cyqjoseph/ip.git to complete... -Jan 30, 2024 2:09:26 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/cliftonchee/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/cliftonchee/ip.git (master)... -Jan 30, 2024 2:09:26 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:04 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AidenLYT/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AidenLYT/ip.git (master)... +Jan 30, 2024 6:32:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AidenLYT/ip.git (master)... +Jan 30, 2024 6:32:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AidenLYT/ip.git (master)... +Jan 30, 2024 6:32:05 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AidenLYT/ip.git (master) completed! +Jan 30, 2024 6:32:05 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/minghowC/ip.git completed! +Jan 30, 2024 6:32:05 AM reposense.report.ReportGenerator analyzeRepos +INFO: [41/428] Analyzing https://github.com/minghowC/ip.git (master)... +Jan 30, 2024 6:32:05 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jeong-jaeho/ip.git... -Jan 30, 2024 2:09:26 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Jaspertzx/ip.git completed! -Jan 30, 2024 2:09:26 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:05 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jeong-jaeho/ip.git to complete... -Jan 30, 2024 2:09:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Lalelulilulela/ip.git (master)... -Jan 30, 2024 2:09:26 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Lalelulilulela/ip.git (master) completed! -Jan 30, 2024 2:09:26 AM reposense.report.ReportGenerator analyzeRepos -INFO: [28/428] Analyzing https://github.com/alex-setyawan/ip.git (master)... -Jan 30, 2024 2:09:26 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:05 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/minghowC/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/minghowC/ip.git (master)... +Jan 30, 2024 6:32:05 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Jaspertzx/ip.git completed! +Jan 30, 2024 6:32:05 AM reposense.report.ReportGenerator analyzeRepos +INFO: [42/428] Analyzing https://github.com/Jaspertzx/ip.git (master)... +Jan 30, 2024 6:32:05 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/wilsonwid/ip.git... -Jan 30, 2024 2:09:26 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/limrik/ip.git completed! -Jan 30, 2024 2:09:26 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:05 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/wilsonwid/ip.git to complete... -Jan 30, 2024 2:09:26 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:05 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Jaspertzx/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Jaspertzx/ip.git (master)... +Jan 30, 2024 6:32:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/minghowC/ip.git (master)... +Jan 30, 2024 6:32:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/minghowC/ip.git (master)... +Jan 30, 2024 6:32:05 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/minghowC/ip.git (master) completed! +Jan 30, 2024 6:32:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Jaspertzx/ip.git (master)... +Jan 30, 2024 6:32:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Jaspertzx/ip.git (master)... +Jan 30, 2024 6:32:05 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Jaspertzx/ip.git (master) completed! +Jan 30, 2024 6:32:05 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/limrik/ip.git completed! +Jan 30, 2024 6:32:05 AM reposense.report.ReportGenerator analyzeRepos +INFO: [43/428] Analyzing https://github.com/limrik/ip.git (master)... +Jan 30, 2024 6:32:05 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/iamtr/ip.git... -Jan 30, 2024 2:09:26 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/alex-setyawan/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/alex-setyawan/ip.git (master)... -Jan 30, 2024 2:09:26 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:05 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/iamtr/ip.git to complete... -Jan 30, 2024 2:09:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/dwangwk/ip.git (master)... -Jan 30, 2024 2:09:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/alex-setyawan/ip.git (master)... -Jan 30, 2024 2:09:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/dwangwk/ip.git (master)... -Jan 30, 2024 2:09:26 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/dwangwk/ip.git (master) completed! -Jan 30, 2024 2:09:26 AM reposense.report.ReportGenerator analyzeRepos -INFO: [29/428] Analyzing https://github.com/Jawad280/ip.git (master)... -Jan 30, 2024 2:09:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/bryanyee33/ip.git (master)... -Jan 30, 2024 2:09:26 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:05 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/limrik/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/limrik/ip.git (master)... +Jan 30, 2024 6:32:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/limrik/ip.git (master)... +Jan 30, 2024 6:32:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/limrik/ip.git (master)... +Jan 30, 2024 6:32:05 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/limrik/ip.git (master) completed! +Jan 30, 2024 6:32:05 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/cyqjoseph/ip.git completed! -Jan 30, 2024 2:09:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/alex-setyawan/ip.git (master)... -Jan 30, 2024 2:09:26 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Jawad280/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Jawad280/ip.git (master)... -Jan 30, 2024 2:09:26 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/alex-setyawan/ip.git (master) completed! -Jan 30, 2024 2:09:26 AM reposense.report.ReportGenerator analyzeRepos -INFO: [30/428] Analyzing https://github.com/Howlong11/ip.git (master)... -Jan 30, 2024 2:09:26 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:05 AM reposense.report.ReportGenerator analyzeRepos +INFO: [44/428] Analyzing https://github.com/cyqjoseph/ip.git (master)... +Jan 30, 2024 6:32:05 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/yleeyilin/ip.git... -Jan 30, 2024 2:09:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/bryanyee33/ip.git (master)... -Jan 30, 2024 2:09:26 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/bryanyee33/ip.git (master) completed! -Jan 30, 2024 2:09:26 AM reposense.report.ReportGenerator analyzeRepos -INFO: [31/428] Analyzing https://github.com/bennyLCK/ip.git (master)... -Jan 30, 2024 2:09:26 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:05 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/yleeyilin/ip.git to complete... -Jan 30, 2024 2:09:26 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:05 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/cyqjoseph/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/cyqjoseph/ip.git (master)... +Jan 30, 2024 6:32:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/cyqjoseph/ip.git (master)... +Jan 30, 2024 6:32:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/cyqjoseph/ip.git (master)... +Jan 30, 2024 6:32:05 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/cyqjoseph/ip.git (master) completed! +Jan 30, 2024 6:32:06 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jeong-jaeho/ip.git completed! -Jan 30, 2024 2:09:26 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:06 AM reposense.report.ReportGenerator analyzeRepos +INFO: [45/428] Analyzing https://github.com/jeong-jaeho/ip.git (master)... +Jan 30, 2024 6:32:06 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/RunjiaChen/ip.git... -Jan 30, 2024 2:09:26 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Howlong11/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Howlong11/ip.git (master)... -Jan 30, 2024 2:09:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/cliftonchee/ip.git (master)... -Jan 30, 2024 2:09:26 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:06 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/RunjiaChen/ip.git to complete... -Jan 30, 2024 2:09:26 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:06 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jeong-jaeho/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jeong-jaeho/ip.git (master)... +Jan 30, 2024 6:32:06 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/wilsonwid/ip.git completed! -Jan 30, 2024 2:09:26 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/bennyLCK/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/bennyLCK/ip.git (master)... -Jan 30, 2024 2:09:26 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/iamtr/ip.git completed! -Jan 30, 2024 2:09:26 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:06 AM reposense.report.ReportGenerator analyzeRepos +INFO: [46/428] Analyzing https://github.com/wilsonwid/ip.git (master)... +Jan 30, 2024 6:32:06 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/nichee/ip.git... -Jan 30, 2024 2:09:26 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/leeweiming3/ip.git... -Jan 30, 2024 2:09:26 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:06 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/nichee/ip.git to complete... -Jan 30, 2024 2:09:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/cliftonchee/ip.git (master)... -Jan 30, 2024 2:09:26 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/cliftonchee/ip.git (master) completed! -Jan 30, 2024 2:09:26 AM reposense.report.ReportGenerator analyzeRepos -INFO: [32/428] Analyzing https://github.com/garywongkai/ip.git (master)... -Jan 30, 2024 2:09:26 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jeong-jaeho/ip.git (master)... +Jan 30, 2024 6:32:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jeong-jaeho/ip.git (master)... +Jan 30, 2024 6:32:06 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jeong-jaeho/ip.git (master) completed! +Jan 30, 2024 6:32:06 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/wilsonwid/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/wilsonwid/ip.git (master)... +Jan 30, 2024 6:32:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/iamtr/ip.git completed! +Jan 30, 2024 6:32:06 AM reposense.report.ReportGenerator analyzeRepos +INFO: [47/428] Analyzing https://github.com/iamtr/ip.git (master)... +Jan 30, 2024 6:32:06 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/leeweiming3/ip.git... +Jan 30, 2024 6:32:06 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/leeweiming3/ip.git to complete... -Jan 30, 2024 2:09:26 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/garywongkai/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/garywongkai/ip.git (master)... -Jan 30, 2024 2:09:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Howlong11/ip.git (master)... -Jan 30, 2024 2:09:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Howlong11/ip.git (master)... -Jan 30, 2024 2:09:26 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Howlong11/ip.git (master) completed! -Jan 30, 2024 2:09:26 AM reposense.report.ReportGenerator analyzeRepos -INFO: [33/428] Analyzing https://github.com/sebin0817/ip.git (master)... -Jan 30, 2024 2:09:26 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:06 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/iamtr/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/iamtr/ip.git (master)... +Jan 30, 2024 6:32:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/wilsonwid/ip.git (master)... +Jan 30, 2024 6:32:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/wilsonwid/ip.git (master)... +Jan 30, 2024 6:32:06 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/wilsonwid/ip.git (master) completed! +Jan 30, 2024 6:32:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/iamtr/ip.git (master)... +Jan 30, 2024 6:32:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/iamtr/ip.git (master)... +Jan 30, 2024 6:32:06 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/iamtr/ip.git (master) completed! +Jan 30, 2024 6:32:06 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/yleeyilin/ip.git completed! -Jan 30, 2024 2:09:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/bennyLCK/ip.git (master)... -Jan 30, 2024 2:09:26 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/sebin0817/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/sebin0817/ip.git (master)... -Jan 30, 2024 2:09:26 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:06 AM reposense.report.ReportGenerator analyzeRepos +INFO: [48/428] Analyzing https://github.com/yleeyilin/ip.git (master)... +Jan 30, 2024 6:32:06 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/leepoeaik/ip.git... -Jan 30, 2024 2:09:26 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:06 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/leepoeaik/ip.git to complete... -Jan 30, 2024 2:09:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/bennyLCK/ip.git (master)... -Jan 30, 2024 2:09:26 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/RunjiaChen/ip.git completed! -Jan 30, 2024 2:09:26 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/bennyLCK/ip.git (master) completed! -Jan 30, 2024 2:09:26 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/nichee/ip.git completed! -Jan 30, 2024 2:09:26 AM reposense.report.ReportGenerator analyzeRepos -INFO: [34/428] Analyzing https://github.com/AL-ZT/ip.git (master)... -Jan 30, 2024 2:09:26 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:06 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/yleeyilin/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/yleeyilin/ip.git (master)... +Jan 30, 2024 6:32:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/yleeyilin/ip.git (master)... +Jan 30, 2024 6:32:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/yleeyilin/ip.git (master)... +Jan 30, 2024 6:32:06 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/yleeyilin/ip.git (master) completed! +Jan 30, 2024 6:32:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/RunjiaChen/ip.git completed! +Jan 30, 2024 6:32:06 AM reposense.report.ReportGenerator analyzeRepos +INFO: [49/428] Analyzing https://github.com/RunjiaChen/ip.git (master)... +Jan 30, 2024 6:32:06 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/danielleloh/ip.git... -Jan 30, 2024 2:09:26 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/leeweiming3/ip.git completed! -Jan 30, 2024 2:09:26 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/danielleloh/ip.git to complete... +Jan 30, 2024 6:32:06 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/RunjiaChen/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/RunjiaChen/ip.git (master)... +Jan 30, 2024 6:32:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/nichee/ip.git completed! +Jan 30, 2024 6:32:06 AM reposense.report.ReportGenerator analyzeRepos +INFO: [50/428] Analyzing https://github.com/nichee/ip.git (master)... +Jan 30, 2024 6:32:06 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/wallacexuhanxiao/ip.git... -Jan 30, 2024 2:09:26 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:06 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/wallacexuhanxiao/ip.git to complete... -Jan 30, 2024 2:09:26 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/RunjiaChen/ip.git (master)... +Jan 30, 2024 6:32:06 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/nichee/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/nichee/ip.git (master)... +Jan 30, 2024 6:32:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/RunjiaChen/ip.git (master)... +Jan 30, 2024 6:32:06 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/RunjiaChen/ip.git (master) completed! +Jan 30, 2024 6:32:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/nichee/ip.git (master)... +Jan 30, 2024 6:32:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/nichee/ip.git (master)... +Jan 30, 2024 6:32:06 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/nichee/ip.git (master) completed! +Jan 30, 2024 6:32:07 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/leeweiming3/ip.git completed! +Jan 30, 2024 6:32:07 AM reposense.report.ReportGenerator analyzeRepos +INFO: [51/428] Analyzing https://github.com/leeweiming3/ip.git (master)... +Jan 30, 2024 6:32:07 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/LimZiJia/ip.git... -Jan 30, 2024 2:09:26 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/danielleloh/ip.git to complete... -Jan 30, 2024 2:09:26 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:07 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/LimZiJia/ip.git to complete... -Jan 30, 2024 2:09:26 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AL-ZT/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AL-ZT/ip.git (master)... -Jan 30, 2024 2:09:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Jawad280/ip.git (master)... -Jan 30, 2024 2:09:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/garywongkai/ip.git (master)... -Jan 30, 2024 2:09:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Jawad280/ip.git (master)... -Jan 30, 2024 2:09:27 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Jawad280/ip.git (master) completed! -Jan 30, 2024 2:09:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/garywongkai/ip.git (master)... -Jan 30, 2024 2:09:27 AM reposense.report.ReportGenerator analyzeRepos -INFO: [35/428] Analyzing https://github.com/iynixil/ip.git (master)... -Jan 30, 2024 2:09:27 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/garywongkai/ip.git (master) completed! -Jan 30, 2024 2:09:27 AM reposense.report.ReportGenerator analyzeRepos -INFO: [36/428] Analyzing https://github.com/ys112/ip.git (master)... -Jan 30, 2024 2:09:27 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/iynixil/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/iynixil/ip.git (master)... -Jan 30, 2024 2:09:27 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ys112/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ys112/ip.git (master)... -Jan 30, 2024 2:09:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/sebin0817/ip.git (master)... -Jan 30, 2024 2:09:27 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:07 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/leeweiming3/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/leeweiming3/ip.git (master)... +Jan 30, 2024 6:32:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/leeweiming3/ip.git (master)... +Jan 30, 2024 6:32:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/leeweiming3/ip.git (master)... +Jan 30, 2024 6:32:07 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/leeweiming3/ip.git (master) completed! +Jan 30, 2024 6:32:07 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/leepoeaik/ip.git completed! -Jan 30, 2024 2:09:27 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:07 AM reposense.report.ReportGenerator analyzeRepos +INFO: [52/428] Analyzing https://github.com/leepoeaik/ip.git (master)... +Jan 30, 2024 6:32:07 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/thewongdylan/ip.git... -Jan 30, 2024 2:09:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/sebin0817/ip.git (master)... -Jan 30, 2024 2:09:27 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/sebin0817/ip.git (master) completed! -Jan 30, 2024 2:09:27 AM reposense.report.ReportGenerator analyzeRepos -INFO: [37/428] Analyzing https://github.com/larainezo/ip.git (master)... -Jan 30, 2024 2:09:27 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:07 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/thewongdylan/ip.git to complete... -Jan 30, 2024 2:09:27 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/wallacexuhanxiao/ip.git completed! -Jan 30, 2024 2:09:27 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:07 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/leepoeaik/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/leepoeaik/ip.git (master)... +Jan 30, 2024 6:32:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/leepoeaik/ip.git (master)... +Jan 30, 2024 6:32:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/leepoeaik/ip.git (master)... +Jan 30, 2024 6:32:07 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/leepoeaik/ip.git (master) completed! +Jan 30, 2024 6:32:07 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/danielleloh/ip.git completed! -Jan 30, 2024 2:09:27 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/larainezo/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/larainezo/ip.git (master)... -Jan 30, 2024 2:09:27 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:07 AM reposense.report.ReportGenerator analyzeRepos +INFO: [53/428] Analyzing https://github.com/danielleloh/ip.git (master)... +Jan 30, 2024 6:32:07 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Ryan-Reno/ip.git... -Jan 30, 2024 2:09:27 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:07 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Ryan-Reno/ip.git to complete... +Jan 30, 2024 6:32:07 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/danielleloh/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/danielleloh/ip.git (master)... +Jan 30, 2024 6:32:07 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/wallacexuhanxiao/ip.git completed! +Jan 30, 2024 6:32:07 AM reposense.report.ReportGenerator analyzeRepos +INFO: [54/428] Analyzing https://github.com/wallacexuhanxiao/ip.git (master)... +Jan 30, 2024 6:32:07 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jerremyng/ip.git... -Jan 30, 2024 2:09:27 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:07 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jerremyng/ip.git to complete... -Jan 30, 2024 2:09:27 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Ryan-Reno/ip.git to complete... -Jan 30, 2024 2:09:27 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/LimZiJia/ip.git completed! -Jan 30, 2024 2:09:27 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/marcus-ny/ip.git... -Jan 30, 2024 2:09:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/iynixil/ip.git (master)... -Jan 30, 2024 2:09:27 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/marcus-ny/ip.git to complete... -Jan 30, 2024 2:09:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AL-ZT/ip.git (master)... -Jan 30, 2024 2:09:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/iynixil/ip.git (master)... -Jan 30, 2024 2:09:27 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/iynixil/ip.git (master) completed! -Jan 30, 2024 2:09:27 AM reposense.report.ReportGenerator analyzeRepos -INFO: [38/428] Analyzing https://github.com/acekhoon/ip.git (master)... -Jan 30, 2024 2:09:27 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/danielleloh/ip.git (master)... +Jan 30, 2024 6:32:07 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/wallacexuhanxiao/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/wallacexuhanxiao/ip.git (master)... +Jan 30, 2024 6:32:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/danielleloh/ip.git (master)... +Jan 30, 2024 6:32:07 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/danielleloh/ip.git (master) completed! +Jan 30, 2024 6:32:07 AM reposense.report.RepoCloner waitForCloneProcess 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'... @@ -868,723 +1074,791 @@ fatal: could not read Username for 'https://github.com': No such device or addre at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:829) -Jan 30, 2024 2:09:27 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:07 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/marcus-ny/ip.git... +Jan 30, 2024 6:32:07 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/LimZiJia/ip.git completed! +Jan 30, 2024 6:32:07 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/marcus-ny/ip.git to complete... +Jan 30, 2024 6:32:07 AM reposense.report.ReportGenerator analyzeRepos +INFO: [55/428] Analyzing https://github.com/LimZiJia/ip.git (master)... +Jan 30, 2024 6:32:07 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/wapisai/ip.git... -Jan 30, 2024 2:09:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AL-ZT/ip.git (master)... -Jan 30, 2024 2:09:27 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:07 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/wapisai/ip.git to complete... -Jan 30, 2024 2:09:27 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AL-ZT/ip.git (master) completed! -Jan 30, 2024 2:09:27 AM reposense.report.ReportGenerator analyzeRepos -INFO: [39/428] Analyzing https://github.com/yyccbb/ip.git (master)... -Jan 30, 2024 2:09:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/larainezo/ip.git (master)... -Jan 30, 2024 2:09:27 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/acekhoon/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/acekhoon/ip.git (master)... -Jan 30, 2024 2:09:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/larainezo/ip.git (master)... -Jan 30, 2024 2:09:27 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/larainezo/ip.git (master) completed! -Jan 30, 2024 2:09:27 AM reposense.report.ReportGenerator analyzeRepos -INFO: [40/428] Analyzing https://github.com/AidenLYT/ip.git (master)... -Jan 30, 2024 2:09:27 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/yyccbb/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/yyccbb/ip.git (master)... -Jan 30, 2024 2:09:27 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:07 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/LimZiJia/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/LimZiJia/ip.git (master)... +Jan 30, 2024 6:32:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/wallacexuhanxiao/ip.git (master)... +Jan 30, 2024 6:32:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/wallacexuhanxiao/ip.git (master)... +Jan 30, 2024 6:32:07 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/wallacexuhanxiao/ip.git (master) completed! +Jan 30, 2024 6:32:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/LimZiJia/ip.git (master)... +Jan 30, 2024 6:32:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/LimZiJia/ip.git (master)... +Jan 30, 2024 6:32:07 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/LimZiJia/ip.git (master) completed! +Jan 30, 2024 6:32:08 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/thewongdylan/ip.git completed! -Jan 30, 2024 2:09:27 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:08 AM reposense.report.ReportGenerator analyzeRepos +INFO: [56/428] Analyzing https://github.com/thewongdylan/ip.git (master)... +Jan 30, 2024 6:32:08 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Ty-stan0417/ip.git... -Jan 30, 2024 2:09:27 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:08 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Ty-stan0417/ip.git to complete... -Jan 30, 2024 2:09:27 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AidenLYT/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AidenLYT/ip.git (master)... -Jan 30, 2024 2:09:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/yyccbb/ip.git (master)... -Jan 30, 2024 2:09:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/yyccbb/ip.git (master)... -Jan 30, 2024 2:09:27 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/yyccbb/ip.git (master) completed! -Jan 30, 2024 2:09:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ys112/ip.git (master)... -Jan 30, 2024 2:09:27 AM reposense.report.ReportGenerator analyzeRepos -INFO: [41/428] Analyzing https://github.com/minghowC/ip.git (master)... -Jan 30, 2024 2:09:27 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:08 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/thewongdylan/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/thewongdylan/ip.git (master)... +Jan 30, 2024 6:32:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/thewongdylan/ip.git (master)... +Jan 30, 2024 6:32:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/thewongdylan/ip.git (master)... +Jan 30, 2024 6:32:08 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/thewongdylan/ip.git (master) completed! +Jan 30, 2024 6:32:08 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jerremyng/ip.git completed! -Jan 30, 2024 2:09:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ys112/ip.git (master)... -Jan 30, 2024 2:09:27 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ys112/ip.git (master) completed! -Jan 30, 2024 2:09:27 AM reposense.report.ReportGenerator analyzeRepos -INFO: [42/428] Analyzing https://github.com/Jaspertzx/ip.git (master)... -Jan 30, 2024 2:09:27 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/minghowC/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/minghowC/ip.git (master)... -Jan 30, 2024 2:09:27 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:08 AM reposense.report.ReportGenerator analyzeRepos +INFO: [57/428] Analyzing https://github.com/jerremyng/ip.git (master)... +Jan 30, 2024 6:32:08 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/kjw142857/ip.git... -Jan 30, 2024 2:09:27 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:08 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/kjw142857/ip.git to complete... -Jan 30, 2024 2:09:27 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Jaspertzx/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Jaspertzx/ip.git (master)... -Jan 30, 2024 2:09:27 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:08 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jerremyng/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jerremyng/ip.git (master)... +Jan 30, 2024 6:32:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jerremyng/ip.git (master)... +Jan 30, 2024 6:32:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jerremyng/ip.git (master)... +Jan 30, 2024 6:32:08 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jerremyng/ip.git (master) completed! +Jan 30, 2024 6:32:08 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/marcus-ny/ip.git completed! -Jan 30, 2024 2:09:27 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:08 AM reposense.report.ReportGenerator analyzeRepos +INFO: [58/428] Analyzing https://github.com/marcus-ny/ip.git (master)... +Jan 30, 2024 6:32:08 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ljy0422/ip.git... -Jan 30, 2024 2:09:27 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:08 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ljy0422/ip.git to complete... -Jan 30, 2024 2:09:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/acekhoon/ip.git (master)... -Jan 30, 2024 2:09:27 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:08 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/wapisai/ip.git completed! -Jan 30, 2024 2:09:27 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:08 AM reposense.report.ReportGenerator analyzeRepos +INFO: [59/428] Analyzing https://github.com/wapisai/ip.git (master)... +Jan 30, 2024 6:32:08 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/lokidoki102/ip.git... -Jan 30, 2024 2:09:27 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:08 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/marcus-ny/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/marcus-ny/ip.git (master)... +Jan 30, 2024 6:32:08 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/lokidoki102/ip.git to complete... -Jan 30, 2024 2:09:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/acekhoon/ip.git (master)... -Jan 30, 2024 2:09:27 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/acekhoon/ip.git (master) completed! -Jan 30, 2024 2:09:27 AM reposense.report.ReportGenerator analyzeRepos -INFO: [43/428] Analyzing https://github.com/limrik/ip.git (master)... -Jan 30, 2024 2:09:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/minghowC/ip.git (master)... -Jan 30, 2024 2:09:27 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/limrik/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/limrik/ip.git (master)... -Jan 30, 2024 2:09:27 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:08 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/wapisai/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/wapisai/ip.git (master)... +Jan 30, 2024 6:32:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/marcus-ny/ip.git (master)... +Jan 30, 2024 6:32:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/wapisai/ip.git (master)... +Jan 30, 2024 6:32:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/marcus-ny/ip.git (master)... +Jan 30, 2024 6:32:08 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/marcus-ny/ip.git (master) completed! +Jan 30, 2024 6:32:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/wapisai/ip.git (master)... +Jan 30, 2024 6:32:08 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/wapisai/ip.git (master) completed! +Jan 30, 2024 6:32:08 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Ty-stan0417/ip.git completed! -Jan 30, 2024 2:09:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/minghowC/ip.git (master)... -Jan 30, 2024 2:09:27 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/minghowC/ip.git (master) completed! -Jan 30, 2024 2:09:27 AM reposense.report.ReportGenerator analyzeRepos -INFO: [44/428] Analyzing https://github.com/cyqjoseph/ip.git (master)... -Jan 30, 2024 2:09:27 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:08 AM reposense.report.ReportGenerator analyzeRepos +INFO: [60/428] Analyzing https://github.com/Ty-stan0417/ip.git (master)... +Jan 30, 2024 6:32:08 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/tanguoyang/ip.git... -Jan 30, 2024 2:09:27 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:08 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/tanguoyang/ip.git to complete... -Jan 30, 2024 2:09:27 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/cyqjoseph/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/cyqjoseph/ip.git (master)... -Jan 30, 2024 2:09:27 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:08 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Ty-stan0417/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Ty-stan0417/ip.git (master)... +Jan 30, 2024 6:32:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Ty-stan0417/ip.git (master)... +Jan 30, 2024 6:32:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Ty-stan0417/ip.git (master)... +Jan 30, 2024 6:32:08 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Ty-stan0417/ip.git (master) completed! +Jan 30, 2024 6:32:09 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/kjw142857/ip.git completed! -Jan 30, 2024 2:09:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Jaspertzx/ip.git (master)... -Jan 30, 2024 2:09:27 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:09 AM reposense.report.ReportGenerator analyzeRepos +INFO: [61/428] Analyzing https://github.com/kjw142857/ip.git (master)... +Jan 30, 2024 6:32:09 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/myang2020/ip.git... -Jan 30, 2024 2:09:27 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:09 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/myang2020/ip.git to complete... -Jan 30, 2024 2:09:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AidenLYT/ip.git (master)... -Jan 30, 2024 2:09:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Jaspertzx/ip.git (master)... -Jan 30, 2024 2:09:27 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:09 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/kjw142857/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/kjw142857/ip.git (master)... +Jan 30, 2024 6:32:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/kjw142857/ip.git (master)... +Jan 30, 2024 6:32:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/kjw142857/ip.git (master)... +Jan 30, 2024 6:32:09 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/kjw142857/ip.git (master) completed! +Jan 30, 2024 6:32:09 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ljy0422/ip.git completed! -Jan 30, 2024 2:09:27 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Jaspertzx/ip.git (master) completed! -Jan 30, 2024 2:09:27 AM reposense.report.ReportGenerator analyzeRepos -INFO: [45/428] Analyzing https://github.com/jeong-jaeho/ip.git (master)... -Jan 30, 2024 2:09:27 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:09 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/lokidoki102/ip.git completed! +Jan 30, 2024 6:32:09 AM reposense.report.ReportGenerator analyzeRepos +INFO: [62/428] Analyzing https://github.com/ljy0422/ip.git (master)... +Jan 30, 2024 6:32:09 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jaejayrome/ip.git... -Jan 30, 2024 2:09:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AidenLYT/ip.git (master)... -Jan 30, 2024 2:09:27 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AidenLYT/ip.git (master) completed! -Jan 30, 2024 2:09:27 AM reposense.report.ReportGenerator analyzeRepos -INFO: [46/428] Analyzing https://github.com/iamtr/ip.git (master)... -Jan 30, 2024 2:09:27 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:09 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jaejayrome/ip.git to complete... -Jan 30, 2024 2:09:27 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/lokidoki102/ip.git completed! -Jan 30, 2024 2:09:27 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jeong-jaeho/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jeong-jaeho/ip.git (master)... -Jan 30, 2024 2:09:27 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:09 AM reposense.report.ReportGenerator analyzeRepos +INFO: [63/428] Analyzing https://github.com/lokidoki102/ip.git (master)... +Jan 30, 2024 6:32:09 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/cocoanautz/ip.git... -Jan 30, 2024 2:09:27 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/iamtr/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/iamtr/ip.git (master)... -Jan 30, 2024 2:09:28 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:09 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/cocoanautz/ip.git to complete... -Jan 30, 2024 2:09:28 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:09 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ljy0422/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ljy0422/ip.git (master)... +Jan 30, 2024 6:32:09 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/lokidoki102/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/lokidoki102/ip.git (master)... +Jan 30, 2024 6:32:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ljy0422/ip.git (master)... +Jan 30, 2024 6:32:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ljy0422/ip.git (master)... +Jan 30, 2024 6:32:09 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ljy0422/ip.git (master) completed! +Jan 30, 2024 6:32:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/lokidoki102/ip.git (master)... +Jan 30, 2024 6:32:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/lokidoki102/ip.git (master)... +Jan 30, 2024 6:32:09 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/lokidoki102/ip.git (master) completed! +Jan 30, 2024 6:32:09 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/tanguoyang/ip.git completed! -Jan 30, 2024 2:09:28 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:09 AM reposense.report.ReportGenerator analyzeRepos +INFO: [64/428] Analyzing https://github.com/tanguoyang/ip.git (master)... +Jan 30, 2024 6:32:09 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/kaitinghh/ip.git... -Jan 30, 2024 2:09:28 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:09 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/kaitinghh/ip.git to complete... -Jan 30, 2024 2:09:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jeong-jaeho/ip.git (master)... -Jan 30, 2024 2:09:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jeong-jaeho/ip.git (master)... -Jan 30, 2024 2:09:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/iamtr/ip.git (master)... -Jan 30, 2024 2:09:28 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jeong-jaeho/ip.git (master) completed! -Jan 30, 2024 2:09:28 AM reposense.report.ReportGenerator analyzeRepos -INFO: [47/428] Analyzing https://github.com/wilsonwid/ip.git (master)... -Jan 30, 2024 2:09:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/iamtr/ip.git (master)... -Jan 30, 2024 2:09:28 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/iamtr/ip.git (master) completed! -Jan 30, 2024 2:09:28 AM reposense.report.ReportGenerator analyzeRepos -INFO: [48/428] Analyzing https://github.com/yleeyilin/ip.git (master)... -Jan 30, 2024 2:09:28 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/wilsonwid/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/wilsonwid/ip.git (master)... -Jan 30, 2024 2:09:28 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:09 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/tanguoyang/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/tanguoyang/ip.git (master)... +Jan 30, 2024 6:32:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/tanguoyang/ip.git (master)... +Jan 30, 2024 6:32:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/tanguoyang/ip.git (master)... +Jan 30, 2024 6:32:09 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/tanguoyang/ip.git (master) completed! +Jan 30, 2024 6:32:09 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/myang2020/ip.git completed! -Jan 30, 2024 2:09:28 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:09 AM reposense.report.ReportGenerator analyzeRepos +INFO: [65/428] Analyzing https://github.com/myang2020/ip.git (master)... +Jan 30, 2024 6:32:09 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/1rbg/ip.git... -Jan 30, 2024 2:09:28 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:09 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/1rbg/ip.git to complete... -Jan 30, 2024 2:09:28 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/yleeyilin/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/yleeyilin/ip.git (master)... -Jan 30, 2024 2:09:28 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:09 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/myang2020/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/myang2020/ip.git (master)... +Jan 30, 2024 6:32:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/myang2020/ip.git (master)... +Jan 30, 2024 6:32:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/myang2020/ip.git (master)... +Jan 30, 2024 6:32:09 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/myang2020/ip.git (master) completed! +Jan 30, 2024 6:32:10 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jaejayrome/ip.git completed! -Jan 30, 2024 2:09:28 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/benson1029/ip.git... -Jan 30, 2024 2:09:28 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:10 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/cocoanautz/ip.git completed! -Jan 30, 2024 2:09:28 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:10 AM reposense.report.ReportGenerator analyzeRepos +INFO: [66/428] Analyzing https://github.com/jaejayrome/ip.git (master)... +Jan 30, 2024 6:32:10 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/benson1029/ip.git... +Jan 30, 2024 6:32:10 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/benson1029/ip.git to complete... -Jan 30, 2024 2:09:28 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:10 AM reposense.report.ReportGenerator analyzeRepos +INFO: [67/428] Analyzing https://github.com/cocoanautz/ip.git (master)... +Jan 30, 2024 6:32:10 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/CaptainKeqing/ip.git... -Jan 30, 2024 2:09:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/limrik/ip.git (master)... -Jan 30, 2024 2:09:28 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/kaitinghh/ip.git completed! -Jan 30, 2024 2:09:28 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:10 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/CaptainKeqing/ip.git to complete... -Jan 30, 2024 2:09:28 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:10 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jaejayrome/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jaejayrome/ip.git (master)... +Jan 30, 2024 6:32:10 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/cocoanautz/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/cocoanautz/ip.git (master)... +Jan 30, 2024 6:32:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/cocoanautz/ip.git (master)... +Jan 30, 2024 6:32:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/cocoanautz/ip.git (master)... +Jan 30, 2024 6:32:10 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/cocoanautz/ip.git (master) completed! +Jan 30, 2024 6:32:10 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/kaitinghh/ip.git completed! +Jan 30, 2024 6:32:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jaejayrome/ip.git (master)... +Jan 30, 2024 6:32:10 AM reposense.report.ReportGenerator analyzeRepos +INFO: [68/428] Analyzing https://github.com/kaitinghh/ip.git (master)... +Jan 30, 2024 6:32:10 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/yuechen2001/ip.git... -Jan 30, 2024 2:09:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/limrik/ip.git (master)... -Jan 30, 2024 2:09:28 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:10 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/yuechen2001/ip.git to complete... -Jan 30, 2024 2:09:28 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/limrik/ip.git (master) completed! -Jan 30, 2024 2:09:28 AM reposense.report.ReportGenerator analyzeRepos -INFO: [49/428] Analyzing https://github.com/nichee/ip.git (master)... -Jan 30, 2024 2:09:28 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/nichee/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/nichee/ip.git (master)... -Jan 30, 2024 2:09:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/cyqjoseph/ip.git (master)... -Jan 30, 2024 2:09:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/cyqjoseph/ip.git (master)... -Jan 30, 2024 2:09:28 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/cyqjoseph/ip.git (master) completed! -Jan 30, 2024 2:09:28 AM reposense.report.ReportGenerator analyzeRepos -INFO: [50/428] Analyzing https://github.com/RunjiaChen/ip.git (master)... -Jan 30, 2024 2:09:28 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jaejayrome/ip.git (master)... +Jan 30, 2024 6:32:10 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jaejayrome/ip.git (master) completed! +Jan 30, 2024 6:32:10 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/kaitinghh/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/kaitinghh/ip.git (master)... +Jan 30, 2024 6:32:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/kaitinghh/ip.git (master)... +Jan 30, 2024 6:32:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/kaitinghh/ip.git (master)... +Jan 30, 2024 6:32:10 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/kaitinghh/ip.git (master) completed! +Jan 30, 2024 6:32:10 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/1rbg/ip.git completed! -Jan 30, 2024 2:09:28 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/RunjiaChen/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/RunjiaChen/ip.git (master)... -Jan 30, 2024 2:09:28 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:10 AM reposense.report.ReportGenerator analyzeRepos +INFO: [69/428] Analyzing https://github.com/1rbg/ip.git (master)... +Jan 30, 2024 6:32:10 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/wang-xinrong/ip.git... -Jan 30, 2024 2:09:28 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:10 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/wang-xinrong/ip.git to complete... -Jan 30, 2024 2:09:28 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/benson1029/ip.git completed! -Jan 30, 2024 2:09:28 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:10 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/1rbg/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/1rbg/ip.git (master)... +Jan 30, 2024 6:32:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/1rbg/ip.git (master)... +Jan 30, 2024 6:32:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/1rbg/ip.git (master)... +Jan 30, 2024 6:32:10 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/1rbg/ip.git (master) completed! +Jan 30, 2024 6:32:10 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/CaptainKeqing/ip.git completed! +Jan 30, 2024 6:32:10 AM reposense.report.ReportGenerator analyzeRepos +INFO: [70/428] Analyzing https://github.com/CaptainKeqing/ip.git (master)... +Jan 30, 2024 6:32:10 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jiahui0309/ip.git... -Jan 30, 2024 2:09:28 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:10 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jiahui0309/ip.git to complete... -Jan 30, 2024 2:09:28 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/CaptainKeqing/ip.git completed! -Jan 30, 2024 2:09:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/yleeyilin/ip.git (master)... -Jan 30, 2024 2:09:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/RunjiaChen/ip.git (master)... -Jan 30, 2024 2:09:28 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/yuechen2001/ip.git completed! -Jan 30, 2024 2:09:28 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:10 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/CaptainKeqing/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/CaptainKeqing/ip.git (master)... +Jan 30, 2024 6:32:10 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/benson1029/ip.git completed! +Jan 30, 2024 6:32:10 AM reposense.report.ReportGenerator analyzeRepos +INFO: [71/428] Analyzing https://github.com/benson1029/ip.git (master)... +Jan 30, 2024 6:32:10 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/TheodoreKooo/ip.git... -Jan 30, 2024 2:09:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/RunjiaChen/ip.git (master)... -Jan 30, 2024 2:09:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/yleeyilin/ip.git (master)... -Jan 30, 2024 2:09:28 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/RunjiaChen/ip.git (master) completed! -Jan 30, 2024 2:09:28 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/kokerinks/ip.git... -Jan 30, 2024 2:09:28 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/yleeyilin/ip.git (master) completed! -Jan 30, 2024 2:09:28 AM reposense.report.ReportGenerator analyzeRepos -INFO: [51/428] Analyzing https://github.com/leeweiming3/ip.git (master)... -Jan 30, 2024 2:09:28 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:10 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/TheodoreKooo/ip.git to complete... -Jan 30, 2024 2:09:28 AM reposense.report.ReportGenerator analyzeRepos -INFO: [52/428] Analyzing https://github.com/leepoeaik/ip.git (master)... -Jan 30, 2024 2:09:28 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:10 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/benson1029/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/benson1029/ip.git (master)... +Jan 30, 2024 6:32:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/CaptainKeqing/ip.git (master)... +Jan 30, 2024 6:32:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/CaptainKeqing/ip.git (master)... +Jan 30, 2024 6:32:11 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/CaptainKeqing/ip.git (master) completed! +Jan 30, 2024 6:32:11 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/yuechen2001/ip.git completed! +Jan 30, 2024 6:32:11 AM reposense.report.ReportGenerator analyzeRepos +INFO: [72/428] Analyzing https://github.com/yuechen2001/ip.git (master)... +Jan 30, 2024 6:32:11 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/kokerinks/ip.git... +Jan 30, 2024 6:32:11 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/kokerinks/ip.git to complete... -Jan 30, 2024 2:09:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/nichee/ip.git (master)... -Jan 30, 2024 2:09:28 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/leeweiming3/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/leeweiming3/ip.git (master)... -Jan 30, 2024 2:09:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/nichee/ip.git (master)... -Jan 30, 2024 2:09:28 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/nichee/ip.git (master) completed! -Jan 30, 2024 2:09:28 AM reposense.report.ReportGenerator analyzeRepos -INFO: [53/428] Analyzing https://github.com/wallacexuhanxiao/ip.git (master)... -Jan 30, 2024 2:09:28 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/leepoeaik/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/leepoeaik/ip.git (master)... -Jan 30, 2024 2:09:28 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/wallacexuhanxiao/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/wallacexuhanxiao/ip.git (master)... -Jan 30, 2024 2:09:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/wilsonwid/ip.git (master)... -Jan 30, 2024 2:09:28 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:11 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/yuechen2001/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/yuechen2001/ip.git (master)... +Jan 30, 2024 6:32:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/benson1029/ip.git (master)... +Jan 30, 2024 6:32:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/benson1029/ip.git (master)... +Jan 30, 2024 6:32:11 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/benson1029/ip.git (master) completed! +Jan 30, 2024 6:32:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/yuechen2001/ip.git (master)... +Jan 30, 2024 6:32:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/yuechen2001/ip.git (master)... +Jan 30, 2024 6:32:11 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/yuechen2001/ip.git (master) completed! +Jan 30, 2024 6:32:11 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/wang-xinrong/ip.git completed! -Jan 30, 2024 2:09:28 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:11 AM reposense.report.ReportGenerator analyzeRepos +INFO: [73/428] Analyzing https://github.com/wang-xinrong/ip.git (master)... +Jan 30, 2024 6:32:11 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Ella-e/ip.git... -Jan 30, 2024 2:09:28 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:11 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Ella-e/ip.git to complete... -Jan 30, 2024 2:09:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/leepoeaik/ip.git (master)... -Jan 30, 2024 2:09:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/wilsonwid/ip.git (master)... -Jan 30, 2024 2:09:28 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:11 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/wang-xinrong/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/wang-xinrong/ip.git (master)... +Jan 30, 2024 6:32:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/wang-xinrong/ip.git (master)... +Jan 30, 2024 6:32:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/wang-xinrong/ip.git (master)... +Jan 30, 2024 6:32:11 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/wang-xinrong/ip.git (master) completed! +Jan 30, 2024 6:32:11 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jiahui0309/ip.git completed! -Jan 30, 2024 2:09:28 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/wilsonwid/ip.git (master) completed! -Jan 30, 2024 2:09:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/leepoeaik/ip.git (master)... -Jan 30, 2024 2:09:28 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/leepoeaik/ip.git (master) completed! -Jan 30, 2024 2:09:28 AM reposense.report.ReportGenerator analyzeRepos -INFO: [54/428] Analyzing https://github.com/danielleloh/ip.git (master)... -Jan 30, 2024 2:09:28 AM reposense.report.ReportGenerator analyzeRepos -INFO: [55/428] Analyzing https://github.com/LimZiJia/ip.git (master)... -Jan 30, 2024 2:09:28 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:11 AM reposense.report.ReportGenerator analyzeRepos +INFO: [74/428] Analyzing https://github.com/jiahui0309/ip.git (master)... +Jan 30, 2024 6:32:11 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ForAeons/ip.git... -Jan 30, 2024 2:09:28 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:11 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ForAeons/ip.git to complete... -Jan 30, 2024 2:09:28 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/LimZiJia/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/LimZiJia/ip.git (master)... -Jan 30, 2024 2:09:28 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/danielleloh/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/danielleloh/ip.git (master)... -Jan 30, 2024 2:09:28 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:11 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jiahui0309/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jiahui0309/ip.git (master)... +Jan 30, 2024 6:32:11 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/TheodoreKooo/ip.git completed! -Jan 30, 2024 2:09:28 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/kokerinks/ip.git completed! -Jan 30, 2024 2:09:28 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:11 AM reposense.report.ReportGenerator analyzeRepos +INFO: [75/428] Analyzing https://github.com/TheodoreKooo/ip.git (master)... +Jan 30, 2024 6:32:11 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/solomonng2001/ip.git... -Jan 30, 2024 2:09:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/leeweiming3/ip.git (master)... -Jan 30, 2024 2:09:28 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Xuyan0518/ip.git... -Jan 30, 2024 2:09:28 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:11 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/solomonng2001/ip.git to complete... -Jan 30, 2024 2:09:28 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:11 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/TheodoreKooo/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/TheodoreKooo/ip.git (master)... +Jan 30, 2024 6:32:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/TheodoreKooo/ip.git (master)... +Jan 30, 2024 6:32:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/TheodoreKooo/ip.git (master)... +Jan 30, 2024 6:32:11 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/TheodoreKooo/ip.git (master) completed! +Jan 30, 2024 6:32:11 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/kokerinks/ip.git completed! +Jan 30, 2024 6:32:11 AM reposense.report.ReportGenerator analyzeRepos +INFO: [76/428] Analyzing https://github.com/kokerinks/ip.git (master)... +Jan 30, 2024 6:32:11 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Xuyan0518/ip.git... +Jan 30, 2024 6:32:11 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Xuyan0518/ip.git to complete... -Jan 30, 2024 2:09:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/leeweiming3/ip.git (master)... -Jan 30, 2024 2:09:28 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/leeweiming3/ip.git (master) completed! -Jan 30, 2024 2:09:28 AM reposense.report.ReportGenerator analyzeRepos -INFO: [56/428] Analyzing https://github.com/thewongdylan/ip.git (master)... -Jan 30, 2024 2:09:28 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/thewongdylan/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/thewongdylan/ip.git (master)... -Jan 30, 2024 2:09:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/danielleloh/ip.git (master)... -Jan 30, 2024 2:09:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/danielleloh/ip.git (master)... -Jan 30, 2024 2:09:29 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/danielleloh/ip.git (master) completed! -Jan 30, 2024 2:09:29 AM reposense.report.ReportGenerator analyzeRepos -INFO: [57/428] Analyzing https://github.com/jerremyng/ip.git (master)... -Jan 30, 2024 2:09:29 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jiahui0309/ip.git (master)... +Jan 30, 2024 6:32:11 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/kokerinks/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/kokerinks/ip.git (master)... +Jan 30, 2024 6:32:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jiahui0309/ip.git (master)... +Jan 30, 2024 6:32:11 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jiahui0309/ip.git (master) completed! +Jan 30, 2024 6:32:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/kokerinks/ip.git (master)... +Jan 30, 2024 6:32:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/kokerinks/ip.git (master)... +Jan 30, 2024 6:32:11 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/kokerinks/ip.git (master) completed! +Jan 30, 2024 6:32:12 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Ella-e/ip.git completed! -Jan 30, 2024 2:09:29 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:12 AM reposense.report.ReportGenerator analyzeRepos +INFO: [77/428] Analyzing https://github.com/Ella-e/ip.git (master)... +Jan 30, 2024 6:32:12 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/justinlengch/ip.git... -Jan 30, 2024 2:09:29 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:12 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/justinlengch/ip.git to complete... -Jan 30, 2024 2:09:29 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:12 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Ella-e/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Ella-e/ip.git (master)... +Jan 30, 2024 6:32:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Ella-e/ip.git (master)... +Jan 30, 2024 6:32:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Ella-e/ip.git (master)... +Jan 30, 2024 6:32:12 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Ella-e/ip.git (master) completed! +Jan 30, 2024 6:32:12 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ForAeons/ip.git completed! -Jan 30, 2024 2:09:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/LimZiJia/ip.git (master)... -Jan 30, 2024 2:09:29 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jerremyng/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jerremyng/ip.git (master)... -Jan 30, 2024 2:09:29 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:12 AM reposense.report.ReportGenerator analyzeRepos +INFO: [78/428] Analyzing https://github.com/ForAeons/ip.git (master)... +Jan 30, 2024 6:32:12 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jjchee77/ip.git... -Jan 30, 2024 2:09:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/LimZiJia/ip.git (master)... -Jan 30, 2024 2:09:29 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/LimZiJia/ip.git (master) completed! -Jan 30, 2024 2:09:29 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:12 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jjchee77/ip.git to complete... -Jan 30, 2024 2:09:29 AM reposense.report.ReportGenerator analyzeRepos -INFO: [58/428] Analyzing https://github.com/marcus-ny/ip.git (master)... -Jan 30, 2024 2:09:29 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/marcus-ny/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/marcus-ny/ip.git (master)... -Jan 30, 2024 2:09:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/thewongdylan/ip.git (master)... -Jan 30, 2024 2:09:29 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Xuyan0518/ip.git completed! -Jan 30, 2024 2:09:29 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ronnnnnnnnn/ip.git... -Jan 30, 2024 2:09:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/thewongdylan/ip.git (master)... -Jan 30, 2024 2:09:29 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/thewongdylan/ip.git (master) completed! -Jan 30, 2024 2:09:29 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:12 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ForAeons/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ForAeons/ip.git (master)... +Jan 30, 2024 6:32:12 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/solomonng2001/ip.git completed! -Jan 30, 2024 2:09:29 AM reposense.report.ReportGenerator analyzeRepos -INFO: [59/428] Analyzing https://github.com/wapisai/ip.git (master)... -Jan 30, 2024 2:09:29 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:12 AM reposense.report.ReportGenerator analyzeRepos +INFO: [79/428] Analyzing https://github.com/solomonng2001/ip.git (master)... +Jan 30, 2024 6:32:12 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ronnnnnnnnn/ip.git... +Jan 30, 2024 6:32:12 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ronnnnnnnnn/ip.git to complete... -Jan 30, 2024 2:09:29 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:12 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/solomonng2001/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/solomonng2001/ip.git (master)... +Jan 30, 2024 6:32:12 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Xuyan0518/ip.git completed! +Jan 30, 2024 6:32:12 AM reposense.report.ReportGenerator analyzeRepos +INFO: [80/428] Analyzing https://github.com/Xuyan0518/ip.git (master)... +Jan 30, 2024 6:32:12 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/dayn-1/ip.git... -Jan 30, 2024 2:09:29 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:12 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/dayn-1/ip.git to complete... -Jan 30, 2024 2:09:29 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/wapisai/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/wapisai/ip.git (master)... -Jan 30, 2024 2:09:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jerremyng/ip.git (master)... -Jan 30, 2024 2:09:29 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:12 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Xuyan0518/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Xuyan0518/ip.git (master)... +Jan 30, 2024 6:32:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Xuyan0518/ip.git (master)... +Jan 30, 2024 6:32:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Xuyan0518/ip.git (master)... +Jan 30, 2024 6:32:12 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Xuyan0518/ip.git (master) completed! +Jan 30, 2024 6:32:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/solomonng2001/ip.git (master)... +Jan 30, 2024 6:32:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/solomonng2001/ip.git (master)... +Jan 30, 2024 6:32:12 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/solomonng2001/ip.git (master) completed! +Jan 30, 2024 6:32:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ForAeons/ip.git (master)... +Jan 30, 2024 6:32:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ForAeons/ip.git (master)... +Jan 30, 2024 6:32:12 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ForAeons/ip.git (master) completed! +Jan 30, 2024 6:32:12 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/justinlengch/ip.git completed! -Jan 30, 2024 2:09:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/wallacexuhanxiao/ip.git (master)... -Jan 30, 2024 2:09:29 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jjchee77/ip.git completed! -Jan 30, 2024 2:09:29 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:12 AM reposense.report.ReportGenerator analyzeRepos +INFO: [81/428] Analyzing https://github.com/justinlengch/ip.git (master)... +Jan 30, 2024 6:32:12 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/NeoHW/ip.git... -Jan 30, 2024 2:09:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jerremyng/ip.git (master)... -Jan 30, 2024 2:09:29 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jerremyng/ip.git (master) completed! -Jan 30, 2024 2:09:29 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:12 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/NeoHW/ip.git to complete... -Jan 30, 2024 2:09:29 AM reposense.report.ReportGenerator analyzeRepos -INFO: [60/428] Analyzing https://github.com/Ty-stan0417/ip.git (master)... -Jan 30, 2024 2:09:29 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:13 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/justinlengch/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/justinlengch/ip.git (master)... +Jan 30, 2024 6:32:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/justinlengch/ip.git (master)... +Jan 30, 2024 6:32:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/justinlengch/ip.git (master)... +Jan 30, 2024 6:32:13 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/justinlengch/ip.git (master) completed! +Jan 30, 2024 6:32:13 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jjchee77/ip.git completed! +Jan 30, 2024 6:32:13 AM reposense.report.ReportGenerator analyzeRepos +INFO: [82/428] Analyzing https://github.com/jjchee77/ip.git (master)... +Jan 30, 2024 6:32:13 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/tituschewxj/ip.git... -Jan 30, 2024 2:09:29 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/tituschewxj/ip.git to complete... -Jan 30, 2024 2:09:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/wallacexuhanxiao/ip.git (master)... -Jan 30, 2024 2:09:29 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/wallacexuhanxiao/ip.git (master) completed! -Jan 30, 2024 2:09:29 AM reposense.report.ReportGenerator analyzeRepos -INFO: [61/428] Analyzing https://github.com/kjw142857/ip.git (master)... -Jan 30, 2024 2:09:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/marcus-ny/ip.git (master)... -Jan 30, 2024 2:09:29 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Ty-stan0417/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Ty-stan0417/ip.git (master)... -Jan 30, 2024 2:09:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/marcus-ny/ip.git (master)... -Jan 30, 2024 2:09:29 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/marcus-ny/ip.git (master) completed! -Jan 30, 2024 2:09:29 AM reposense.report.ReportGenerator analyzeRepos -INFO: [62/428] Analyzing https://github.com/ljy0422/ip.git (master)... -Jan 30, 2024 2:09:29 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/kjw142857/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/kjw142857/ip.git (master)... -Jan 30, 2024 2:09:29 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ljy0422/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ljy0422/ip.git (master)... -Jan 30, 2024 2:09:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/wapisai/ip.git (master)... -Jan 30, 2024 2:09:29 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:13 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jjchee77/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jjchee77/ip.git (master)... +Jan 30, 2024 6:32:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jjchee77/ip.git (master)... +Jan 30, 2024 6:32:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jjchee77/ip.git (master)... +Jan 30, 2024 6:32:13 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jjchee77/ip.git (master) completed! +Jan 30, 2024 6:32:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ronnnnnnnnn/ip.git completed! -Jan 30, 2024 2:09:29 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:13 AM reposense.report.ReportGenerator analyzeRepos +INFO: [83/428] Analyzing https://github.com/ronnnnnnnnn/ip.git (master)... +Jan 30, 2024 6:32:13 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/choowengyan/ip.git... -Jan 30, 2024 2:09:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/wapisai/ip.git (master)... -Jan 30, 2024 2:09:29 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/dayn-1/ip.git completed! -Jan 30, 2024 2:09:29 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/wapisai/ip.git (master) completed! -Jan 30, 2024 2:09:29 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/choowengyan/ip.git to complete... -Jan 30, 2024 2:09:29 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:13 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ronnnnnnnnn/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ronnnnnnnnn/ip.git (master)... +Jan 30, 2024 6:32:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ronnnnnnnnn/ip.git (master)... +Jan 30, 2024 6:32:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ronnnnnnnnn/ip.git (master)... +Jan 30, 2024 6:32:13 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ronnnnnnnnn/ip.git (master) completed! +Jan 30, 2024 6:32:13 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/dayn-1/ip.git completed! +Jan 30, 2024 6:32:13 AM reposense.report.ReportGenerator analyzeRepos +INFO: [84/428] Analyzing https://github.com/dayn-1/ip.git (master)... +Jan 30, 2024 6:32:13 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/guanquann/ip.git... -Jan 30, 2024 2:09:29 AM reposense.report.ReportGenerator analyzeRepos -INFO: [63/428] Analyzing https://github.com/lokidoki102/ip.git (master)... -Jan 30, 2024 2:09:29 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/guanquann/ip.git to complete... -Jan 30, 2024 2:09:29 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/lokidoki102/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/lokidoki102/ip.git (master)... -Jan 30, 2024 2:09:29 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tituschewxj/ip.git completed! -Jan 30, 2024 2:09:29 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:13 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/dayn-1/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/dayn-1/ip.git (master)... +Jan 30, 2024 6:32:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/dayn-1/ip.git (master)... +Jan 30, 2024 6:32:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/dayn-1/ip.git (master)... +Jan 30, 2024 6:32:13 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/dayn-1/ip.git (master) completed! +Jan 30, 2024 6:32:13 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/NeoHW/ip.git completed! +Jan 30, 2024 6:32:13 AM reposense.report.ReportGenerator analyzeRepos +INFO: [85/428] Analyzing https://github.com/NeoHW/ip.git (master)... +Jan 30, 2024 6:32:13 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Hibeom0929/ip.git... -Jan 30, 2024 2:09:29 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Hibeom0929/ip.git to complete... -Jan 30, 2024 2:09:29 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/NeoHW/ip.git completed! -Jan 30, 2024 2:09:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/kjw142857/ip.git (master)... -Jan 30, 2024 2:09:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ljy0422/ip.git (master)... -Jan 30, 2024 2:09:29 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:13 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/NeoHW/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/NeoHW/ip.git (master)... +Jan 30, 2024 6:32:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/NeoHW/ip.git (master)... +Jan 30, 2024 6:32:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/NeoHW/ip.git (master)... +Jan 30, 2024 6:32:14 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/NeoHW/ip.git (master) completed! +Jan 30, 2024 6:32:14 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tituschewxj/ip.git completed! +Jan 30, 2024 6:32:14 AM reposense.report.ReportGenerator analyzeRepos +INFO: [86/428] Analyzing https://github.com/tituschewxj/ip.git (master)... +Jan 30, 2024 6:32:14 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/JukeBoxK/ip.git... -Jan 30, 2024 2:09:29 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/JukeBoxK/ip.git to complete... -Jan 30, 2024 2:09:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/kjw142857/ip.git (master)... -Jan 30, 2024 2:09:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ljy0422/ip.git (master)... -Jan 30, 2024 2:09:29 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/kjw142857/ip.git (master) completed! -Jan 30, 2024 2:09:29 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ljy0422/ip.git (master) completed! -Jan 30, 2024 2:09:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Ty-stan0417/ip.git (master)... -Jan 30, 2024 2:09:29 AM reposense.report.ReportGenerator analyzeRepos -INFO: [64/428] Analyzing https://github.com/tanguoyang/ip.git (master)... -Jan 30, 2024 2:09:29 AM reposense.report.ReportGenerator analyzeRepos -INFO: [65/428] Analyzing https://github.com/myang2020/ip.git (master)... -Jan 30, 2024 2:09:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Ty-stan0417/ip.git (master)... -Jan 30, 2024 2:09:29 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Ty-stan0417/ip.git (master) completed! -Jan 30, 2024 2:09:29 AM reposense.report.ReportGenerator analyzeRepos -INFO: [66/428] Analyzing https://github.com/jaejayrome/ip.git (master)... -Jan 30, 2024 2:09:29 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/myang2020/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/myang2020/ip.git (master)... -Jan 30, 2024 2:09:29 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/tanguoyang/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/tanguoyang/ip.git (master)... -Jan 30, 2024 2:09:29 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jaejayrome/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jaejayrome/ip.git (master)... -Jan 30, 2024 2:09:29 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:14 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/tituschewxj/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/tituschewxj/ip.git (master)... +Jan 30, 2024 6:32:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/choowengyan/ip.git completed! -Jan 30, 2024 2:09:29 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:14 AM reposense.report.ReportGenerator analyzeRepos +INFO: [87/428] Analyzing https://github.com/choowengyan/ip.git (master)... +Jan 30, 2024 6:32:14 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/lynnetteeee/ip.git... -Jan 30, 2024 2:09:29 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/lynnetteeee/ip.git to complete... -Jan 30, 2024 2:09:29 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:14 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/choowengyan/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/choowengyan/ip.git (master)... +Jan 30, 2024 6:32:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/choowengyan/ip.git (master)... +Jan 30, 2024 6:32:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/choowengyan/ip.git (master)... +Jan 30, 2024 6:32:14 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/choowengyan/ip.git (master) completed! +Jan 30, 2024 6:32:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/guanquann/ip.git completed! -Jan 30, 2024 2:09:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/lokidoki102/ip.git (master)... -Jan 30, 2024 2:09:29 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:14 AM reposense.report.ReportGenerator analyzeRepos +INFO: [88/428] Analyzing https://github.com/guanquann/ip.git (master)... +Jan 30, 2024 6:32:14 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/tamagochuuu/ip.git... -Jan 30, 2024 2:09:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/tanguoyang/ip.git (master)... -Jan 30, 2024 2:09:29 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/tamagochuuu/ip.git to complete... -Jan 30, 2024 2:09:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/lokidoki102/ip.git (master)... -Jan 30, 2024 2:09:29 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/lokidoki102/ip.git (master) completed! -Jan 30, 2024 2:09:29 AM reposense.report.ReportGenerator analyzeRepos -INFO: [67/428] Analyzing https://github.com/cocoanautz/ip.git (master)... -Jan 30, 2024 2:09:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/tanguoyang/ip.git (master)... -Jan 30, 2024 2:09:29 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/tanguoyang/ip.git (master) completed! -Jan 30, 2024 2:09:29 AM reposense.report.ReportGenerator analyzeRepos -INFO: [68/428] Analyzing https://github.com/kaitinghh/ip.git (master)... -Jan 30, 2024 2:09:29 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/cocoanautz/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/cocoanautz/ip.git (master)... -Jan 30, 2024 2:09:29 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:14 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/guanquann/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/guanquann/ip.git (master)... +Jan 30, 2024 6:32:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/tituschewxj/ip.git (master)... +Jan 30, 2024 6:32:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/tituschewxj/ip.git (master)... +Jan 30, 2024 6:32:14 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/tituschewxj/ip.git (master) completed! +Jan 30, 2024 6:32:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/guanquann/ip.git (master)... +Jan 30, 2024 6:32:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/guanquann/ip.git (master)... +Jan 30, 2024 6:32:14 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/guanquann/ip.git (master) completed! +Jan 30, 2024 6:32:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Hibeom0929/ip.git completed! -Jan 30, 2024 2:09:29 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:14 AM reposense.report.ReportGenerator analyzeRepos +INFO: [89/428] Analyzing https://github.com/Hibeom0929/ip.git (master)... +Jan 30, 2024 6:32:14 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/owenong1/ip.git... -Jan 30, 2024 2:09:29 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/kaitinghh/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/kaitinghh/ip.git (master)... -Jan 30, 2024 2:09:29 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/JukeBoxK/ip.git completed! -Jan 30, 2024 2:09:29 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/owenong1/ip.git to complete... -Jan 30, 2024 2:09:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/myang2020/ip.git (master)... -Jan 30, 2024 2:09:29 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:14 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Hibeom0929/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Hibeom0929/ip.git (master)... +Jan 30, 2024 6:32:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Hibeom0929/ip.git (master)... +Jan 30, 2024 6:32:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Hibeom0929/ip.git (master)... +Jan 30, 2024 6:32:14 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Hibeom0929/ip.git (master) completed! +Jan 30, 2024 6:32:14 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/JukeBoxK/ip.git completed! +Jan 30, 2024 6:32:14 AM reposense.report.ReportGenerator analyzeRepos +INFO: [90/428] Analyzing https://github.com/JukeBoxK/ip.git (master)... +Jan 30, 2024 6:32:14 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/willowisp01/ip.git... -Jan 30, 2024 2:09:29 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/willowisp01/ip.git to complete... -Jan 30, 2024 2:09:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/myang2020/ip.git (master)... -Jan 30, 2024 2:09:29 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/myang2020/ip.git (master) completed! -Jan 30, 2024 2:09:29 AM reposense.report.ReportGenerator analyzeRepos -INFO: [69/428] Analyzing https://github.com/1rbg/ip.git (master)... -Jan 30, 2024 2:09:30 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/1rbg/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/1rbg/ip.git (master)... -Jan 30, 2024 2:09:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/kaitinghh/ip.git (master)... -Jan 30, 2024 2:09:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/cocoanautz/ip.git (master)... -Jan 30, 2024 2:09:30 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:14 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/JukeBoxK/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/JukeBoxK/ip.git (master)... +Jan 30, 2024 6:32:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/JukeBoxK/ip.git (master)... +Jan 30, 2024 6:32:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/lynnetteeee/ip.git completed! -Jan 30, 2024 2:09:30 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tamagochuuu/ip.git completed! -Jan 30, 2024 2:09:30 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:14 AM reposense.report.ReportGenerator analyzeRepos +INFO: [91/428] Analyzing https://github.com/lynnetteeee/ip.git (master)... +Jan 30, 2024 6:32:14 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/HongRay/ip.git... -Jan 30, 2024 2:09:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/kaitinghh/ip.git (master)... -Jan 30, 2024 2:09:30 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Wyrkx/ip.git... -Jan 30, 2024 2:09:30 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/kaitinghh/ip.git (master) completed! -Jan 30, 2024 2:09:30 AM reposense.report.ReportGenerator analyzeRepos -INFO: [70/428] Analyzing https://github.com/benson1029/ip.git (master)... -Jan 30, 2024 2:09:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jaejayrome/ip.git (master)... -Jan 30, 2024 2:09:30 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Wyrkx/ip.git to complete... -Jan 30, 2024 2:09:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/cocoanautz/ip.git (master)... -Jan 30, 2024 2:09:30 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/HongRay/ip.git to complete... -Jan 30, 2024 2:09:30 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/cocoanautz/ip.git (master) completed! -Jan 30, 2024 2:09:30 AM reposense.report.ReportGenerator analyzeRepos -INFO: [71/428] Analyzing https://github.com/CaptainKeqing/ip.git (master)... -Jan 30, 2024 2:09:30 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/benson1029/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/benson1029/ip.git (master)... -Jan 30, 2024 2:09:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jaejayrome/ip.git (master)... -Jan 30, 2024 2:09:30 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jaejayrome/ip.git (master) completed! -Jan 30, 2024 2:09:30 AM reposense.report.ReportGenerator analyzeRepos -INFO: [72/428] Analyzing https://github.com/yuechen2001/ip.git (master)... -Jan 30, 2024 2:09:30 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/JukeBoxK/ip.git (master)... +Jan 30, 2024 6:32:14 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/JukeBoxK/ip.git (master) completed! +Jan 30, 2024 6:32:14 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/lynnetteeee/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/lynnetteeee/ip.git (master)... +Jan 30, 2024 6:32:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/lynnetteeee/ip.git (master)... +Jan 30, 2024 6:32:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/lynnetteeee/ip.git (master)... +Jan 30, 2024 6:32:14 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/lynnetteeee/ip.git (master) completed! +Jan 30, 2024 6:32:15 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tamagochuuu/ip.git completed! +Jan 30, 2024 6:32:15 AM reposense.report.ReportGenerator analyzeRepos +INFO: [92/428] Analyzing https://github.com/tamagochuuu/ip.git (master)... +Jan 30, 2024 6:32:15 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Wyrkx/ip.git... +Jan 30, 2024 6:32:15 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Wyrkx/ip.git to complete... +Jan 30, 2024 6:32:15 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/tamagochuuu/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/tamagochuuu/ip.git (master)... +Jan 30, 2024 6:32:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/tamagochuuu/ip.git (master)... +Jan 30, 2024 6:32:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/tamagochuuu/ip.git (master)... +Jan 30, 2024 6:32:15 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/tamagochuuu/ip.git (master) completed! +Jan 30, 2024 6:32:15 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/owenong1/ip.git completed! -Jan 30, 2024 2:09:30 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/willowisp01/ip.git completed! -Jan 30, 2024 2:09:30 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:15 AM reposense.report.ReportGenerator analyzeRepos +INFO: [93/428] Analyzing https://github.com/owenong1/ip.git (master)... +Jan 30, 2024 6:32:15 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Benson15912/ip.git... -Jan 30, 2024 2:09:30 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/yuechen2001/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/yuechen2001/ip.git (master)... -Jan 30, 2024 2:09:30 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/CaptainKeqing/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/CaptainKeqing/ip.git (master)... -Jan 30, 2024 2:09:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/1rbg/ip.git (master)... -Jan 30, 2024 2:09:30 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/kailinteoo/ip.git... -Jan 30, 2024 2:09:30 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:15 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Benson15912/ip.git to complete... -Jan 30, 2024 2:09:30 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:15 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/owenong1/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/owenong1/ip.git (master)... +Jan 30, 2024 6:32:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/owenong1/ip.git (master)... +Jan 30, 2024 6:32:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/owenong1/ip.git (master)... +Jan 30, 2024 6:32:15 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/owenong1/ip.git (master) completed! +Jan 30, 2024 6:32:15 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/willowisp01/ip.git completed! +Jan 30, 2024 6:32:15 AM reposense.report.ReportGenerator analyzeRepos +INFO: [94/428] Analyzing https://github.com/willowisp01/ip.git (master)... +Jan 30, 2024 6:32:15 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/kailinteoo/ip.git... +Jan 30, 2024 6:32:15 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/kailinteoo/ip.git to complete... -Jan 30, 2024 2:09:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/1rbg/ip.git (master)... -Jan 30, 2024 2:09:30 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/1rbg/ip.git (master) completed! -Jan 30, 2024 2:09:30 AM reposense.report.ReportGenerator analyzeRepos -INFO: [73/428] Analyzing https://github.com/wang-xinrong/ip.git (master)... -Jan 30, 2024 2:09:30 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/wang-xinrong/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/wang-xinrong/ip.git (master)... -Jan 30, 2024 2:09:30 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:15 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/willowisp01/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/willowisp01/ip.git (master)... +Jan 30, 2024 6:32:15 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/HongRay/ip.git completed! -Jan 30, 2024 2:09:30 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:15 AM reposense.report.ReportGenerator analyzeRepos +INFO: [95/428] Analyzing https://github.com/HongRay/ip.git (master)... +Jan 30, 2024 6:32:15 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Alteqa/ip.git... -Jan 30, 2024 2:09:30 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:15 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Alteqa/ip.git to complete... -Jan 30, 2024 2:09:30 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:15 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/HongRay/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/HongRay/ip.git (master)... +Jan 30, 2024 6:32:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/willowisp01/ip.git (master)... +Jan 30, 2024 6:32:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/willowisp01/ip.git (master)... +Jan 30, 2024 6:32:15 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/willowisp01/ip.git (master) completed! +Jan 30, 2024 6:32:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/HongRay/ip.git (master)... +Jan 30, 2024 6:32:15 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Wyrkx/ip.git completed! -Jan 30, 2024 2:09:30 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:15 AM reposense.report.ReportGenerator analyzeRepos +INFO: [96/428] Analyzing https://github.com/Wyrkx/ip.git (master)... +Jan 30, 2024 6:32:15 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/MaYuehan/ip.git... -Jan 30, 2024 2:09:30 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:15 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/MaYuehan/ip.git to complete... -Jan 30, 2024 2:09:30 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/HongRay/ip.git (master)... +Jan 30, 2024 6:32:15 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/HongRay/ip.git (master) completed! +Jan 30, 2024 6:32:15 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Wyrkx/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Wyrkx/ip.git (master)... +Jan 30, 2024 6:32:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Wyrkx/ip.git (master)... +Jan 30, 2024 6:32:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Wyrkx/ip.git (master)... +Jan 30, 2024 6:32:15 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Wyrkx/ip.git (master) completed! +Jan 30, 2024 6:32:16 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Benson15912/ip.git completed! -Jan 30, 2024 2:09:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/yuechen2001/ip.git (master)... -Jan 30, 2024 2:09:30 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:16 AM reposense.report.ReportGenerator analyzeRepos +INFO: [97/428] Analyzing https://github.com/Benson15912/ip.git (master)... +Jan 30, 2024 6:32:16 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/zhenghuil/ip.git... -Jan 30, 2024 2:09:30 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/kailinteoo/ip.git completed! -Jan 30, 2024 2:09:30 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:16 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/zhenghuil/ip.git to complete... -Jan 30, 2024 2:09:30 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/sarjinius/ip.git... -Jan 30, 2024 2:09:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/benson1029/ip.git (master)... -Jan 30, 2024 2:09:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/yuechen2001/ip.git (master)... -Jan 30, 2024 2:09:30 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/yuechen2001/ip.git (master) completed! -Jan 30, 2024 2:09:30 AM reposense.report.ReportGenerator analyzeRepos -INFO: [74/428] Analyzing https://github.com/jiahui0309/ip.git (master)... -Jan 30, 2024 2:09:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/CaptainKeqing/ip.git (master)... -Jan 30, 2024 2:09:30 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/sarjinius/ip.git to complete... -Jan 30, 2024 2:09:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/benson1029/ip.git (master)... -Jan 30, 2024 2:09:30 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/benson1029/ip.git (master) completed! -Jan 30, 2024 2:09:30 AM reposense.report.ReportGenerator analyzeRepos -INFO: [75/428] Analyzing https://github.com/kokerinks/ip.git (master)... -Jan 30, 2024 2:09:30 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jiahui0309/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jiahui0309/ip.git (master)... -Jan 30, 2024 2:09:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/CaptainKeqing/ip.git (master)... -Jan 30, 2024 2:09:30 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/CaptainKeqing/ip.git (master) completed! -Jan 30, 2024 2:09:30 AM reposense.report.ReportGenerator analyzeRepos -INFO: [76/428] Analyzing https://github.com/TheodoreKooo/ip.git (master)... -Jan 30, 2024 2:09:30 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/kokerinks/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/kokerinks/ip.git (master)... -Jan 30, 2024 2:09:30 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:16 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Benson15912/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Benson15912/ip.git (master)... +Jan 30, 2024 6:32:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Benson15912/ip.git (master)... +Jan 30, 2024 6:32:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Benson15912/ip.git (master)... +Jan 30, 2024 6:32:16 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Benson15912/ip.git (master) completed! +Jan 30, 2024 6:32:16 AM reposense.report.RepoCloner waitForCloneProcess WARNING: Exception met while trying to clone the repo "zhenghuil/ip[master]", will skip this repo. reposense.system.CommandRunnerProcessException: Error returned from command git clone --bare 'https://github.com/zhenghuil/ip.git' 'repos/zhenghuil_ip/ip_bare' on path . : Cloning into bare repository 'repos/zhenghuil_ip/ip_bare'... @@ -1600,153 +1874,209 @@ fatal: could not read Username for 'https://github.com': No such device or addre at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:829) -Jan 30, 2024 2:09:30 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:16 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/sarjinius/ip.git... +Jan 30, 2024 6:32:16 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/sarjinius/ip.git to complete... +Jan 30, 2024 6:32:16 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Alteqa/ip.git completed! +Jan 30, 2024 6:32:16 AM reposense.report.ReportGenerator analyzeRepos +INFO: [98/428] Analyzing https://github.com/Alteqa/ip.git (master)... +Jan 30, 2024 6:32:16 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/appleraincoat/ip.git... -Jan 30, 2024 2:09:30 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:16 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/appleraincoat/ip.git to complete... -Jan 30, 2024 2:09:30 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/TheodoreKooo/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/TheodoreKooo/ip.git (master)... -Jan 30, 2024 2:09:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/wang-xinrong/ip.git (master)... -Jan 30, 2024 2:09:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/wang-xinrong/ip.git (master)... -Jan 30, 2024 2:09:30 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/wang-xinrong/ip.git (master) completed! -Jan 30, 2024 2:09:30 AM reposense.report.ReportGenerator analyzeRepos -INFO: [77/428] Analyzing https://github.com/Ella-e/ip.git (master)... -Jan 30, 2024 2:09:30 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Alteqa/ip.git completed! -Jan 30, 2024 2:09:30 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/MaYuehan/ip.git completed! -Jan 30, 2024 2:09:30 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:16 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Alteqa/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Alteqa/ip.git (master)... +Jan 30, 2024 6:32:16 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/kailinteoo/ip.git completed! +Jan 30, 2024 6:32:16 AM reposense.report.ReportGenerator analyzeRepos +INFO: [99/428] Analyzing https://github.com/kailinteoo/ip.git (master)... +Jan 30, 2024 6:32:16 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/reetmitra/ip.git... -Jan 30, 2024 2:09:30 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/taeewonnn/ip.git... -Jan 30, 2024 2:09:30 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:16 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/reetmitra/ip.git to complete... -Jan 30, 2024 2:09:30 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Ella-e/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Ella-e/ip.git (master)... -Jan 30, 2024 2:09:30 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:16 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/kailinteoo/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/kailinteoo/ip.git (master)... +Jan 30, 2024 6:32:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Alteqa/ip.git (master)... +Jan 30, 2024 6:32:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Alteqa/ip.git (master)... +Jan 30, 2024 6:32:16 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Alteqa/ip.git (master) completed! +Jan 30, 2024 6:32:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/kailinteoo/ip.git (master)... +Jan 30, 2024 6:32:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/kailinteoo/ip.git (master)... +Jan 30, 2024 6:32:16 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/MaYuehan/ip.git completed! +Jan 30, 2024 6:32:16 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/kailinteoo/ip.git (master) completed! +Jan 30, 2024 6:32:16 AM reposense.report.ReportGenerator analyzeRepos +INFO: [100/428] Analyzing https://github.com/MaYuehan/ip.git (master)... +Jan 30, 2024 6:32:16 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/taeewonnn/ip.git... +Jan 30, 2024 6:32:16 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/taeewonnn/ip.git to complete... -Jan 30, 2024 2:09:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/TheodoreKooo/ip.git (master)... -Jan 30, 2024 2:09:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/kokerinks/ip.git (master)... -Jan 30, 2024 2:09:30 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:16 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/MaYuehan/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/MaYuehan/ip.git (master)... +Jan 30, 2024 6:32:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/MaYuehan/ip.git (master)... +Jan 30, 2024 6:32:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/MaYuehan/ip.git (master)... +Jan 30, 2024 6:32:16 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/MaYuehan/ip.git (master) completed! +Jan 30, 2024 6:32:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/sarjinius/ip.git completed! -Jan 30, 2024 2:09:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/TheodoreKooo/ip.git (master)... -Jan 30, 2024 2:09:30 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:17 AM reposense.report.ReportGenerator analyzeRepos +INFO: [101/428] Analyzing https://github.com/sarjinius/ip.git (master)... +Jan 30, 2024 6:32:17 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jamessinmaojun/ip.git... -Jan 30, 2024 2:09:30 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/TheodoreKooo/ip.git (master) completed! -Jan 30, 2024 2:09:30 AM reposense.report.ReportGenerator analyzeRepos -INFO: [78/428] Analyzing https://github.com/ForAeons/ip.git (master)... -Jan 30, 2024 2:09:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/kokerinks/ip.git (master)... -Jan 30, 2024 2:09:30 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/kokerinks/ip.git (master) completed! -Jan 30, 2024 2:09:30 AM reposense.report.ReportGenerator analyzeRepos -INFO: [79/428] Analyzing https://github.com/Xuyan0518/ip.git (master)... -Jan 30, 2024 2:09:30 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jamessinmaojun/ip.git to complete... -Jan 30, 2024 2:09:30 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ForAeons/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ForAeons/ip.git (master)... -Jan 30, 2024 2:09:30 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Xuyan0518/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Xuyan0518/ip.git (master)... -Jan 30, 2024 2:09:30 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:17 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/sarjinius/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/sarjinius/ip.git (master)... +Jan 30, 2024 6:32:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/sarjinius/ip.git (master)... +Jan 30, 2024 6:32:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/sarjinius/ip.git (master)... +Jan 30, 2024 6:32:17 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/sarjinius/ip.git (master) completed! +Jan 30, 2024 6:32:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/appleraincoat/ip.git completed! -Jan 30, 2024 2:09:30 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:17 AM reposense.report.ReportGenerator analyzeRepos +INFO: [102/428] Analyzing https://github.com/appleraincoat/ip.git (master)... +Jan 30, 2024 6:32:17 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/H4mes/ip.git... -Jan 30, 2024 2:09:30 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/H4mes/ip.git to complete... -Jan 30, 2024 2:09:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jiahui0309/ip.git (master)... -Jan 30, 2024 2:09:31 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/taeewonnn/ip.git completed! -Jan 30, 2024 2:09:31 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:17 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/appleraincoat/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/appleraincoat/ip.git (master)... +Jan 30, 2024 6:32:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/reetmitra/ip.git completed! -Jan 30, 2024 2:09:31 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:17 AM reposense.report.ReportGenerator analyzeRepos +INFO: [103/428] Analyzing https://github.com/reetmitra/ip.git (master)... +Jan 30, 2024 6:32:17 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ChocoRagdoll/ip.git... -Jan 30, 2024 2:09:31 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ondretann/ip.git... -Jan 30, 2024 2:09:31 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ChocoRagdoll/ip.git to complete... -Jan 30, 2024 2:09:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jiahui0309/ip.git (master)... -Jan 30, 2024 2:09:31 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:17 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/reetmitra/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/reetmitra/ip.git (master)... +Jan 30, 2024 6:32:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/appleraincoat/ip.git (master)... +Jan 30, 2024 6:32:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/appleraincoat/ip.git (master)... +Jan 30, 2024 6:32:17 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/appleraincoat/ip.git (master) completed! +Jan 30, 2024 6:32:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/reetmitra/ip.git (master)... +Jan 30, 2024 6:32:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/reetmitra/ip.git (master)... +Jan 30, 2024 6:32:17 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/reetmitra/ip.git (master) completed! +Jan 30, 2024 6:32:17 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/taeewonnn/ip.git completed! +Jan 30, 2024 6:32:17 AM reposense.report.ReportGenerator analyzeRepos +INFO: [104/428] Analyzing https://github.com/taeewonnn/ip.git (master)... +Jan 30, 2024 6:32:17 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ondretann/ip.git... +Jan 30, 2024 6:32:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ondretann/ip.git to complete... -Jan 30, 2024 2:09:31 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jiahui0309/ip.git (master) completed! -Jan 30, 2024 2:09:31 AM reposense.report.ReportGenerator analyzeRepos -INFO: [80/428] Analyzing https://github.com/solomonng2001/ip.git (master)... -Jan 30, 2024 2:09:31 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/solomonng2001/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/solomonng2001/ip.git (master)... -Jan 30, 2024 2:09:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Xuyan0518/ip.git (master)... -Jan 30, 2024 2:09:31 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:17 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/taeewonnn/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/taeewonnn/ip.git (master)... +Jan 30, 2024 6:32:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/taeewonnn/ip.git (master)... +Jan 30, 2024 6:32:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/taeewonnn/ip.git (master)... +Jan 30, 2024 6:32:17 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/taeewonnn/ip.git (master) completed! +Jan 30, 2024 6:32:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jamessinmaojun/ip.git completed! -Jan 30, 2024 2:09:31 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:17 AM reposense.report.ReportGenerator analyzeRepos +INFO: [105/428] Analyzing https://github.com/jamessinmaojun/ip.git (master)... +Jan 30, 2024 6:32:17 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ashleygoh1/ip.git... -Jan 30, 2024 2:09:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Xuyan0518/ip.git (master)... -Jan 30, 2024 2:09:31 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Xuyan0518/ip.git (master) completed! -Jan 30, 2024 2:09:31 AM reposense.report.ReportGenerator analyzeRepos -INFO: [81/428] Analyzing https://github.com/justinlengch/ip.git (master)... -Jan 30, 2024 2:09:31 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ashleygoh1/ip.git to complete... -Jan 30, 2024 2:09:31 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/justinlengch/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/justinlengch/ip.git (master)... -Jan 30, 2024 2:09:31 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:17 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jamessinmaojun/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jamessinmaojun/ip.git (master)... +Jan 30, 2024 6:32:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jamessinmaojun/ip.git (master)... +Jan 30, 2024 6:32:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jamessinmaojun/ip.git (master)... +Jan 30, 2024 6:32:17 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jamessinmaojun/ip.git (master) completed! +Jan 30, 2024 6:32:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/H4mes/ip.git completed! -Jan 30, 2024 2:09:31 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:17 AM reposense.report.ReportGenerator analyzeRepos +INFO: [106/428] Analyzing https://github.com/H4mes/ip.git (master)... +Jan 30, 2024 6:32:17 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/justincred/ip.git... -Jan 30, 2024 2:09:31 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/justincred/ip.git to complete... -Jan 30, 2024 2:09:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Ella-e/ip.git (master)... -Jan 30, 2024 2:09:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Ella-e/ip.git (master)... -Jan 30, 2024 2:09:31 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ondretann/ip.git completed! -Jan 30, 2024 2:09:31 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Ella-e/ip.git (master) completed! -Jan 30, 2024 2:09:31 AM reposense.report.ReportGenerator analyzeRepos -INFO: [82/428] Analyzing https://github.com/jjchee77/ip.git (master)... -Jan 30, 2024 2:09:31 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:17 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/H4mes/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/H4mes/ip.git (master)... +Jan 30, 2024 6:32:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/H4mes/ip.git (master)... +Jan 30, 2024 6:32:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/H4mes/ip.git (master)... +Jan 30, 2024 6:32:17 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/H4mes/ip.git (master) completed! +Jan 30, 2024 6:32:18 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ChocoRagdoll/ip.git completed! -Jan 30, 2024 2:09:31 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:18 AM reposense.report.ReportGenerator analyzeRepos +INFO: [107/428] Analyzing https://github.com/ChocoRagdoll/ip.git (master)... +Jan 30, 2024 6:32:18 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/JerryWang0000/ip.git... -Jan 30, 2024 2:09:31 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:18 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/JerryWang0000/ip.git to complete... +Jan 30, 2024 6:32:18 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ChocoRagdoll/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ChocoRagdoll/ip.git (master)... +Jan 30, 2024 6:32:18 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ondretann/ip.git completed! +Jan 30, 2024 6:32:18 AM reposense.report.ReportGenerator analyzeRepos +INFO: [108/428] Analyzing https://github.com/ondretann/ip.git (master)... +Jan 30, 2024 6:32:18 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/julia-cp/ip.git... -Jan 30, 2024 2:09:31 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:18 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/julia-cp/ip.git to complete... -Jan 30, 2024 2:09:31 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/JerryWang0000/ip.git to complete... -Jan 30, 2024 2:09:31 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jjchee77/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jjchee77/ip.git (master)... -Jan 30, 2024 2:09:31 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ashleygoh1/ip.git completed! -Jan 30, 2024 2:09:31 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Tanzhiheng26/ip.git... -Jan 30, 2024 2:09:31 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Tanzhiheng26/ip.git to complete... -Jan 30, 2024 2:09:31 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:18 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ondretann/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ondretann/ip.git (master)... +Jan 30, 2024 6:32:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ChocoRagdoll/ip.git (master)... +Jan 30, 2024 6:32:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ondretann/ip.git (master)... +Jan 30, 2024 6:32:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ChocoRagdoll/ip.git (master)... +Jan 30, 2024 6:32:18 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ChocoRagdoll/ip.git (master) completed! +Jan 30, 2024 6:32:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ondretann/ip.git (master)... +Jan 30, 2024 6:32:18 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ondretann/ip.git (master) completed! +Jan 30, 2024 6:32:18 AM reposense.report.RepoCloner waitForCloneProcess WARNING: Exception met while trying to clone the repo "JerryWang0000/ip[master]", will skip this repo. reposense.system.CommandRunnerProcessException: Error returned from command git clone --bare 'https://github.com/JerryWang0000/ip.git' 'repos/JerryWang0000_ip/ip_bare' on path . : Cloning into bare repository 'repos/JerryWang0000_ip/ip_bare'... @@ -1762,209 +2092,253 @@ fatal: could not read Username for 'https://github.com': No such device or addre at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:829) -Jan 30, 2024 2:09:31 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:18 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Tanzhiheng26/ip.git... +Jan 30, 2024 6:32:18 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Tanzhiheng26/ip.git to complete... +Jan 30, 2024 6:32:18 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ashleygoh1/ip.git completed! +Jan 30, 2024 6:32:18 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/BryanL2303/ip.git... -Jan 30, 2024 2:09:31 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:18 AM reposense.report.ReportGenerator analyzeRepos +INFO: [109/428] Analyzing https://github.com/ashleygoh1/ip.git (master)... +Jan 30, 2024 6:32:18 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/BryanL2303/ip.git to complete... -Jan 30, 2024 2:09:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/justinlengch/ip.git (master)... -Jan 30, 2024 2:09:31 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:18 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ashleygoh1/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ashleygoh1/ip.git (master)... +Jan 30, 2024 6:32:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ashleygoh1/ip.git (master)... +Jan 30, 2024 6:32:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ashleygoh1/ip.git (master)... +Jan 30, 2024 6:32:18 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ashleygoh1/ip.git (master) completed! +Jan 30, 2024 6:32:18 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/justincred/ip.git completed! -Jan 30, 2024 2:09:31 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:18 AM reposense.report.ReportGenerator analyzeRepos +INFO: [110/428] Analyzing https://github.com/justincred/ip.git (master)... +Jan 30, 2024 6:32:18 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/sethteo/ip.git... -Jan 30, 2024 2:09:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/justinlengch/ip.git (master)... -Jan 30, 2024 2:09:31 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/justinlengch/ip.git (master) completed! -Jan 30, 2024 2:09:31 AM reposense.report.ReportGenerator analyzeRepos -INFO: [83/428] Analyzing https://github.com/ronnnnnnnnn/ip.git (master)... -Jan 30, 2024 2:09:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/solomonng2001/ip.git (master)... -Jan 30, 2024 2:09:31 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:18 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/sethteo/ip.git to complete... -Jan 30, 2024 2:09:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jjchee77/ip.git (master)... -Jan 30, 2024 2:09:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/solomonng2001/ip.git (master)... -Jan 30, 2024 2:09:31 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/solomonng2001/ip.git (master) completed! -Jan 30, 2024 2:09:31 AM reposense.report.ReportGenerator analyzeRepos -INFO: [84/428] Analyzing https://github.com/dayn-1/ip.git (master)... -Jan 30, 2024 2:09:31 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ronnnnnnnnn/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ronnnnnnnnn/ip.git (master)... -Jan 30, 2024 2:09:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jjchee77/ip.git (master)... -Jan 30, 2024 2:09:31 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jjchee77/ip.git (master) completed! -Jan 30, 2024 2:09:31 AM reposense.report.ReportGenerator analyzeRepos -INFO: [85/428] Analyzing https://github.com/tituschewxj/ip.git (master)... -Jan 30, 2024 2:09:31 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:18 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/justincred/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/justincred/ip.git (master)... +Jan 30, 2024 6:32:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/justincred/ip.git (master)... +Jan 30, 2024 6:32:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/justincred/ip.git (master)... +Jan 30, 2024 6:32:18 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/justincred/ip.git (master) completed! +Jan 30, 2024 6:32:18 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/julia-cp/ip.git completed! -Jan 30, 2024 2:09:31 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:18 AM reposense.report.ReportGenerator analyzeRepos +INFO: [111/428] Analyzing https://github.com/julia-cp/ip.git (master)... +Jan 30, 2024 6:32:18 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Joelwang22/ip.git... -Jan 30, 2024 2:09:31 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/dayn-1/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/dayn-1/ip.git (master)... -Jan 30, 2024 2:09:31 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:18 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Joelwang22/ip.git to complete... -Jan 30, 2024 2:09:31 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/tituschewxj/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/tituschewxj/ip.git (master)... -Jan 30, 2024 2:09:31 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:18 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/julia-cp/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/julia-cp/ip.git (master)... +Jan 30, 2024 6:32:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/julia-cp/ip.git (master)... +Jan 30, 2024 6:32:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/julia-cp/ip.git (master)... +Jan 30, 2024 6:32:18 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/julia-cp/ip.git (master) completed! +Jan 30, 2024 6:32:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Tanzhiheng26/ip.git completed! -Jan 30, 2024 2:09:31 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:19 AM reposense.report.ReportGenerator analyzeRepos +INFO: [112/428] Analyzing https://github.com/Tanzhiheng26/ip.git (master)... +Jan 30, 2024 6:32:19 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ibnu2651/ip.git... -Jan 30, 2024 2:09:31 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/BryanL2303/ip.git completed! -Jan 30, 2024 2:09:31 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ibnu2651/ip.git to complete... -Jan 30, 2024 2:09:31 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:19 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Tanzhiheng26/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Tanzhiheng26/ip.git (master)... +Jan 30, 2024 6:32:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Tanzhiheng26/ip.git (master)... +Jan 30, 2024 6:32:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Tanzhiheng26/ip.git (master)... +Jan 30, 2024 6:32:19 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Tanzhiheng26/ip.git (master) completed! +Jan 30, 2024 6:32:19 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/BryanL2303/ip.git completed! +Jan 30, 2024 6:32:19 AM reposense.report.ReportGenerator analyzeRepos +INFO: [113/428] Analyzing https://github.com/BryanL2303/ip.git (master)... +Jan 30, 2024 6:32:19 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/SimKianSeng/ip.git... -Jan 30, 2024 2:09:31 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/SimKianSeng/ip.git to complete... -Jan 30, 2024 2:09:31 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:19 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/BryanL2303/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/BryanL2303/ip.git (master)... +Jan 30, 2024 6:32:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/BryanL2303/ip.git (master)... +Jan 30, 2024 6:32:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/sethteo/ip.git completed! -Jan 30, 2024 2:09:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ronnnnnnnnn/ip.git (master)... -Jan 30, 2024 2:09:31 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:19 AM reposense.report.ReportGenerator analyzeRepos +INFO: [114/428] Analyzing https://github.com/sethteo/ip.git (master)... +Jan 30, 2024 6:32:19 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/guohuang88/ip.git... -Jan 30, 2024 2:09:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/dayn-1/ip.git (master)... -Jan 30, 2024 2:09:31 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/BryanL2303/ip.git (master)... +Jan 30, 2024 6:32:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/guohuang88/ip.git to complete... -Jan 30, 2024 2:09:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/dayn-1/ip.git (master)... -Jan 30, 2024 2:09:31 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/dayn-1/ip.git (master) completed! -Jan 30, 2024 2:09:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ronnnnnnnnn/ip.git (master)... -Jan 30, 2024 2:09:31 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ronnnnnnnnn/ip.git (master) completed! -Jan 30, 2024 2:09:31 AM reposense.report.ReportGenerator analyzeRepos -INFO: [86/428] Analyzing https://github.com/NeoHW/ip.git (master)... -Jan 30, 2024 2:09:31 AM reposense.report.ReportGenerator analyzeRepos -INFO: [87/428] Analyzing https://github.com/choowengyan/ip.git (master)... -Jan 30, 2024 2:09:31 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/choowengyan/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/choowengyan/ip.git (master)... -Jan 30, 2024 2:09:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ForAeons/ip.git (master)... -Jan 30, 2024 2:09:31 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/NeoHW/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/NeoHW/ip.git (master)... -Jan 30, 2024 2:09:31 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:19 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/BryanL2303/ip.git (master) completed! +Jan 30, 2024 6:32:19 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/sethteo/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/sethteo/ip.git (master)... +Jan 30, 2024 6:32:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/sethteo/ip.git (master)... +Jan 30, 2024 6:32:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/sethteo/ip.git (master)... +Jan 30, 2024 6:32:19 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/sethteo/ip.git (master) completed! +Jan 30, 2024 6:32:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Joelwang22/ip.git completed! -Jan 30, 2024 2:09:31 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:19 AM reposense.report.ReportGenerator analyzeRepos +INFO: [115/428] Analyzing https://github.com/Joelwang22/ip.git (master)... +Jan 30, 2024 6:32:19 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/rizkidelta/ip.git... -Jan 30, 2024 2:09:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ForAeons/ip.git (master)... -Jan 30, 2024 2:09:31 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/rizkidelta/ip.git to complete... -Jan 30, 2024 2:09:31 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ForAeons/ip.git (master) completed! -Jan 30, 2024 2:09:31 AM reposense.report.ReportGenerator analyzeRepos -INFO: [88/428] Analyzing https://github.com/guanquann/ip.git (master)... -Jan 30, 2024 2:09:32 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/guanquann/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/guanquann/ip.git (master)... -Jan 30, 2024 2:09:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/choowengyan/ip.git (master)... -Jan 30, 2024 2:09:32 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:19 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Joelwang22/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Joelwang22/ip.git (master)... +Jan 30, 2024 6:32:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Joelwang22/ip.git (master)... +Jan 30, 2024 6:32:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Joelwang22/ip.git (master)... +Jan 30, 2024 6:32:19 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Joelwang22/ip.git (master) completed! +Jan 30, 2024 6:32:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ibnu2651/ip.git completed! -Jan 30, 2024 2:09:32 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/SimKianSeng/ip.git completed! -Jan 30, 2024 2:09:32 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:19 AM reposense.report.ReportGenerator analyzeRepos +INFO: [116/428] Analyzing https://github.com/ibnu2651/ip.git (master)... +Jan 30, 2024 6:32:19 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Murugan-Maniish/ip.git... -Jan 30, 2024 2:09:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/choowengyan/ip.git (master)... -Jan 30, 2024 2:09:32 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Murugan-Maniish/ip.git to complete... -Jan 30, 2024 2:09:32 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/choowengyan/ip.git (master) completed! -Jan 30, 2024 2:09:32 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/guohuang88/ip.git completed! -Jan 30, 2024 2:09:32 AM reposense.report.ReportGenerator analyzeRepos -INFO: [89/428] Analyzing https://github.com/Hibeom0929/ip.git (master)... -Jan 30, 2024 2:09:32 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:19 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ibnu2651/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ibnu2651/ip.git (master)... +Jan 30, 2024 6:32:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ibnu2651/ip.git (master)... +Jan 30, 2024 6:32:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ibnu2651/ip.git (master)... +Jan 30, 2024 6:32:19 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ibnu2651/ip.git (master) completed! +Jan 30, 2024 6:32:20 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/SimKianSeng/ip.git completed! +Jan 30, 2024 6:32:20 AM reposense.report.ReportGenerator analyzeRepos +INFO: [117/428] Analyzing https://github.com/SimKianSeng/ip.git (master)... +Jan 30, 2024 6:32:20 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AjayArvind2207/ip.git... -Jan 30, 2024 2:09:32 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:20 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AjayArvind2207/ip.git to complete... -Jan 30, 2024 2:09:32 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:20 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/SimKianSeng/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/SimKianSeng/ip.git (master)... +Jan 30, 2024 6:32:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/SimKianSeng/ip.git (master)... +Jan 30, 2024 6:32:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/SimKianSeng/ip.git (master)... +Jan 30, 2024 6:32:20 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/SimKianSeng/ip.git (master) completed! +Jan 30, 2024 6:32:20 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/guohuang88/ip.git completed! +Jan 30, 2024 6:32:20 AM reposense.report.ReportGenerator analyzeRepos +INFO: [118/428] Analyzing https://github.com/guohuang88/ip.git (master)... +Jan 30, 2024 6:32:20 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Teee728/ip.git... -Jan 30, 2024 2:09:32 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:20 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Teee728/ip.git to complete... -Jan 30, 2024 2:09:32 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Hibeom0929/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Hibeom0929/ip.git (master)... -Jan 30, 2024 2:09:32 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:20 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/guohuang88/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/guohuang88/ip.git (master)... +Jan 30, 2024 6:32:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/guohuang88/ip.git (master)... +Jan 30, 2024 6:32:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/guohuang88/ip.git (master)... +Jan 30, 2024 6:32:20 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/guohuang88/ip.git (master) completed! +Jan 30, 2024 6:32:20 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/rizkidelta/ip.git completed! -Jan 30, 2024 2:09:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/tituschewxj/ip.git (master)... -Jan 30, 2024 2:09:32 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:20 AM reposense.report.ReportGenerator analyzeRepos +INFO: [119/428] Analyzing https://github.com/rizkidelta/ip.git (master)... +Jan 30, 2024 6:32:20 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/dillontkh/ip.git... -Jan 30, 2024 2:09:32 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:20 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/dillontkh/ip.git to complete... -Jan 30, 2024 2:09:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/tituschewxj/ip.git (master)... -Jan 30, 2024 2:09:32 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/tituschewxj/ip.git (master) completed! -Jan 30, 2024 2:09:32 AM reposense.report.ReportGenerator analyzeRepos -INFO: [90/428] Analyzing https://github.com/JukeBoxK/ip.git (master)... -Jan 30, 2024 2:09:32 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/JukeBoxK/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/JukeBoxK/ip.git (master)... -Jan 30, 2024 2:09:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Hibeom0929/ip.git (master)... -Jan 30, 2024 2:09:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Hibeom0929/ip.git (master)... -Jan 30, 2024 2:09:32 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Hibeom0929/ip.git (master) completed! -Jan 30, 2024 2:09:32 AM reposense.report.ReportGenerator analyzeRepos -INFO: [91/428] Analyzing https://github.com/tamagochuuu/ip.git (master)... -Jan 30, 2024 2:09:32 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:20 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/rizkidelta/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/rizkidelta/ip.git (master)... +Jan 30, 2024 6:32:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/rizkidelta/ip.git (master)... +Jan 30, 2024 6:32:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/rizkidelta/ip.git (master)... +Jan 30, 2024 6:32:20 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/rizkidelta/ip.git (master) completed! +Jan 30, 2024 6:32:20 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Murugan-Maniish/ip.git completed! -Jan 30, 2024 2:09:32 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Teee728/ip.git completed! -Jan 30, 2024 2:09:32 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:20 AM reposense.report.ReportGenerator analyzeRepos +INFO: [120/428] Analyzing https://github.com/Murugan-Maniish/ip.git (master)... +Jan 30, 2024 6:32:20 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/shaunlxw/ip.git... -Jan 30, 2024 2:09:32 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:20 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/shaunlxw/ip.git to complete... +Jan 30, 2024 6:32:20 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Murugan-Maniish/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Murugan-Maniish/ip.git (master)... +Jan 30, 2024 6:32:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Murugan-Maniish/ip.git (master)... +Jan 30, 2024 6:32:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Murugan-Maniish/ip.git (master)... +Jan 30, 2024 6:32:20 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Murugan-Maniish/ip.git (master) completed! +Jan 30, 2024 6:32:20 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AjayArvind2207/ip.git completed! -Jan 30, 2024 2:09:32 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:20 AM reposense.report.ReportGenerator analyzeRepos +INFO: [121/428] Analyzing https://github.com/AjayArvind2207/ip.git (master)... +Jan 30, 2024 6:32:20 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Morninggloryyy/ip.git... -Jan 30, 2024 2:09:32 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jmsandiegoo/ip.git... -Jan 30, 2024 2:09:32 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/tamagochuuu/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/tamagochuuu/ip.git (master)... -Jan 30, 2024 2:09:32 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:20 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Morninggloryyy/ip.git to complete... -Jan 30, 2024 2:09:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/guanquann/ip.git (master)... -Jan 30, 2024 2:09:32 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/shaunlxw/ip.git to complete... -Jan 30, 2024 2:09:32 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:20 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AjayArvind2207/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AjayArvind2207/ip.git (master)... +Jan 30, 2024 6:32:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AjayArvind2207/ip.git (master)... +Jan 30, 2024 6:32:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AjayArvind2207/ip.git (master)... +Jan 30, 2024 6:32:20 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AjayArvind2207/ip.git (master) completed! +Jan 30, 2024 6:32:21 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Teee728/ip.git completed! +Jan 30, 2024 6:32:21 AM reposense.report.ReportGenerator analyzeRepos +INFO: [122/428] Analyzing https://github.com/Teee728/ip.git (master)... +Jan 30, 2024 6:32:21 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jmsandiegoo/ip.git... +Jan 30, 2024 6:32:21 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jmsandiegoo/ip.git to complete... -Jan 30, 2024 2:09:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/guanquann/ip.git (master)... -Jan 30, 2024 2:09:32 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/guanquann/ip.git (master) completed! -Jan 30, 2024 2:09:32 AM reposense.report.ReportGenerator analyzeRepos -INFO: [92/428] Analyzing https://github.com/lynnetteeee/ip.git (master)... -Jan 30, 2024 2:09:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/JukeBoxK/ip.git (master)... -Jan 30, 2024 2:09:32 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/dillontkh/ip.git completed! -Jan 30, 2024 2:09:32 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:21 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'... @@ -1980,427 +2354,417 @@ fatal: could not read Username for 'https://github.com': No such device or addre at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:829) -Jan 30, 2024 2:09:32 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:21 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ryanlimdx/ip.git... -Jan 30, 2024 2:09:32 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/lynnetteeee/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/lynnetteeee/ip.git (master)... -Jan 30, 2024 2:09:32 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:21 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ryanlimdx/ip.git to complete... -Jan 30, 2024 2:09:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/JukeBoxK/ip.git (master)... -Jan 30, 2024 2:09:32 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/JukeBoxK/ip.git (master) completed! -Jan 30, 2024 2:09:32 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:21 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Teee728/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:21 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Teee728/ip.git (master)... +Jan 30, 2024 6:32:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Teee728/ip.git (master)... +Jan 30, 2024 6:32:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Teee728/ip.git (master)... +Jan 30, 2024 6:32:21 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Teee728/ip.git (master) completed! +Jan 30, 2024 6:32:21 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/dillontkh/ip.git completed! +Jan 30, 2024 6:32:21 AM reposense.report.ReportGenerator analyzeRepos +INFO: [123/428] Analyzing https://github.com/dillontkh/ip.git (master)... +Jan 30, 2024 6:32:21 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/chiralcentre/ip.git... -Jan 30, 2024 2:09:32 AM reposense.report.ReportGenerator analyzeRepos -INFO: [93/428] Analyzing https://github.com/owenong1/ip.git (master)... -Jan 30, 2024 2:09:32 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:21 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/chiralcentre/ip.git to complete... -Jan 30, 2024 2:09:32 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/owenong1/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/owenong1/ip.git (master)... -Jan 30, 2024 2:09:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/NeoHW/ip.git (master)... -Jan 30, 2024 2:09:32 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:21 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/dillontkh/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:21 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/dillontkh/ip.git (master)... +Jan 30, 2024 6:32:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/dillontkh/ip.git (master)... +Jan 30, 2024 6:32:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/dillontkh/ip.git (master)... +Jan 30, 2024 6:32:21 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/dillontkh/ip.git (master) completed! +Jan 30, 2024 6:32:21 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/shaunlxw/ip.git completed! -Jan 30, 2024 2:09:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/NeoHW/ip.git (master)... -Jan 30, 2024 2:09:32 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/NeoHW/ip.git (master) completed! -Jan 30, 2024 2:09:32 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:21 AM reposense.report.ReportGenerator analyzeRepos +INFO: [124/428] Analyzing https://github.com/shaunlxw/ip.git (master)... +Jan 30, 2024 6:32:21 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/KhoonSun47/ip.git... -Jan 30, 2024 2:09:32 AM reposense.report.ReportGenerator analyzeRepos -INFO: [94/428] Analyzing https://github.com/willowisp01/ip.git (master)... -Jan 30, 2024 2:09:32 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jmsandiegoo/ip.git completed! -Jan 30, 2024 2:09:32 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:21 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/KhoonSun47/ip.git to complete... -Jan 30, 2024 2:09:32 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:21 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/shaunlxw/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:21 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/shaunlxw/ip.git (master)... +Jan 30, 2024 6:32:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/shaunlxw/ip.git (master)... +Jan 30, 2024 6:32:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/shaunlxw/ip.git (master)... +Jan 30, 2024 6:32:21 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/shaunlxw/ip.git (master) completed! +Jan 30, 2024 6:32:21 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jmsandiegoo/ip.git completed! +Jan 30, 2024 6:32:21 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ryanlimdx/ip.git completed! +Jan 30, 2024 6:32:21 AM reposense.report.ReportGenerator analyzeRepos +INFO: [125/428] Analyzing https://github.com/jmsandiegoo/ip.git (master)... +Jan 30, 2024 6:32:21 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ThatGirlJam/ip.git... -Jan 30, 2024 2:09:32 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:21 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ThatGirlJam/ip.git to complete... -Jan 30, 2024 2:09:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/lynnetteeee/ip.git (master)... -Jan 30, 2024 2:09:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/tamagochuuu/ip.git (master)... -Jan 30, 2024 2:09:32 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/willowisp01/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/willowisp01/ip.git (master)... -Jan 30, 2024 2:09:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/tamagochuuu/ip.git (master)... -Jan 30, 2024 2:09:32 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/tamagochuuu/ip.git (master) completed! -Jan 30, 2024 2:09:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/lynnetteeee/ip.git (master)... -Jan 30, 2024 2:09:32 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/lynnetteeee/ip.git (master) completed! -Jan 30, 2024 2:09:32 AM reposense.report.ReportGenerator analyzeRepos -INFO: [95/428] Analyzing https://github.com/HongRay/ip.git (master)... -Jan 30, 2024 2:09:32 AM reposense.report.ReportGenerator analyzeRepos -INFO: [96/428] Analyzing https://github.com/Wyrkx/ip.git (master)... -Jan 30, 2024 2:09:32 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/HongRay/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/HongRay/ip.git (master)... -Jan 30, 2024 2:09:32 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ryanlimdx/ip.git completed! -Jan 30, 2024 2:09:32 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:21 AM reposense.report.ReportGenerator analyzeRepos +INFO: [126/428] Analyzing https://github.com/ryanlimdx/ip.git (master)... +Jan 30, 2024 6:32:21 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/0liverkong/ip.git... -Jan 30, 2024 2:09:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/owenong1/ip.git (master)... -Jan 30, 2024 2:09:32 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Wyrkx/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Wyrkx/ip.git (master)... -Jan 30, 2024 2:09:32 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/chiralcentre/ip.git completed! -Jan 30, 2024 2:09:32 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:21 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/0liverkong/ip.git to complete... -Jan 30, 2024 2:09:32 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:21 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jmsandiegoo/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:21 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jmsandiegoo/ip.git (master)... +Jan 30, 2024 6:32:21 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ryanlimdx/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:21 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ryanlimdx/ip.git (master)... +Jan 30, 2024 6:32:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ryanlimdx/ip.git (master)... +Jan 30, 2024 6:32:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ryanlimdx/ip.git (master)... +Jan 30, 2024 6:32:21 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/chiralcentre/ip.git completed! +Jan 30, 2024 6:32:21 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ryanlimdx/ip.git (master) completed! +Jan 30, 2024 6:32:21 AM reposense.report.ReportGenerator analyzeRepos +INFO: [127/428] Analyzing https://github.com/chiralcentre/ip.git (master)... +Jan 30, 2024 6:32:21 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/xuelinglow/ip.git... -Jan 30, 2024 2:09:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/owenong1/ip.git (master)... -Jan 30, 2024 2:09:32 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/owenong1/ip.git (master) completed! -Jan 30, 2024 2:09:32 AM reposense.report.ReportGenerator analyzeRepos -INFO: [97/428] Analyzing https://github.com/Benson15912/ip.git (master)... -Jan 30, 2024 2:09:32 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:21 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/xuelinglow/ip.git to complete... -Jan 30, 2024 2:09:32 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Benson15912/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Benson15912/ip.git (master)... -Jan 30, 2024 2:09:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/willowisp01/ip.git (master)... -Jan 30, 2024 2:09:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/willowisp01/ip.git (master)... -Jan 30, 2024 2:09:32 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/willowisp01/ip.git (master) completed! -Jan 30, 2024 2:09:32 AM reposense.report.ReportGenerator analyzeRepos -INFO: [98/428] Analyzing https://github.com/kailinteoo/ip.git (master)... -Jan 30, 2024 2:09:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/HongRay/ip.git (master)... -Jan 30, 2024 2:09:33 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/kailinteoo/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/kailinteoo/ip.git (master)... -Jan 30, 2024 2:09:33 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jmsandiegoo/ip.git (master)... +Jan 30, 2024 6:32:21 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/chiralcentre/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:21 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/chiralcentre/ip.git (master)... +Jan 30, 2024 6:32:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jmsandiegoo/ip.git (master)... +Jan 30, 2024 6:32:21 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jmsandiegoo/ip.git (master) completed! +Jan 30, 2024 6:32:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/chiralcentre/ip.git (master)... +Jan 30, 2024 6:32:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/chiralcentre/ip.git (master)... +Jan 30, 2024 6:32:22 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/chiralcentre/ip.git (master) completed! +Jan 30, 2024 6:32:22 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/KhoonSun47/ip.git completed! -Jan 30, 2024 2:09:33 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ThatGirlJam/ip.git completed! -Jan 30, 2024 2:09:33 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:22 AM reposense.report.ReportGenerator analyzeRepos +INFO: [128/428] Analyzing https://github.com/KhoonSun47/ip.git (master)... +Jan 30, 2024 6:32:22 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/yashpola/ip.git... -Jan 30, 2024 2:09:33 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:22 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/yashpola/ip.git to complete... +Jan 30, 2024 6:32:22 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/KhoonSun47/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/KhoonSun47/ip.git (master)... +Jan 30, 2024 6:32:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/KhoonSun47/ip.git (master)... +Jan 30, 2024 6:32:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/KhoonSun47/ip.git (master)... +Jan 30, 2024 6:32:22 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/KhoonSun47/ip.git (master) completed! +Jan 30, 2024 6:32:22 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ThatGirlJam/ip.git completed! +Jan 30, 2024 6:32:22 AM reposense.report.ReportGenerator analyzeRepos +INFO: [129/428] Analyzing https://github.com/ThatGirlJam/ip.git (master)... +Jan 30, 2024 6:32:22 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/breezetall/ip.git... -Jan 30, 2024 2:09:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Wyrkx/ip.git (master)... -Jan 30, 2024 2:09:33 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:22 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/breezetall/ip.git to complete... -Jan 30, 2024 2:09:33 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/yashpola/ip.git to complete... -Jan 30, 2024 2:09:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/HongRay/ip.git (master)... -Jan 30, 2024 2:09:33 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/HongRay/ip.git (master) completed! -Jan 30, 2024 2:09:33 AM reposense.report.ReportGenerator analyzeRepos -INFO: [99/428] Analyzing https://github.com/Alteqa/ip.git (master)... -Jan 30, 2024 2:09:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Wyrkx/ip.git (master)... -Jan 30, 2024 2:09:33 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Wyrkx/ip.git (master) completed! -Jan 30, 2024 2:09:33 AM reposense.report.ReportGenerator analyzeRepos -INFO: [100/428] Analyzing https://github.com/MaYuehan/ip.git (master)... -Jan 30, 2024 2:09:33 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Alteqa/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Alteqa/ip.git (master)... -Jan 30, 2024 2:09:33 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/xuelinglow/ip.git completed! -Jan 30, 2024 2:09:33 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:22 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/0liverkong/ip.git completed! -Jan 30, 2024 2:09:33 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:22 AM reposense.report.ReportGenerator analyzeRepos +INFO: [130/428] Analyzing https://github.com/0liverkong/ip.git (master)... +Jan 30, 2024 6:32:22 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/JiaXinEu/ip.git... -Jan 30, 2024 2:09:33 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/MaYuehan/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/MaYuehan/ip.git (master)... -Jan 30, 2024 2:09:33 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/yisiox/ip.git... -Jan 30, 2024 2:09:33 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:22 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/JiaXinEu/ip.git to complete... -Jan 30, 2024 2:09:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Benson15912/ip.git (master)... -Jan 30, 2024 2:09:33 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:22 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ThatGirlJam/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ThatGirlJam/ip.git (master)... +Jan 30, 2024 6:32:22 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/0liverkong/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/0liverkong/ip.git (master)... +Jan 30, 2024 6:32:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ThatGirlJam/ip.git (master)... +Jan 30, 2024 6:32:22 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/xuelinglow/ip.git completed! +Jan 30, 2024 6:32:22 AM reposense.report.ReportGenerator analyzeRepos +INFO: [131/428] Analyzing https://github.com/xuelinglow/ip.git (master)... +Jan 30, 2024 6:32:22 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/yisiox/ip.git... +Jan 30, 2024 6:32:22 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/yisiox/ip.git to complete... -Jan 30, 2024 2:09:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Benson15912/ip.git (master)... -Jan 30, 2024 2:09:33 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Benson15912/ip.git (master) completed! -Jan 30, 2024 2:09:33 AM reposense.report.ReportGenerator analyzeRepos -INFO: [101/428] Analyzing https://github.com/sarjinius/ip.git (master)... -Jan 30, 2024 2:09:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/kailinteoo/ip.git (master)... -Jan 30, 2024 2:09:33 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/sarjinius/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/sarjinius/ip.git (master)... -Jan 30, 2024 2:09:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/kailinteoo/ip.git (master)... -Jan 30, 2024 2:09:33 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/kailinteoo/ip.git (master) completed! -Jan 30, 2024 2:09:33 AM reposense.report.ReportGenerator analyzeRepos -INFO: [102/428] Analyzing https://github.com/appleraincoat/ip.git (master)... -Jan 30, 2024 2:09:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Alteqa/ip.git (master)... -Jan 30, 2024 2:09:33 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/appleraincoat/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/appleraincoat/ip.git (master)... -Jan 30, 2024 2:09:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Alteqa/ip.git (master)... -Jan 30, 2024 2:09:33 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Alteqa/ip.git (master) completed! -Jan 30, 2024 2:09:33 AM reposense.report.ReportGenerator analyzeRepos -INFO: [103/428] Analyzing https://github.com/reetmitra/ip.git (master)... -Jan 30, 2024 2:09:33 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/breezetall/ip.git completed! -Jan 30, 2024 2:09:33 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/maiyasaliha/ip.git... -Jan 30, 2024 2:09:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/sarjinius/ip.git (master)... -Jan 30, 2024 2:09:33 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ThatGirlJam/ip.git (master)... +Jan 30, 2024 6:32:22 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ThatGirlJam/ip.git (master) completed! +Jan 30, 2024 6:32:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/0liverkong/ip.git (master)... +Jan 30, 2024 6:32:22 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/xuelinglow/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/xuelinglow/ip.git (master)... +Jan 30, 2024 6:32:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/0liverkong/ip.git (master)... +Jan 30, 2024 6:32:22 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/0liverkong/ip.git (master) completed! +Jan 30, 2024 6:32:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/xuelinglow/ip.git (master)... +Jan 30, 2024 6:32:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/xuelinglow/ip.git (master)... +Jan 30, 2024 6:32:22 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/xuelinglow/ip.git (master) completed! +Jan 30, 2024 6:32:22 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/yashpola/ip.git completed! -Jan 30, 2024 2:09:33 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/reetmitra/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/reetmitra/ip.git (master)... -Jan 30, 2024 2:09:33 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/triciiaaa/ip.git... -Jan 30, 2024 2:09:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/sarjinius/ip.git (master)... -Jan 30, 2024 2:09:33 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/sarjinius/ip.git (master) completed! -Jan 30, 2024 2:09:33 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:22 AM reposense.report.ReportGenerator analyzeRepos +INFO: [132/428] Analyzing https://github.com/yashpola/ip.git (master)... +Jan 30, 2024 6:32:22 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/maiyasaliha/ip.git... +Jan 30, 2024 6:32:22 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/maiyasaliha/ip.git to complete... -Jan 30, 2024 2:09:33 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:22 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/yashpola/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/yashpola/ip.git (master)... +Jan 30, 2024 6:32:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/yashpola/ip.git (master)... +Jan 30, 2024 6:32:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/yashpola/ip.git (master)... +Jan 30, 2024 6:32:23 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/yashpola/ip.git (master) completed! +Jan 30, 2024 6:32:23 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/breezetall/ip.git completed! +Jan 30, 2024 6:32:23 AM reposense.report.ReportGenerator analyzeRepos +INFO: [133/428] Analyzing https://github.com/breezetall/ip.git (master)... +Jan 30, 2024 6:32:23 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/triciiaaa/ip.git... +Jan 30, 2024 6:32:23 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/triciiaaa/ip.git to complete... -Jan 30, 2024 2:09:33 AM reposense.report.ReportGenerator analyzeRepos -INFO: [104/428] Analyzing https://github.com/taeewonnn/ip.git (master)... -Jan 30, 2024 2:09:33 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/yisiox/ip.git completed! -Jan 30, 2024 2:09:33 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:23 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/JiaXinEu/ip.git completed! +Jan 30, 2024 6:32:23 AM reposense.report.ReportGenerator analyzeRepos +INFO: [134/428] Analyzing https://github.com/JiaXinEu/ip.git (master)... +Jan 30, 2024 6:32:23 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Jolonauh/ip.git... -Jan 30, 2024 2:09:33 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:23 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Jolonauh/ip.git to complete... -Jan 30, 2024 2:09:33 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/JiaXinEu/ip.git completed! -Jan 30, 2024 2:09:33 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/taeewonnn/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/taeewonnn/ip.git (master)... -Jan 30, 2024 2:09:33 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:23 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/breezetall/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/breezetall/ip.git (master)... +Jan 30, 2024 6:32:23 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/JiaXinEu/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/JiaXinEu/ip.git (master)... +Jan 30, 2024 6:32:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/breezetall/ip.git (master)... +Jan 30, 2024 6:32:23 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/yisiox/ip.git completed! +Jan 30, 2024 6:32:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/breezetall/ip.git (master)... +Jan 30, 2024 6:32:23 AM reposense.report.ReportGenerator analyzeRepos +INFO: [135/428] Analyzing https://github.com/yisiox/ip.git (master)... +Jan 30, 2024 6:32:23 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/alvinnzz/ip.git... -Jan 30, 2024 2:09:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/reetmitra/ip.git (master)... -Jan 30, 2024 2:09:33 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:23 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/breezetall/ip.git (master) completed! +Jan 30, 2024 6:32:23 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/alvinnzz/ip.git to complete... -Jan 30, 2024 2:09:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/reetmitra/ip.git (master)... -Jan 30, 2024 2:09:33 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/reetmitra/ip.git (master) completed! -Jan 30, 2024 2:09:33 AM reposense.report.ReportGenerator analyzeRepos -INFO: [105/428] Analyzing https://github.com/jamessinmaojun/ip.git (master)... -Jan 30, 2024 2:09:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/appleraincoat/ip.git (master)... -Jan 30, 2024 2:09:33 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jamessinmaojun/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jamessinmaojun/ip.git (master)... -Jan 30, 2024 2:09:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/appleraincoat/ip.git (master)... -Jan 30, 2024 2:09:33 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/appleraincoat/ip.git (master) completed! -Jan 30, 2024 2:09:33 AM reposense.report.ReportGenerator analyzeRepos -INFO: [106/428] Analyzing https://github.com/H4mes/ip.git (master)... -Jan 30, 2024 2:09:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/MaYuehan/ip.git (master)... -Jan 30, 2024 2:09:33 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/H4mes/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/H4mes/ip.git (master)... -Jan 30, 2024 2:09:33 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:23 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/yisiox/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/yisiox/ip.git (master)... +Jan 30, 2024 6:32:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/JiaXinEu/ip.git (master)... +Jan 30, 2024 6:32:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/JiaXinEu/ip.git (master)... +Jan 30, 2024 6:32:23 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/JiaXinEu/ip.git (master) completed! +Jan 30, 2024 6:32:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/yisiox/ip.git (master)... +Jan 30, 2024 6:32:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/yisiox/ip.git (master)... +Jan 30, 2024 6:32:23 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/yisiox/ip.git (master) completed! +Jan 30, 2024 6:32:23 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/maiyasaliha/ip.git completed! -Jan 30, 2024 2:09:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/MaYuehan/ip.git (master)... -Jan 30, 2024 2:09:33 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/MaYuehan/ip.git (master) completed! -Jan 30, 2024 2:09:33 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:23 AM reposense.report.ReportGenerator analyzeRepos +INFO: [136/428] Analyzing https://github.com/maiyasaliha/ip.git (master)... +Jan 30, 2024 6:32:23 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/wolffe88/ip.git... -Jan 30, 2024 2:09:33 AM reposense.report.ReportGenerator analyzeRepos -INFO: [107/428] Analyzing https://github.com/ondretann/ip.git (master)... -Jan 30, 2024 2:09:33 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:23 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/wolffe88/ip.git to complete... -Jan 30, 2024 2:09:33 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ondretann/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ondretann/ip.git (master)... -Jan 30, 2024 2:09:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/taeewonnn/ip.git (master)... -Jan 30, 2024 2:09:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/taeewonnn/ip.git (master)... -Jan 30, 2024 2:09:33 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/taeewonnn/ip.git (master) completed! -Jan 30, 2024 2:09:33 AM reposense.report.ReportGenerator analyzeRepos -INFO: [108/428] Analyzing https://github.com/ChocoRagdoll/ip.git (master)... -Jan 30, 2024 2:09:33 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:23 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/maiyasaliha/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/maiyasaliha/ip.git (master)... +Jan 30, 2024 6:32:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/maiyasaliha/ip.git (master)... +Jan 30, 2024 6:32:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/maiyasaliha/ip.git (master)... +Jan 30, 2024 6:32:23 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/maiyasaliha/ip.git (master) completed! +Jan 30, 2024 6:32:24 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/triciiaaa/ip.git completed! +Jan 30, 2024 6:32:24 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Jolonauh/ip.git completed! -Jan 30, 2024 2:09:33 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:24 AM reposense.report.ReportGenerator analyzeRepos +INFO: [137/428] Analyzing https://github.com/triciiaaa/ip.git (master)... +Jan 30, 2024 6:32:24 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/menatahari/ip.git... -Jan 30, 2024 2:09:33 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:24 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/menatahari/ip.git to complete... -Jan 30, 2024 2:09:33 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ChocoRagdoll/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ChocoRagdoll/ip.git (master)... -Jan 30, 2024 2:09:33 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/alvinnzz/ip.git completed! -Jan 30, 2024 2:09:33 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:24 AM reposense.report.ReportGenerator analyzeRepos +INFO: [138/428] Analyzing https://github.com/Jolonauh/ip.git (master)... +Jan 30, 2024 6:32:24 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/modembcc/ip.git... -Jan 30, 2024 2:09:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/H4mes/ip.git (master)... -Jan 30, 2024 2:09:33 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:24 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/modembcc/ip.git to complete... -Jan 30, 2024 2:09:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jamessinmaojun/ip.git (master)... -Jan 30, 2024 2:09:33 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/triciiaaa/ip.git completed! -Jan 30, 2024 2:09:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jamessinmaojun/ip.git (master)... -Jan 30, 2024 2:09:33 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jamessinmaojun/ip.git (master) completed! -Jan 30, 2024 2:09:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/H4mes/ip.git (master)... -Jan 30, 2024 2:09:33 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/H4mes/ip.git (master) completed! -Jan 30, 2024 2:09:33 AM reposense.report.ReportGenerator analyzeRepos -INFO: [109/428] Analyzing https://github.com/ashleygoh1/ip.git (master)... -Jan 30, 2024 2:09:33 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:24 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/triciiaaa/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/triciiaaa/ip.git (master)... +Jan 30, 2024 6:32:24 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Jolonauh/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Jolonauh/ip.git (master)... +Jan 30, 2024 6:32:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/triciiaaa/ip.git (master)... +Jan 30, 2024 6:32:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Jolonauh/ip.git (master)... +Jan 30, 2024 6:32:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/triciiaaa/ip.git (master)... +Jan 30, 2024 6:32:24 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/triciiaaa/ip.git (master) completed! +Jan 30, 2024 6:32:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Jolonauh/ip.git (master)... +Jan 30, 2024 6:32:24 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/alvinnzz/ip.git completed! +Jan 30, 2024 6:32:24 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Jolonauh/ip.git (master) completed! +Jan 30, 2024 6:32:24 AM reposense.report.ReportGenerator analyzeRepos +INFO: [139/428] Analyzing https://github.com/alvinnzz/ip.git (master)... +Jan 30, 2024 6:32:24 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/tsulim/ip.git... -Jan 30, 2024 2:09:33 AM reposense.report.ReportGenerator analyzeRepos -INFO: [110/428] Analyzing https://github.com/justincred/ip.git (master)... -Jan 30, 2024 2:09:33 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:24 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/tsulim/ip.git to complete... -Jan 30, 2024 2:09:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ondretann/ip.git (master)... -Jan 30, 2024 2:09:33 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:24 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/alvinnzz/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/alvinnzz/ip.git (master)... +Jan 30, 2024 6:32:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/alvinnzz/ip.git (master)... +Jan 30, 2024 6:32:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/alvinnzz/ip.git (master)... +Jan 30, 2024 6:32:24 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/alvinnzz/ip.git (master) completed! +Jan 30, 2024 6:32:24 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/wolffe88/ip.git completed! -Jan 30, 2024 2:09:33 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ashleygoh1/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ashleygoh1/ip.git (master)... -Jan 30, 2024 2:09:33 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:24 AM reposense.report.ReportGenerator analyzeRepos +INFO: [140/428] Analyzing https://github.com/wolffe88/ip.git (master)... +Jan 30, 2024 6:32:24 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/tanyunchao/ip.git... -Jan 30, 2024 2:09:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ondretann/ip.git (master)... -Jan 30, 2024 2:09:33 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ondretann/ip.git (master) completed! -Jan 30, 2024 2:09:33 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/justincred/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/justincred/ip.git (master)... -Jan 30, 2024 2:09:33 AM reposense.report.ReportGenerator analyzeRepos -INFO: [111/428] Analyzing https://github.com/julia-cp/ip.git (master)... -Jan 30, 2024 2:09:33 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:24 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/tanyunchao/ip.git to complete... -Jan 30, 2024 2:09:33 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/julia-cp/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/julia-cp/ip.git (master)... -Jan 30, 2024 2:09:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/julia-cp/ip.git (master)... -Jan 30, 2024 2:09:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ChocoRagdoll/ip.git (master)... -Jan 30, 2024 2:09:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ashleygoh1/ip.git (master)... -Jan 30, 2024 2:09:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/julia-cp/ip.git (master)... -Jan 30, 2024 2:09:33 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/julia-cp/ip.git (master) completed! -Jan 30, 2024 2:09:34 AM reposense.report.ReportGenerator analyzeRepos -INFO: [112/428] Analyzing https://github.com/Tanzhiheng26/ip.git (master)... -Jan 30, 2024 2:09:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ChocoRagdoll/ip.git (master)... -Jan 30, 2024 2:09:34 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ChocoRagdoll/ip.git (master) completed! -Jan 30, 2024 2:09:34 AM reposense.report.ReportGenerator analyzeRepos -INFO: [113/428] Analyzing https://github.com/BryanL2303/ip.git (master)... -Jan 30, 2024 2:09:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ashleygoh1/ip.git (master)... -Jan 30, 2024 2:09:34 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ashleygoh1/ip.git (master) completed! -Jan 30, 2024 2:09:34 AM reposense.report.ReportGenerator analyzeRepos -INFO: [114/428] Analyzing https://github.com/sethteo/ip.git (master)... -Jan 30, 2024 2:09:34 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:24 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/wolffe88/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/wolffe88/ip.git (master)... +Jan 30, 2024 6:32:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/wolffe88/ip.git (master)... +Jan 30, 2024 6:32:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/wolffe88/ip.git (master)... +Jan 30, 2024 6:32:24 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/wolffe88/ip.git (master) completed! +Jan 30, 2024 6:32:24 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/menatahari/ip.git completed! -Jan 30, 2024 2:09:34 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Tanzhiheng26/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Tanzhiheng26/ip.git (master)... -Jan 30, 2024 2:09:34 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:24 AM reposense.report.ReportGenerator analyzeRepos +INFO: [141/428] Analyzing https://github.com/menatahari/ip.git (master)... +Jan 30, 2024 6:32:24 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/yashma-sonara/ip.git... -Jan 30, 2024 2:09:34 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/sethteo/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/sethteo/ip.git (master)... -Jan 30, 2024 2:09:34 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/modembcc/ip.git completed! -Jan 30, 2024 2:09:34 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:24 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/yashma-sonara/ip.git to complete... -Jan 30, 2024 2:09:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/justincred/ip.git (master)... -Jan 30, 2024 2:09:34 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/BryanL2303/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/BryanL2303/ip.git (master)... -Jan 30, 2024 2:09:34 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:24 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/modembcc/ip.git completed! +Jan 30, 2024 6:32:24 AM reposense.report.ReportGenerator analyzeRepos +INFO: [142/428] Analyzing https://github.com/modembcc/ip.git (master)... +Jan 30, 2024 6:32:24 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Hwww23/ip.git... -Jan 30, 2024 2:09:34 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:24 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Hwww23/ip.git to complete... -Jan 30, 2024 2:09:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/justincred/ip.git (master)... -Jan 30, 2024 2:09:34 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/justincred/ip.git (master) completed! -Jan 30, 2024 2:09:34 AM reposense.report.ReportGenerator analyzeRepos -INFO: [115/428] Analyzing https://github.com/Joelwang22/ip.git (master)... -Jan 30, 2024 2:09:34 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:24 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/menatahari/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/menatahari/ip.git (master)... +Jan 30, 2024 6:32:24 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/modembcc/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/modembcc/ip.git (master)... +Jan 30, 2024 6:32:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/menatahari/ip.git (master)... +Jan 30, 2024 6:32:25 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/tsulim/ip.git completed! -Jan 30, 2024 2:09:34 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Joelwang22/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Joelwang22/ip.git (master)... -Jan 30, 2024 2:09:34 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:25 AM reposense.report.ReportGenerator analyzeRepos +INFO: [143/428] Analyzing https://github.com/tsulim/ip.git (master)... +Jan 30, 2024 6:32:25 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/rickkoh/ip.git... -Jan 30, 2024 2:09:34 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:25 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/rickkoh/ip.git to complete... -Jan 30, 2024 2:09:34 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/menatahari/ip.git (master)... +Jan 30, 2024 6:32:25 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/menatahari/ip.git (master) completed! +Jan 30, 2024 6:32:25 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/tsulim/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/tsulim/ip.git (master)... +Jan 30, 2024 6:32:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/modembcc/ip.git (master)... +Jan 30, 2024 6:32:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/modembcc/ip.git (master)... +Jan 30, 2024 6:32:25 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/modembcc/ip.git (master) completed! +Jan 30, 2024 6:32:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/tsulim/ip.git (master)... +Jan 30, 2024 6:32:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/tsulim/ip.git (master)... +Jan 30, 2024 6:32:25 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/tsulim/ip.git (master) completed! +Jan 30, 2024 6:32:25 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/tanyunchao/ip.git completed! -Jan 30, 2024 2:09:34 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:25 AM reposense.report.ReportGenerator analyzeRepos +INFO: [144/428] Analyzing https://github.com/tanyunchao/ip.git (master)... +Jan 30, 2024 6:32:25 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ValenciaLim/ip.git... -Jan 30, 2024 2:09:34 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:25 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ValenciaLim/ip.git to complete... -Jan 30, 2024 2:09:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Joelwang22/ip.git (master)... -Jan 30, 2024 2:09:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Joelwang22/ip.git (master)... -Jan 30, 2024 2:09:34 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Joelwang22/ip.git (master) completed! -Jan 30, 2024 2:09:34 AM reposense.report.ReportGenerator analyzeRepos -INFO: [116/428] Analyzing https://github.com/ibnu2651/ip.git (master)... -Jan 30, 2024 2:09:34 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:25 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/tanyunchao/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/tanyunchao/ip.git (master)... +Jan 30, 2024 6:32:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/tanyunchao/ip.git (master)... +Jan 30, 2024 6:32:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/tanyunchao/ip.git (master)... +Jan 30, 2024 6:32:25 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/tanyunchao/ip.git (master) completed! +Jan 30, 2024 6:32:25 AM reposense.report.RepoCloner waitForCloneProcess 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'... @@ -2416,87 +2780,83 @@ fatal: could not read Username for 'https://github.com': No such device or addre at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:829) -Jan 30, 2024 2:09:34 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:25 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Zer0Legion/ip.git... -Jan 30, 2024 2:09:34 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ibnu2651/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ibnu2651/ip.git (master)... -Jan 30, 2024 2:09:34 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:25 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Zer0Legion/ip.git to complete... -Jan 30, 2024 2:09:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Tanzhiheng26/ip.git (master)... -Jan 30, 2024 2:09:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/sethteo/ip.git (master)... -Jan 30, 2024 2:09:34 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:25 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/yashma-sonara/ip.git completed! -Jan 30, 2024 2:09:34 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Hwww23/ip.git completed! -Jan 30, 2024 2:09:34 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:25 AM reposense.report.ReportGenerator analyzeRepos +INFO: [145/428] Analyzing https://github.com/yashma-sonara/ip.git (master)... +Jan 30, 2024 6:32:25 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/maze508/ip.git... -Jan 30, 2024 2:09:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Tanzhiheng26/ip.git (master)... -Jan 30, 2024 2:09:34 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:25 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/maze508/ip.git to complete... +Jan 30, 2024 6:32:25 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/yashma-sonara/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/yashma-sonara/ip.git (master)... +Jan 30, 2024 6:32:25 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Hwww23/ip.git completed! +Jan 30, 2024 6:32:25 AM reposense.report.ReportGenerator analyzeRepos +INFO: [146/428] Analyzing https://github.com/Hwww23/ip.git (master)... +Jan 30, 2024 6:32:25 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/eunrcn/ip.git... -Jan 30, 2024 2:09:34 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Tanzhiheng26/ip.git (master) completed! -Jan 30, 2024 2:09:34 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:25 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/eunrcn/ip.git to complete... -Jan 30, 2024 2:09:34 AM reposense.report.ReportGenerator analyzeRepos -INFO: [117/428] Analyzing https://github.com/SimKianSeng/ip.git (master)... -Jan 30, 2024 2:09:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/sethteo/ip.git (master)... -Jan 30, 2024 2:09:34 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/sethteo/ip.git (master) completed! -Jan 30, 2024 2:09:34 AM reposense.report.ReportGenerator analyzeRepos -INFO: [118/428] Analyzing https://github.com/guohuang88/ip.git (master)... -Jan 30, 2024 2:09:34 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/maze508/ip.git to complete... -Jan 30, 2024 2:09:34 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/SimKianSeng/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/SimKianSeng/ip.git (master)... -Jan 30, 2024 2:09:34 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:25 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Hwww23/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Hwww23/ip.git (master)... +Jan 30, 2024 6:32:25 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/rickkoh/ip.git completed! -Jan 30, 2024 2:09:34 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/guohuang88/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/guohuang88/ip.git (master)... -Jan 30, 2024 2:09:34 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:25 AM reposense.report.ReportGenerator analyzeRepos +INFO: [147/428] Analyzing https://github.com/rickkoh/ip.git (master)... +Jan 30, 2024 6:32:25 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ziyang27/ip.git... -Jan 30, 2024 2:09:34 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:25 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ziyang27/ip.git to complete... -Jan 30, 2024 2:09:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ibnu2651/ip.git (master)... -Jan 30, 2024 2:09:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ibnu2651/ip.git (master)... -Jan 30, 2024 2:09:34 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ibnu2651/ip.git (master) completed! -Jan 30, 2024 2:09:34 AM reposense.report.ReportGenerator analyzeRepos -INFO: [119/428] Analyzing https://github.com/rizkidelta/ip.git (master)... -Jan 30, 2024 2:09:34 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:25 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/rickkoh/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/rickkoh/ip.git (master)... +Jan 30, 2024 6:32:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/yashma-sonara/ip.git (master)... +Jan 30, 2024 6:32:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Hwww23/ip.git (master)... +Jan 30, 2024 6:32:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/yashma-sonara/ip.git (master)... +Jan 30, 2024 6:32:25 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/yashma-sonara/ip.git (master) completed! +Jan 30, 2024 6:32:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Hwww23/ip.git (master)... +Jan 30, 2024 6:32:25 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Hwww23/ip.git (master) completed! +Jan 30, 2024 6:32:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/rickkoh/ip.git (master)... +Jan 30, 2024 6:32:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/rickkoh/ip.git (master)... +Jan 30, 2024 6:32:25 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/rickkoh/ip.git (master) completed! +Jan 30, 2024 6:32:26 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Zer0Legion/ip.git completed! -Jan 30, 2024 2:09:34 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:26 AM reposense.report.ReportGenerator analyzeRepos +INFO: [148/428] Analyzing https://github.com/Zer0Legion/ip.git (master)... +Jan 30, 2024 6:32:26 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/nusliuyifan/ip.git... -Jan 30, 2024 2:09:34 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:26 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/nusliuyifan/ip.git to complete... -Jan 30, 2024 2:09:34 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/rizkidelta/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/rizkidelta/ip.git (master)... -Jan 30, 2024 2:09:34 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/maze508/ip.git completed! -Jan 30, 2024 2:09:34 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/eunrcn/ip.git completed! -Jan 30, 2024 2:09:34 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/miffi/ip.git... -Jan 30, 2024 2:09:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/guohuang88/ip.git (master)... -Jan 30, 2024 2:09:34 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/kwuunnn/ip.git... -Jan 30, 2024 2:09:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/BryanL2303/ip.git (master)... -Jan 30, 2024 2:09:34 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:26 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Zer0Legion/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Zer0Legion/ip.git (master)... +Jan 30, 2024 6:32:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Zer0Legion/ip.git (master)... +Jan 30, 2024 6:32:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Zer0Legion/ip.git (master)... +Jan 30, 2024 6:32:26 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Zer0Legion/ip.git (master) completed! +Jan 30, 2024 6:32:26 AM reposense.report.RepoCloner waitForCloneProcess 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'... @@ -2512,5259 +2872,4899 @@ fatal: could not read Username for 'https://github.com': No such device or addre at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:829) -Jan 30, 2024 2:09:34 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/KSSWSept20/ip.git... -Jan 30, 2024 2:09:34 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:26 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/miffi/ip.git... +Jan 30, 2024 6:32:26 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/miffi/ip.git to complete... -Jan 30, 2024 2:09:34 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:26 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/maze508/ip.git completed! +Jan 30, 2024 6:32:26 AM reposense.report.ReportGenerator analyzeRepos +INFO: [149/428] Analyzing https://github.com/maze508/ip.git (master)... +Jan 30, 2024 6:32:26 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/kwuunnn/ip.git... +Jan 30, 2024 6:32:26 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/kwuunnn/ip.git to complete... -Jan 30, 2024 2:09:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/rizkidelta/ip.git (master)... -Jan 30, 2024 2:09:34 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:26 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/maze508/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/maze508/ip.git (master)... +Jan 30, 2024 6:32:26 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/eunrcn/ip.git completed! +Jan 30, 2024 6:32:26 AM reposense.report.ReportGenerator analyzeRepos +INFO: [150/428] Analyzing https://github.com/eunrcn/ip.git (master)... +Jan 30, 2024 6:32:26 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/KSSWSept20/ip.git... +Jan 30, 2024 6:32:26 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/KSSWSept20/ip.git to complete... -Jan 30, 2024 2:09:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/guohuang88/ip.git (master)... -Jan 30, 2024 2:09:34 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:26 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/eunrcn/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/eunrcn/ip.git (master)... +Jan 30, 2024 6:32:26 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ziyang27/ip.git completed! -Jan 30, 2024 2:09:34 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/guohuang88/ip.git (master) completed! -Jan 30, 2024 2:09:34 AM reposense.report.ReportGenerator analyzeRepos -INFO: [120/428] Analyzing https://github.com/Murugan-Maniish/ip.git (master)... -Jan 30, 2024 2:09:34 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:26 AM reposense.report.ReportGenerator analyzeRepos +INFO: [151/428] Analyzing https://github.com/ziyang27/ip.git (master)... +Jan 30, 2024 6:32:26 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/zengzihui/ip.git... -Jan 30, 2024 2:09:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/BryanL2303/ip.git (master)... -Jan 30, 2024 2:09:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/rizkidelta/ip.git (master)... -Jan 30, 2024 2:09:34 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/rizkidelta/ip.git (master) completed! -Jan 30, 2024 2:09:34 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/BryanL2303/ip.git (master) completed! -Jan 30, 2024 2:09:34 AM reposense.report.ReportGenerator analyzeRepos -INFO: [121/428] Analyzing https://github.com/AjayArvind2207/ip.git (master)... -Jan 30, 2024 2:09:34 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:26 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/zengzihui/ip.git to complete... -Jan 30, 2024 2:09:34 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Murugan-Maniish/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:34 AM reposense.report.ReportGenerator analyzeRepos -INFO: [122/428] Analyzing https://github.com/Teee728/ip.git (master)... -Jan 30, 2024 2:09:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Murugan-Maniish/ip.git (master)... -Jan 30, 2024 2:09:34 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Teee728/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Teee728/ip.git (master)... -Jan 30, 2024 2:09:34 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AjayArvind2207/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AjayArvind2207/ip.git (master)... -Jan 30, 2024 2:09:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/SimKianSeng/ip.git (master)... -Jan 30, 2024 2:09:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/SimKianSeng/ip.git (master)... -Jan 30, 2024 2:09:34 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/SimKianSeng/ip.git (master) completed! -Jan 30, 2024 2:09:34 AM reposense.report.ReportGenerator analyzeRepos -INFO: [123/428] Analyzing https://github.com/dillontkh/ip.git (master)... -Jan 30, 2024 2:09:34 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/dillontkh/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/dillontkh/ip.git (master)... -Jan 30, 2024 2:09:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Teee728/ip.git (master)... -Jan 30, 2024 2:09:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Murugan-Maniish/ip.git (master)... -Jan 30, 2024 2:09:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Teee728/ip.git (master)... -Jan 30, 2024 2:09:34 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Teee728/ip.git (master) completed! -Jan 30, 2024 2:09:34 AM reposense.report.ReportGenerator analyzeRepos -INFO: [124/428] Analyzing https://github.com/shaunlxw/ip.git (master)... -Jan 30, 2024 2:09:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AjayArvind2207/ip.git (master)... -Jan 30, 2024 2:09:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Murugan-Maniish/ip.git (master)... -Jan 30, 2024 2:09:34 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Murugan-Maniish/ip.git (master) completed! -Jan 30, 2024 2:09:34 AM reposense.report.ReportGenerator analyzeRepos -INFO: [125/428] Analyzing https://github.com/jmsandiegoo/ip.git (master)... -Jan 30, 2024 2:09:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AjayArvind2207/ip.git (master)... -Jan 30, 2024 2:09:34 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AjayArvind2207/ip.git (master) completed! -Jan 30, 2024 2:09:34 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/kwuunnn/ip.git completed! -Jan 30, 2024 2:09:34 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:26 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ziyang27/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ziyang27/ip.git (master)... +Jan 30, 2024 6:32:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/maze508/ip.git (master)... +Jan 30, 2024 6:32:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/maze508/ip.git (master)... +Jan 30, 2024 6:32:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/eunrcn/ip.git (master)... +Jan 30, 2024 6:32:26 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/maze508/ip.git (master) completed! +Jan 30, 2024 6:32:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/eunrcn/ip.git (master)... +Jan 30, 2024 6:32:26 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/eunrcn/ip.git (master) completed! +Jan 30, 2024 6:32:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ziyang27/ip.git (master)... +Jan 30, 2024 6:32:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ziyang27/ip.git (master)... +Jan 30, 2024 6:32:26 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ziyang27/ip.git (master) completed! +Jan 30, 2024 6:32:27 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/miffi/ip.git completed! -Jan 30, 2024 2:09:34 AM reposense.report.ReportGenerator analyzeRepos -INFO: [126/428] Analyzing https://github.com/ryanlimdx/ip.git (master)... -Jan 30, 2024 2:09:34 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:27 AM reposense.report.ReportGenerator analyzeRepos +INFO: [152/428] Analyzing https://github.com/miffi/ip.git (master)... +Jan 30, 2024 6:32:27 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/sdevih/ip.git... -Jan 30, 2024 2:09:34 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/KSSWSept20/ip.git completed! -Jan 30, 2024 2:09:34 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/shaunlxw/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/shaunlxw/ip.git (master)... -Jan 30, 2024 2:09:34 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:27 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/sdevih/ip.git to complete... +Jan 30, 2024 6:32:27 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/miffi/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/miffi/ip.git (master)... +Jan 30, 2024 6:32:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/miffi/ip.git (master)... +Jan 30, 2024 6:32:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/miffi/ip.git (master)... +Jan 30, 2024 6:32:27 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/miffi/ip.git (master) completed! +Jan 30, 2024 6:32:27 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/kwuunnn/ip.git completed! +Jan 30, 2024 6:32:27 AM reposense.report.ReportGenerator analyzeRepos +INFO: [153/428] Analyzing https://github.com/kwuunnn/ip.git (master)... +Jan 30, 2024 6:32:27 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/DingBao-sys/ip.git... -Jan 30, 2024 2:09:34 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jmsandiegoo/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jmsandiegoo/ip.git (master)... -Jan 30, 2024 2:09:35 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:27 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/DingBao-sys/ip.git to complete... -Jan 30, 2024 2:09:35 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/sdevih/ip.git to complete... -Jan 30, 2024 2:09:35 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 6:32:27 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/KSSWSept20/ip.git completed! +Jan 30, 2024 6:32:27 AM reposense.report.ReportGenerator analyzeRepos +INFO: [154/428] Analyzing https://github.com/KSSWSept20/ip.git (master)... +Jan 30, 2024 6:32:27 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Jerome-j/ip.git... -Jan 30, 2024 2:09:35 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 6:32:27 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Jerome-j/ip.git to complete... -Jan 30, 2024 2:09:35 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ryanlimdx/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ryanlimdx/ip.git (master)... -Jan 30, 2024 2:09:35 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/zengzihui/ip.git completed! -Jan 30, 2024 2:09:35 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Kaya3842/ip.git... -Jan 30, 2024 2:09:35 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Kaya3842/ip.git to complete... -Jan 30, 2024 2:09:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/shaunlxw/ip.git (master)... -Jan 30, 2024 2:09:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ryanlimdx/ip.git (master)... -Jan 30, 2024 2:09:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/shaunlxw/ip.git (master)... -Jan 30, 2024 2:09:35 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/shaunlxw/ip.git (master) completed! -Jan 30, 2024 2:09:35 AM reposense.report.ReportGenerator analyzeRepos -INFO: [127/428] Analyzing https://github.com/chiralcentre/ip.git (master)... -Jan 30, 2024 2:09:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ryanlimdx/ip.git (master)... -Jan 30, 2024 2:09:35 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ryanlimdx/ip.git (master) completed! -Jan 30, 2024 2:09:35 AM reposense.report.ReportGenerator analyzeRepos -INFO: [128/428] Analyzing https://github.com/ThatGirlJam/ip.git (master)... -Jan 30, 2024 2:09:35 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/chiralcentre/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/chiralcentre/ip.git (master)... -Jan 30, 2024 2:09:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jmsandiegoo/ip.git (master)... -Jan 30, 2024 2:09:35 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ThatGirlJam/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ThatGirlJam/ip.git (master)... -Jan 30, 2024 2:09:35 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/DingBao-sys/ip.git completed! -Jan 30, 2024 2:09:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jmsandiegoo/ip.git (master)... -Jan 30, 2024 2:09:35 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jmsandiegoo/ip.git (master) completed! -Jan 30, 2024 2:09:35 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/sdevih/ip.git completed! -Jan 30, 2024 2:09:35 AM reposense.report.ReportGenerator analyzeRepos -INFO: [129/428] Analyzing https://github.com/KhoonSun47/ip.git (master)... -Jan 30, 2024 2:09:35 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Jerome-j/ip.git completed! -Jan 30, 2024 2:09:35 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/legionlegion/ip.git... -Jan 30, 2024 2:09:35 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/chiaryan/ip.git... -Jan 30, 2024 2:09:35 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ChrisHo1341/ip.git... -Jan 30, 2024 2:09:35 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Kaya3842/ip.git completed! -Jan 30, 2024 2:09:35 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ChrisHo1341/ip.git to complete... -Jan 30, 2024 2:09:35 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/legionlegion/ip.git to complete... -Jan 30, 2024 2:09:35 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/chiaryan/ip.git to complete... -Jan 30, 2024 2:09:35 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/KhoonSun47/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/KhoonSun47/ip.git (master)... -Jan 30, 2024 2:09:35 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/hjuntan/ip.git... -Jan 30, 2024 2:09:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/dillontkh/ip.git (master)... -Jan 30, 2024 2:09:35 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/hjuntan/ip.git to complete... -Jan 30, 2024 2:09:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/dillontkh/ip.git (master)... -Jan 30, 2024 2:09:35 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/dillontkh/ip.git (master) completed! -Jan 30, 2024 2:09:35 AM reposense.report.ReportGenerator analyzeRepos -INFO: [130/428] Analyzing https://github.com/xuelinglow/ip.git (master)... -Jan 30, 2024 2:09:35 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/xuelinglow/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/xuelinglow/ip.git (master)... -Jan 30, 2024 2:09:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/chiralcentre/ip.git (master)... -Jan 30, 2024 2:09:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ThatGirlJam/ip.git (master)... -Jan 30, 2024 2:09:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/chiralcentre/ip.git (master)... -Jan 30, 2024 2:09:35 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/chiralcentre/ip.git (master) completed! -Jan 30, 2024 2:09:35 AM reposense.report.ReportGenerator analyzeRepos -INFO: [131/428] Analyzing https://github.com/0liverkong/ip.git (master)... -Jan 30, 2024 2:09:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ThatGirlJam/ip.git (master)... -Jan 30, 2024 2:09:35 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ThatGirlJam/ip.git (master) completed! -Jan 30, 2024 2:09:35 AM reposense.report.ReportGenerator analyzeRepos -INFO: [132/428] Analyzing https://github.com/breezetall/ip.git (master)... -Jan 30, 2024 2:09:35 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/0liverkong/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/0liverkong/ip.git (master)... -Jan 30, 2024 2:09:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/KhoonSun47/ip.git (master)... -Jan 30, 2024 2:09:35 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/breezetall/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/breezetall/ip.git (master)... -Jan 30, 2024 2:09:35 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/legionlegion/ip.git completed! -Jan 30, 2024 2:09:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/KhoonSun47/ip.git (master)... -Jan 30, 2024 2:09:35 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/KhoonSun47/ip.git (master) completed! -Jan 30, 2024 2:09:35 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/chiaryan/ip.git completed! -Jan 30, 2024 2:09:35 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AwJoey/ip.git... -Jan 30, 2024 2:09:35 AM reposense.report.ReportGenerator analyzeRepos -INFO: [133/428] Analyzing https://github.com/yashpola/ip.git (master)... -Jan 30, 2024 2:09:35 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ChrisHo1341/ip.git completed! -Jan 30, 2024 2:09:35 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ZhiWei1010/ip.git... -Jan 30, 2024 2:09:35 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ZhiWei1010/ip.git to complete... -Jan 30, 2024 2:09:35 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AwJoey/ip.git to complete... -Jan 30, 2024 2:09:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/xuelinglow/ip.git (master)... -Jan 30, 2024 2:09:35 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ReflectiveObsidian/ip.git... -Jan 30, 2024 2:09:35 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/hjuntan/ip.git completed! -Jan 30, 2024 2:09:35 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/yashpola/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/yashpola/ip.git (master)... -Jan 30, 2024 2:09:35 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ReflectiveObsidian/ip.git to complete... -Jan 30, 2024 2:09:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/xuelinglow/ip.git (master)... -Jan 30, 2024 2:09:35 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/xuelinglow/ip.git (master) completed! -Jan 30, 2024 2:09:35 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/NusMinato/ip.git... -Jan 30, 2024 2:09:35 AM reposense.report.ReportGenerator analyzeRepos -INFO: [134/428] Analyzing https://github.com/yisiox/ip.git (master)... -Jan 30, 2024 2:09:35 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/NusMinato/ip.git to complete... -Jan 30, 2024 2:09:35 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/yisiox/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/yisiox/ip.git (master)... -Jan 30, 2024 2:09:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/breezetall/ip.git (master)... -Jan 30, 2024 2:09:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/0liverkong/ip.git (master)... -Jan 30, 2024 2:09:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/0liverkong/ip.git (master)... -Jan 30, 2024 2:09:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/breezetall/ip.git (master)... -Jan 30, 2024 2:09:35 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/0liverkong/ip.git (master) completed! -Jan 30, 2024 2:09:35 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/breezetall/ip.git (master) completed! -Jan 30, 2024 2:09:35 AM reposense.report.ReportGenerator analyzeRepos -INFO: [135/428] Analyzing https://github.com/JiaXinEu/ip.git (master)... -Jan 30, 2024 2:09:35 AM reposense.report.ReportGenerator analyzeRepos -INFO: [136/428] Analyzing https://github.com/maiyasaliha/ip.git (master)... -Jan 30, 2024 2:09:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/yisiox/ip.git (master)... -Jan 30, 2024 2:09:35 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/maiyasaliha/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/maiyasaliha/ip.git (master)... -Jan 30, 2024 2:09:35 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/JiaXinEu/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/JiaXinEu/ip.git (master)... -Jan 30, 2024 2:09:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/yisiox/ip.git (master)... -Jan 30, 2024 2:09:35 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/yisiox/ip.git (master) completed! -Jan 30, 2024 2:09:35 AM reposense.report.ReportGenerator analyzeRepos -INFO: [137/428] Analyzing https://github.com/Jolonauh/ip.git (master)... -Jan 30, 2024 2:09:35 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ReflectiveObsidian/ip.git completed! -Jan 30, 2024 2:09:35 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AwJoey/ip.git completed! -Jan 30, 2024 2:09:35 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/NusMinato/ip.git completed! -Jan 30, 2024 2:09:35 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/soons1/ip.git... -Jan 30, 2024 2:09:35 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Jolonauh/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Jolonauh/ip.git (master)... -Jan 30, 2024 2:09:35 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/evedaktyl/ip.git... -Jan 30, 2024 2:09:35 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ZhiWei1010/ip.git completed! -Jan 30, 2024 2:09:35 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/xuwen-ho/ip.git... -Jan 30, 2024 2:09:35 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/chewbum/ip.git... -Jan 30, 2024 2:09:35 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/evedaktyl/ip.git to complete... -Jan 30, 2024 2:09:35 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/soons1/ip.git to complete... -Jan 30, 2024 2:09:35 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/chewbum/ip.git to complete... -Jan 30, 2024 2:09:35 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/xuwen-ho/ip.git to complete... -Jan 30, 2024 2:09:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/yashpola/ip.git (master)... -Jan 30, 2024 2:09:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/maiyasaliha/ip.git (master)... -Jan 30, 2024 2:09:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/yashpola/ip.git (master)... -Jan 30, 2024 2:09:36 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/yashpola/ip.git (master) completed! -Jan 30, 2024 2:09:36 AM reposense.report.ReportGenerator analyzeRepos -INFO: [138/428] Analyzing https://github.com/alvinnzz/ip.git (master)... -Jan 30, 2024 2:09:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/maiyasaliha/ip.git (master)... -Jan 30, 2024 2:09:36 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/maiyasaliha/ip.git (master) completed! -Jan 30, 2024 2:09:36 AM reposense.report.ReportGenerator analyzeRepos -INFO: [139/428] Analyzing https://github.com/triciiaaa/ip.git (master)... -Jan 30, 2024 2:09:36 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/alvinnzz/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/alvinnzz/ip.git (master)... -Jan 30, 2024 2:09:36 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/triciiaaa/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/triciiaaa/ip.git (master)... -Jan 30, 2024 2:09:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Jolonauh/ip.git (master)... -Jan 30, 2024 2:09:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Jolonauh/ip.git (master)... -Jan 30, 2024 2:09:36 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Jolonauh/ip.git (master) completed! -Jan 30, 2024 2:09:36 AM reposense.report.ReportGenerator analyzeRepos -INFO: [140/428] Analyzing https://github.com/wolffe88/ip.git (master)... -Jan 30, 2024 2:09:36 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/wolffe88/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/wolffe88/ip.git (master)... -Jan 30, 2024 2:09:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/JiaXinEu/ip.git (master)... -Jan 30, 2024 2:09:36 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/evedaktyl/ip.git completed! -Jan 30, 2024 2:09:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/JiaXinEu/ip.git (master)... -Jan 30, 2024 2:09:36 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/JiaXinEu/ip.git (master) completed! -Jan 30, 2024 2:09:36 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/soons1/ip.git completed! -Jan 30, 2024 2:09:36 AM reposense.report.ReportGenerator analyzeRepos -INFO: [141/428] Analyzing https://github.com/menatahari/ip.git (master)... -Jan 30, 2024 2:09:36 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/tanjieling0/ip.git... -Jan 30, 2024 2:09:36 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/tanjieling0/ip.git to complete... -Jan 30, 2024 2:09:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/triciiaaa/ip.git (master)... -Jan 30, 2024 2:09:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/alvinnzz/ip.git (master)... -Jan 30, 2024 2:09:36 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/sun-ruiheng/ip.git... -Jan 30, 2024 2:09:36 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/xuwen-ho/ip.git completed! -Jan 30, 2024 2:09:36 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/chewbum/ip.git completed! -Jan 30, 2024 2:09:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/alvinnzz/ip.git (master)... -Jan 30, 2024 2:09:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/triciiaaa/ip.git (master)... -Jan 30, 2024 2:09:36 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/alvinnzz/ip.git (master) completed! -Jan 30, 2024 2:09:36 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/triciiaaa/ip.git (master) completed! -Jan 30, 2024 2:09:36 AM reposense.report.ReportGenerator analyzeRepos -INFO: [142/428] Analyzing https://github.com/modembcc/ip.git (master)... -Jan 30, 2024 2:09:36 AM reposense.report.ReportGenerator analyzeRepos -INFO: [143/428] Analyzing https://github.com/tsulim/ip.git (master)... -Jan 30, 2024 2:09:36 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/zhikaiong2001/ip.git... -Jan 30, 2024 2:09:36 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/bgopi23/ip.git... -Jan 30, 2024 2:09:36 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/sun-ruiheng/ip.git to complete... -Jan 30, 2024 2:09:36 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/menatahari/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/menatahari/ip.git (master)... -Jan 30, 2024 2:09:36 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/bgopi23/ip.git to complete... -Jan 30, 2024 2:09:36 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/modembcc/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/modembcc/ip.git (master)... -Jan 30, 2024 2:09:36 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/zhikaiong2001/ip.git to complete... -Jan 30, 2024 2:09:36 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/tsulim/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/tsulim/ip.git (master)... -Jan 30, 2024 2:09:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/menatahari/ip.git (master)... -Jan 30, 2024 2:09:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/tsulim/ip.git (master)... -Jan 30, 2024 2:09:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/menatahari/ip.git (master)... -Jan 30, 2024 2:09:36 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/menatahari/ip.git (master) completed! -Jan 30, 2024 2:09:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/tsulim/ip.git (master)... -Jan 30, 2024 2:09:36 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/tsulim/ip.git (master) completed! -Jan 30, 2024 2:09:36 AM reposense.report.ReportGenerator analyzeRepos -INFO: [144/428] Analyzing https://github.com/tanyunchao/ip.git (master)... -Jan 30, 2024 2:09:36 AM reposense.report.ReportGenerator analyzeRepos -INFO: [145/428] Analyzing https://github.com/Hwww23/ip.git (master)... -Jan 30, 2024 2:09:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/wolffe88/ip.git (master)... -Jan 30, 2024 2:09:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/modembcc/ip.git (master)... -Jan 30, 2024 2:09:36 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/tanyunchao/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/tanyunchao/ip.git (master)... -Jan 30, 2024 2:09:36 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tanjieling0/ip.git completed! -Jan 30, 2024 2:09:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/wolffe88/ip.git (master)... -Jan 30, 2024 2:09:36 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/wolffe88/ip.git (master) completed! -Jan 30, 2024 2:09:36 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/dhlee03/ip.git... -Jan 30, 2024 2:09:36 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/dhlee03/ip.git to complete... -Jan 30, 2024 2:09:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/modembcc/ip.git (master)... -Jan 30, 2024 2:09:36 AM reposense.report.ReportGenerator analyzeRepos -INFO: [146/428] Analyzing https://github.com/yashma-sonara/ip.git (master)... -Jan 30, 2024 2:09:36 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/modembcc/ip.git (master) completed! -Jan 30, 2024 2:09:36 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/sun-ruiheng/ip.git completed! -Jan 30, 2024 2:09:36 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Hwww23/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Hwww23/ip.git (master)... -Jan 30, 2024 2:09:36 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/bgopi23/ip.git completed! -Jan 30, 2024 2:09:36 AM reposense.report.ReportGenerator analyzeRepos -INFO: [147/428] Analyzing https://github.com/rickkoh/ip.git (master)... -Jan 30, 2024 2:09:36 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ReganChoy/ip.git... -Jan 30, 2024 2:09:36 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/LWS49/ip.git... -Jan 30, 2024 2:09:36 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/zhikaiong2001/ip.git completed! -Jan 30, 2024 2:09:36 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ReganChoy/ip.git to complete... -Jan 30, 2024 2:09:36 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ChillinRage/ip.git... -Jan 30, 2024 2:09:36 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/yashma-sonara/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/yashma-sonara/ip.git (master)... -Jan 30, 2024 2:09:36 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/rickkoh/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/rickkoh/ip.git (master)... -Jan 30, 2024 2:09:36 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/LWS49/ip.git to complete... -Jan 30, 2024 2:09:36 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ChillinRage/ip.git to complete... -Jan 30, 2024 2:09:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/tanyunchao/ip.git (master)... -Jan 30, 2024 2:09:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Hwww23/ip.git (master)... -Jan 30, 2024 2:09:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/rickkoh/ip.git (master)... -Jan 30, 2024 2:09:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/tanyunchao/ip.git (master)... -Jan 30, 2024 2:09:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/yashma-sonara/ip.git (master)... -Jan 30, 2024 2:09:36 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/tanyunchao/ip.git (master) completed! -Jan 30, 2024 2:09:36 AM reposense.report.ReportGenerator analyzeRepos -INFO: [148/428] Analyzing https://github.com/Zer0Legion/ip.git (master)... -Jan 30, 2024 2:09:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Hwww23/ip.git (master)... -Jan 30, 2024 2:09:36 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Hwww23/ip.git (master) completed! -Jan 30, 2024 2:09:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/rickkoh/ip.git (master)... -Jan 30, 2024 2:09:36 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/rickkoh/ip.git (master) completed! -Jan 30, 2024 2:09:36 AM reposense.report.ReportGenerator analyzeRepos -INFO: [149/428] Analyzing https://github.com/maze508/ip.git (master)... -Jan 30, 2024 2:09:36 AM reposense.report.ReportGenerator analyzeRepos -INFO: [150/428] Analyzing https://github.com/eunrcn/ip.git (master)... -Jan 30, 2024 2:09:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/yashma-sonara/ip.git (master)... -Jan 30, 2024 2:09:36 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/yashma-sonara/ip.git (master) completed! -Jan 30, 2024 2:09:36 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Zer0Legion/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Zer0Legion/ip.git (master)... -Jan 30, 2024 2:09:36 AM reposense.report.ReportGenerator analyzeRepos -INFO: [151/428] Analyzing https://github.com/ziyang27/ip.git (master)... -Jan 30, 2024 2:09:36 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/eunrcn/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/eunrcn/ip.git (master)... -Jan 30, 2024 2:09:36 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/LWS49/ip.git completed! -Jan 30, 2024 2:09:36 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/dhlee03/ip.git completed! -Jan 30, 2024 2:09:36 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Shauryan123/ip.git... -Jan 30, 2024 2:09:36 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ziyang27/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ziyang27/ip.git (master)... -Jan 30, 2024 2:09:36 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ReganChoy/ip.git completed! -Jan 30, 2024 2:09:36 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/maze508/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/maze508/ip.git (master)... -Jan 30, 2024 2:09:36 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Shauryan123/ip.git to complete... -Jan 30, 2024 2:09:36 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Colex2000/ip.git... -Jan 30, 2024 2:09:36 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ChillinRage/ip.git completed! -Jan 30, 2024 2:09:36 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/HusseinSafwan02/ip.git... -Jan 30, 2024 2:09:36 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ZHANGTIANYAO1/ip.git... -Jan 30, 2024 2:09:36 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Colex2000/ip.git to complete... -Jan 30, 2024 2:09:36 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ZHANGTIANYAO1/ip.git to complete... -Jan 30, 2024 2:09:36 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/HusseinSafwan02/ip.git to complete... -Jan 30, 2024 2:09:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ziyang27/ip.git (master)... -Jan 30, 2024 2:09:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/eunrcn/ip.git (master)... -Jan 30, 2024 2:09:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/eunrcn/ip.git (master)... -Jan 30, 2024 2:09:37 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/eunrcn/ip.git (master) completed! -Jan 30, 2024 2:09:37 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Shauryan123/ip.git completed! -Jan 30, 2024 2:09:37 AM reposense.report.ReportGenerator analyzeRepos -INFO: [152/428] Analyzing https://github.com/kwuunnn/ip.git (master)... -Jan 30, 2024 2:09:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ziyang27/ip.git (master)... -Jan 30, 2024 2:09:37 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ziyang27/ip.git (master) completed! -Jan 30, 2024 2:09:37 AM reposense.report.ReportGenerator analyzeRepos -INFO: [153/428] Analyzing https://github.com/miffi/ip.git (master)... -Jan 30, 2024 2:09:37 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Windofbitter/ip.git... -Jan 30, 2024 2:09:37 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ZHANGTIANYAO1/ip.git completed! -Jan 30, 2024 2:09:37 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Windofbitter/ip.git to complete... -Jan 30, 2024 2:09:37 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/quelinxiao/ip.git... -Jan 30, 2024 2:09:37 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:27 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/kwuunnn/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/kwuunnn/ip.git (master)... -Jan 30, 2024 2:09:37 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/HusseinSafwan02/ip.git completed! -Jan 30, 2024 2:09:37 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Colex2000/ip.git completed! -Jan 30, 2024 2:09:37 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/miffi/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/miffi/ip.git (master)... -Jan 30, 2024 2:09:37 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/quelinxiao/ip.git to complete... -Jan 30, 2024 2:09:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/maze508/ip.git (master)... -Jan 30, 2024 2:09:37 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ararchch/ip.git... -Jan 30, 2024 2:09:37 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/KiatLun/ip.git... -Jan 30, 2024 2:09:37 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ararchch/ip.git to complete... -Jan 30, 2024 2:09:37 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/KiatLun/ip.git to complete... -Jan 30, 2024 2:09:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/maze508/ip.git (master)... -Jan 30, 2024 2:09:37 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/maze508/ip.git (master) completed! -Jan 30, 2024 2:09:37 AM reposense.report.ReportGenerator analyzeRepos -INFO: [154/428] Analyzing https://github.com/KSSWSept20/ip.git (master)... -Jan 30, 2024 2:09:37 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:27 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/KSSWSept20/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/KSSWSept20/ip.git (master)... -Jan 30, 2024 2:09:37 AM reposense.report.RepoCloner waitForCloneProcess -WARNING: Exception met while trying to clone the repo "quelinxiao/ip[master]", will skip this repo. -reposense.system.CommandRunnerProcessException: Error returned from command git clone --bare 'https://github.com/quelinxiao/ip.git' 'repos/quelinxiao_ip/ip_bare' on path . : -Cloning into bare repository 'repos/quelinxiao_ip/ip_bare'... -fatal: could not read Username for 'https://github.com': No such device or address - - at reposense.system.CommandRunnerProcess.waitForProcess(CommandRunnerProcess.java:46) - at reposense.report.RepoCloner.waitForCloneProcess(RepoCloner.java:323) - at reposense.report.RepoCloner.getClonedRepoLocation(RepoCloner.java:123) - at reposense.report.ReportGenerator.cloneRepo(ReportGenerator.java:263) - at reposense.report.ReportGenerator.lambda$cloneAndAnalyzeRepos$0(ReportGenerator.java:208) - at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1700) - at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) - at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) - at java.base/java.lang.Thread.run(Thread.java:829) - -Jan 30, 2024 2:09:37 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Bandov/ip.git... -Jan 30, 2024 2:09:37 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Bandov/ip.git to complete... -Jan 30, 2024 2:09:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/kwuunnn/ip.git (master)... -Jan 30, 2024 2:09:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Zer0Legion/ip.git (master)... -Jan 30, 2024 2:09:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/kwuunnn/ip.git (master)... -Jan 30, 2024 2:09:37 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/kwuunnn/ip.git (master) completed! -Jan 30, 2024 2:09:37 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 6:32:27 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/zengzihui/ip.git completed! +Jan 30, 2024 6:32:27 AM reposense.report.ReportGenerator analyzeRepos INFO: [155/428] Analyzing https://github.com/zengzihui/ip.git (master)... -Jan 30, 2024 2:09:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Zer0Legion/ip.git (master)... -Jan 30, 2024 2:09:37 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Zer0Legion/ip.git (master) completed! -Jan 30, 2024 2:09:37 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:27 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Kaya3842/ip.git... +Jan 30, 2024 6:32:27 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Kaya3842/ip.git to complete... +Jan 30, 2024 6:32:27 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/zengzihui/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/zengzihui/ip.git (master)... -Jan 30, 2024 2:09:37 AM reposense.report.ReportGenerator analyzeRepos -INFO: [156/428] Analyzing https://github.com/sdevih/ip.git (master)... -Jan 30, 2024 2:09:37 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Windofbitter/ip.git completed! -Jan 30, 2024 2:09:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/kwuunnn/ip.git (master)... +Jan 30, 2024 6:32:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/kwuunnn/ip.git (master)... +Jan 30, 2024 6:32:27 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/kwuunnn/ip.git (master) completed! +Jan 30, 2024 6:32:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/KSSWSept20/ip.git (master)... -Jan 30, 2024 2:09:37 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/KiatLun/ip.git completed! -Jan 30, 2024 2:09:37 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/peienlim/ip.git... -Jan 30, 2024 2:09:37 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/zoebelle-pang/ip.git... -Jan 30, 2024 2:09:37 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/peienlim/ip.git to complete... -Jan 30, 2024 2:09:37 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/sdevih/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/sdevih/ip.git (master)... -Jan 30, 2024 2:09:37 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ararchch/ip.git completed! -Jan 30, 2024 2:09:37 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/zoebelle-pang/ip.git to complete... -Jan 30, 2024 2:09:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/KSSWSept20/ip.git (master)... -Jan 30, 2024 2:09:37 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:27 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/KSSWSept20/ip.git (master) completed! -Jan 30, 2024 2:09:37 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/tayziyi/ip.git... -Jan 30, 2024 2:09:37 AM reposense.report.ReportGenerator analyzeRepos -INFO: [157/428] Analyzing https://github.com/DingBao-sys/ip.git (master)... -Jan 30, 2024 2:09:37 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/tayziyi/ip.git to complete... -Jan 30, 2024 2:09:37 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Bandov/ip.git completed! -Jan 30, 2024 2:09:37 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/DingBao-sys/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/DingBao-sys/ip.git (master)... -Jan 30, 2024 2:09:37 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/R-Laksh/ip.git... -Jan 30, 2024 2:09:37 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/R-Laksh/ip.git to complete... -Jan 30, 2024 2:09:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/miffi/ip.git (master)... -Jan 30, 2024 2:09:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/zengzihui/ip.git (master)... -Jan 30, 2024 2:09:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/miffi/ip.git (master)... -Jan 30, 2024 2:09:37 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/miffi/ip.git (master) completed! -Jan 30, 2024 2:09:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/zengzihui/ip.git (master)... -Jan 30, 2024 2:09:37 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:27 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/zengzihui/ip.git (master) completed! -Jan 30, 2024 2:09:37 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 6:32:27 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/sdevih/ip.git completed! +Jan 30, 2024 6:32:27 AM reposense.report.ReportGenerator analyzeRepos +INFO: [156/428] Analyzing https://github.com/sdevih/ip.git (master)... +Jan 30, 2024 6:32:27 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/legionlegion/ip.git... +Jan 30, 2024 6:32:27 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/legionlegion/ip.git to complete... +Jan 30, 2024 6:32:27 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/sdevih/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/sdevih/ip.git (master)... +Jan 30, 2024 6:32:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/sdevih/ip.git (master)... +Jan 30, 2024 6:32:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/sdevih/ip.git (master)... +Jan 30, 2024 6:32:28 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/sdevih/ip.git (master) completed! +Jan 30, 2024 6:32:28 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/DingBao-sys/ip.git completed! +Jan 30, 2024 6:32:28 AM reposense.report.ReportGenerator analyzeRepos +INFO: [157/428] Analyzing https://github.com/DingBao-sys/ip.git (master)... +Jan 30, 2024 6:32:28 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/chiaryan/ip.git... +Jan 30, 2024 6:32:28 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/chiaryan/ip.git to complete... +Jan 30, 2024 6:32:28 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Jerome-j/ip.git completed! +Jan 30, 2024 6:32:28 AM reposense.report.ReportGenerator analyzeRepos INFO: [158/428] Analyzing https://github.com/Jerome-j/ip.git (master)... -Jan 30, 2024 2:09:37 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 6:32:28 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ChrisHo1341/ip.git... +Jan 30, 2024 6:32:28 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ChrisHo1341/ip.git to complete... +Jan 30, 2024 6:32:28 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/DingBao-sys/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/DingBao-sys/ip.git (master)... +Jan 30, 2024 6:32:28 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Jerome-j/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Jerome-j/ip.git (master)... +Jan 30, 2024 6:32:28 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Kaya3842/ip.git completed! +Jan 30, 2024 6:32:28 AM reposense.report.ReportGenerator analyzeRepos INFO: [159/428] Analyzing https://github.com/Kaya3842/ip.git (master)... -Jan 30, 2024 2:09:37 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:28 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/hjuntan/ip.git... +Jan 30, 2024 6:32:28 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/hjuntan/ip.git to complete... +Jan 30, 2024 6:32:28 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Kaya3842/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Kaya3842/ip.git (master)... -Jan 30, 2024 2:09:37 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Jerome-j/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Jerome-j/ip.git (master)... -Jan 30, 2024 2:09:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/sdevih/ip.git (master)... -Jan 30, 2024 2:09:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/sdevih/ip.git (master)... -Jan 30, 2024 2:09:37 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/sdevih/ip.git (master) completed! -Jan 30, 2024 2:09:37 AM reposense.report.ReportGenerator analyzeRepos -INFO: [160/428] Analyzing https://github.com/legionlegion/ip.git (master)... -Jan 30, 2024 2:09:37 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/legionlegion/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/legionlegion/ip.git (master)... -Jan 30, 2024 2:09:37 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/zoebelle-pang/ip.git completed! -Jan 30, 2024 2:09:37 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/peienlim/ip.git completed! -Jan 30, 2024 2:09:37 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Cedricaca/ip.git... -Jan 30, 2024 2:09:37 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/matthewken19/ip.git... -Jan 30, 2024 2:09:37 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/matthewken19/ip.git to complete... -Jan 30, 2024 2:09:37 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Cedricaca/ip.git to complete... -Jan 30, 2024 2:09:37 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tayziyi/ip.git completed! -Jan 30, 2024 2:09:37 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/taufiq/ip.git... -Jan 30, 2024 2:09:37 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/R-Laksh/ip.git completed! -Jan 30, 2024 2:09:37 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/gingerbreaf/ip.git... -Jan 30, 2024 2:09:37 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/taufiq/ip.git to complete... -Jan 30, 2024 2:09:37 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/gingerbreaf/ip.git to complete... -Jan 30, 2024 2:09:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/DingBao-sys/ip.git (master)... -Jan 30, 2024 2:09:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/DingBao-sys/ip.git (master)... -Jan 30, 2024 2:09:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Kaya3842/ip.git (master)... -Jan 30, 2024 2:09:37 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Jerome-j/ip.git (master)... +Jan 30, 2024 6:32:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/DingBao-sys/ip.git (master)... +Jan 30, 2024 6:32:28 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/DingBao-sys/ip.git (master) completed! -Jan 30, 2024 2:09:37 AM reposense.report.ReportGenerator analyzeRepos -INFO: [161/428] Analyzing https://github.com/chiaryan/ip.git (master)... -Jan 30, 2024 2:09:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Kaya3842/ip.git (master)... -Jan 30, 2024 2:09:37 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:28 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Kaya3842/ip.git (master) completed! -Jan 30, 2024 2:09:37 AM reposense.report.ReportGenerator analyzeRepos -INFO: [162/428] Analyzing https://github.com/ChrisHo1341/ip.git (master)... -Jan 30, 2024 2:09:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Jerome-j/ip.git (master)... +Jan 30, 2024 6:32:28 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Jerome-j/ip.git (master) completed! +Jan 30, 2024 6:32:28 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/legionlegion/ip.git completed! +Jan 30, 2024 6:32:28 AM reposense.report.ReportGenerator analyzeRepos +INFO: [160/428] Analyzing https://github.com/legionlegion/ip.git (master)... +Jan 30, 2024 6:32:28 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AwJoey/ip.git... +Jan 30, 2024 6:32:28 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AwJoey/ip.git to complete... +Jan 30, 2024 6:32:28 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/legionlegion/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/legionlegion/ip.git (master)... +Jan 30, 2024 6:32:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/legionlegion/ip.git (master)... -Jan 30, 2024 2:09:37 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/chiaryan/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/chiaryan/ip.git (master)... -Jan 30, 2024 2:09:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Jerome-j/ip.git (master)... -Jan 30, 2024 2:09:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/legionlegion/ip.git (master)... -Jan 30, 2024 2:09:37 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:28 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/legionlegion/ip.git (master) completed! -Jan 30, 2024 2:09:37 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:28 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ChrisHo1341/ip.git completed! +Jan 30, 2024 6:32:28 AM reposense.report.ReportGenerator analyzeRepos +INFO: [161/428] Analyzing https://github.com/ChrisHo1341/ip.git (master)... +Jan 30, 2024 6:32:28 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ZhiWei1010/ip.git... +Jan 30, 2024 6:32:28 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ZhiWei1010/ip.git to complete... +Jan 30, 2024 6:32:28 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/chiaryan/ip.git completed! +Jan 30, 2024 6:32:28 AM reposense.report.ReportGenerator analyzeRepos +INFO: [162/428] Analyzing https://github.com/chiaryan/ip.git (master)... +Jan 30, 2024 6:32:28 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ReflectiveObsidian/ip.git... +Jan 30, 2024 6:32:28 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ReflectiveObsidian/ip.git to complete... +Jan 30, 2024 6:32:28 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ChrisHo1341/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:37 AM reposense.report.ReportGenerator analyzeRepos -INFO: [163/428] Analyzing https://github.com/hjuntan/ip.git (master)... -Jan 30, 2024 2:09:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ChrisHo1341/ip.git (master)... -Jan 30, 2024 2:09:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Jerome-j/ip.git (master)... -Jan 30, 2024 2:09:37 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Jerome-j/ip.git (master) completed! -Jan 30, 2024 2:09:37 AM reposense.report.ReportGenerator analyzeRepos -INFO: [164/428] Analyzing https://github.com/ReflectiveObsidian/ip.git (master)... -Jan 30, 2024 2:09:37 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:29 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/chiaryan/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/chiaryan/ip.git (master)... +Jan 30, 2024 6:32:29 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/hjuntan/ip.git completed! +Jan 30, 2024 6:32:29 AM reposense.report.ReportGenerator analyzeRepos +INFO: [163/428] Analyzing https://github.com/hjuntan/ip.git (master)... +Jan 30, 2024 6:32:29 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/NusMinato/ip.git... +Jan 30, 2024 6:32:29 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/NusMinato/ip.git to complete... +Jan 30, 2024 6:32:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ChrisHo1341/ip.git (master)... +Jan 30, 2024 6:32:29 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/hjuntan/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/hjuntan/ip.git (master)... -Jan 30, 2024 2:09:37 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ReflectiveObsidian/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ReflectiveObsidian/ip.git (master)... -Jan 30, 2024 2:09:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ChrisHo1341/ip.git (master)... -Jan 30, 2024 2:09:38 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Cedricaca/ip.git completed! -Jan 30, 2024 2:09:38 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/matthewken19/ip.git completed! -Jan 30, 2024 2:09:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ChrisHo1341/ip.git (master)... -Jan 30, 2024 2:09:38 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:29 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ChrisHo1341/ip.git (master) completed! -Jan 30, 2024 2:09:38 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Zack-Tay/ip.git... -Jan 30, 2024 2:09:38 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/darryl-chan/ip.git... -Jan 30, 2024 2:09:38 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/darryl-chan/ip.git to complete... -Jan 30, 2024 2:09:38 AM reposense.report.ReportGenerator analyzeRepos -INFO: [165/428] Analyzing https://github.com/NusMinato/ip.git (master)... -Jan 30, 2024 2:09:38 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Zack-Tay/ip.git to complete... -Jan 30, 2024 2:09:38 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/taufiq/ip.git completed! -Jan 30, 2024 2:09:38 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/JustWeiHao/ip.git... -Jan 30, 2024 2:09:38 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/gingerbreaf/ip.git completed! -Jan 30, 2024 2:09:38 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/JustWeiHao/ip.git to complete... -Jan 30, 2024 2:09:38 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/NusMinato/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/NusMinato/ip.git (master)... -Jan 30, 2024 2:09:38 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/brennalaurentan/ip.git... -Jan 30, 2024 2:09:38 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/brennalaurentan/ip.git to complete... -Jan 30, 2024 2:09:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/chiaryan/ip.git (master)... -Jan 30, 2024 2:09:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/hjuntan/ip.git (master)... -Jan 30, 2024 2:09:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ReflectiveObsidian/ip.git (master)... -Jan 30, 2024 2:09:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/chiaryan/ip.git (master)... -Jan 30, 2024 2:09:38 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:29 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/chiaryan/ip.git (master) completed! -Jan 30, 2024 2:09:38 AM reposense.report.ReportGenerator analyzeRepos -INFO: [166/428] Analyzing https://github.com/AwJoey/ip.git (master)... -Jan 30, 2024 2:09:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/hjuntan/ip.git (master)... +Jan 30, 2024 6:32:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/hjuntan/ip.git (master)... -Jan 30, 2024 2:09:38 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:29 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/hjuntan/ip.git (master) completed! -Jan 30, 2024 2:09:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ReflectiveObsidian/ip.git (master)... -Jan 30, 2024 2:09:38 AM reposense.report.ReportGenerator analyzeRepos -INFO: [167/428] Analyzing https://github.com/ZhiWei1010/ip.git (master)... -Jan 30, 2024 2:09:38 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ReflectiveObsidian/ip.git (master) completed! -Jan 30, 2024 2:09:38 AM reposense.report.ReportGenerator analyzeRepos -INFO: [168/428] Analyzing https://github.com/evedaktyl/ip.git (master)... -Jan 30, 2024 2:09:38 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:29 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AwJoey/ip.git completed! +Jan 30, 2024 6:32:29 AM reposense.report.ReportGenerator analyzeRepos +INFO: [164/428] Analyzing https://github.com/AwJoey/ip.git (master)... +Jan 30, 2024 6:32:29 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/soons1/ip.git... +Jan 30, 2024 6:32:29 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/soons1/ip.git to complete... +Jan 30, 2024 6:32:29 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AwJoey/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AwJoey/ip.git (master)... -Jan 30, 2024 2:09:38 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AwJoey/ip.git (master)... +Jan 30, 2024 6:32:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AwJoey/ip.git (master)... +Jan 30, 2024 6:32:29 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AwJoey/ip.git (master) completed! +Jan 30, 2024 6:32:29 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ZhiWei1010/ip.git completed! +Jan 30, 2024 6:32:29 AM reposense.report.ReportGenerator analyzeRepos +INFO: [165/428] Analyzing https://github.com/ZhiWei1010/ip.git (master)... +Jan 30, 2024 6:32:29 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/evedaktyl/ip.git... +Jan 30, 2024 6:32:29 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/evedaktyl/ip.git to complete... +Jan 30, 2024 6:32:29 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ZhiWei1010/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ZhiWei1010/ip.git (master)... -Jan 30, 2024 2:09:38 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/evedaktyl/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/evedaktyl/ip.git (master)... -Jan 30, 2024 2:09:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:29 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ReflectiveObsidian/ip.git completed! +Jan 30, 2024 6:32:29 AM reposense.report.ReportGenerator analyzeRepos +INFO: [166/428] Analyzing https://github.com/ReflectiveObsidian/ip.git (master)... +Jan 30, 2024 6:32:29 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/xuwen-ho/ip.git... +Jan 30, 2024 6:32:29 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/NusMinato/ip.git completed! +Jan 30, 2024 6:32:29 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/xuwen-ho/ip.git to complete... +Jan 30, 2024 6:32:29 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/chewbum/ip.git... +Jan 30, 2024 6:32:29 AM reposense.report.ReportGenerator analyzeRepos +INFO: [167/428] Analyzing https://github.com/NusMinato/ip.git (master)... +Jan 30, 2024 6:32:29 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/chewbum/ip.git to complete... +Jan 30, 2024 6:32:29 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ReflectiveObsidian/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ReflectiveObsidian/ip.git (master)... +Jan 30, 2024 6:32:29 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/NusMinato/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/NusMinato/ip.git (master)... +Jan 30, 2024 6:32:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ZhiWei1010/ip.git (master)... +Jan 30, 2024 6:32:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ZhiWei1010/ip.git (master)... +Jan 30, 2024 6:32:29 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ZhiWei1010/ip.git (master) completed! +Jan 30, 2024 6:32:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ReflectiveObsidian/ip.git (master)... +Jan 30, 2024 6:32:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ReflectiveObsidian/ip.git (master)... +Jan 30, 2024 6:32:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/NusMinato/ip.git (master)... -Jan 30, 2024 2:09:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:29 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ReflectiveObsidian/ip.git (master) completed! +Jan 30, 2024 6:32:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/NusMinato/ip.git (master)... -Jan 30, 2024 2:09:38 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:29 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/NusMinato/ip.git (master) completed! -Jan 30, 2024 2:09:38 AM reposense.report.ReportGenerator analyzeRepos -INFO: [169/428] Analyzing https://github.com/soons1/ip.git (master)... -Jan 30, 2024 2:09:38 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Zack-Tay/ip.git completed! -Jan 30, 2024 2:09:38 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/darryl-chan/ip.git completed! -Jan 30, 2024 2:09:38 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/0-yibai/ip.git... -Jan 30, 2024 2:09:38 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:30 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/soons1/ip.git completed! +Jan 30, 2024 6:32:30 AM reposense.report.ReportGenerator analyzeRepos +INFO: [168/428] Analyzing https://github.com/soons1/ip.git (master)... +Jan 30, 2024 6:32:30 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/tanjieling0/ip.git... +Jan 30, 2024 6:32:30 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/tanjieling0/ip.git to complete... +Jan 30, 2024 6:32:30 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/soons1/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/soons1/ip.git (master)... -Jan 30, 2024 2:09:38 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/0-yibai/ip.git to complete... -Jan 30, 2024 2:09:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AwJoey/ip.git (master)... -Jan 30, 2024 2:09:38 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Apzure/ip.git... -Jan 30, 2024 2:09:38 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Apzure/ip.git to complete... -Jan 30, 2024 2:09:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AwJoey/ip.git (master)... -Jan 30, 2024 2:09:38 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AwJoey/ip.git (master) completed! -Jan 30, 2024 2:09:38 AM reposense.report.ReportGenerator analyzeRepos -INFO: [170/428] Analyzing https://github.com/chewbum/ip.git (master)... -Jan 30, 2024 2:09:38 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/JustWeiHao/ip.git completed! -Jan 30, 2024 2:09:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ZhiWei1010/ip.git (master)... -Jan 30, 2024 2:09:38 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jxunze/ip.git... -Jan 30, 2024 2:09:38 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jxunze/ip.git to complete... -Jan 30, 2024 2:09:38 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/soons1/ip.git (master)... +Jan 30, 2024 6:32:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/soons1/ip.git (master)... +Jan 30, 2024 6:32:30 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/soons1/ip.git (master) completed! +Jan 30, 2024 6:32:30 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/evedaktyl/ip.git completed! +Jan 30, 2024 6:32:30 AM reposense.report.ReportGenerator analyzeRepos +INFO: [169/428] Analyzing https://github.com/evedaktyl/ip.git (master)... +Jan 30, 2024 6:32:30 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/sun-ruiheng/ip.git... +Jan 30, 2024 6:32:30 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/sun-ruiheng/ip.git to complete... +Jan 30, 2024 6:32:30 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/evedaktyl/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/evedaktyl/ip.git (master)... +Jan 30, 2024 6:32:30 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/xuwen-ho/ip.git completed! +Jan 30, 2024 6:32:30 AM reposense.report.ReportGenerator analyzeRepos +INFO: [170/428] Analyzing https://github.com/xuwen-ho/ip.git (master)... +Jan 30, 2024 6:32:30 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/zhikaiong2001/ip.git... +Jan 30, 2024 6:32:30 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/zhikaiong2001/ip.git to complete... +Jan 30, 2024 6:32:30 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/chewbum/ip.git completed! +Jan 30, 2024 6:32:30 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/bgopi23/ip.git... +Jan 30, 2024 6:32:30 AM reposense.report.ReportGenerator analyzeRepos +INFO: [171/428] Analyzing https://github.com/chewbum/ip.git (master)... +Jan 30, 2024 6:32:30 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/bgopi23/ip.git to complete... +Jan 30, 2024 6:32:30 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/xuwen-ho/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/xuwen-ho/ip.git (master)... +Jan 30, 2024 6:32:30 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/chewbum/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/chewbum/ip.git (master)... -Jan 30, 2024 2:09:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/evedaktyl/ip.git (master)... -Jan 30, 2024 2:09:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ZhiWei1010/ip.git (master)... -Jan 30, 2024 2:09:38 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ZhiWei1010/ip.git (master) completed! -Jan 30, 2024 2:09:38 AM reposense.report.ReportGenerator analyzeRepos -INFO: [171/428] Analyzing https://github.com/xuwen-ho/ip.git (master)... -Jan 30, 2024 2:09:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/evedaktyl/ip.git (master)... -Jan 30, 2024 2:09:38 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:30 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/evedaktyl/ip.git (master) completed! -Jan 30, 2024 2:09:38 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/brennalaurentan/ip.git completed! -Jan 30, 2024 2:09:38 AM reposense.report.ReportGenerator analyzeRepos -INFO: [172/428] Analyzing https://github.com/tanjieling0/ip.git (master)... -Jan 30, 2024 2:09:38 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/alphajae11/ip.git... -Jan 30, 2024 2:09:38 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/xuwen-ho/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/xuwen-ho/ip.git (master)... -Jan 30, 2024 2:09:38 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/alphajae11/ip.git to complete... -Jan 30, 2024 2:09:38 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/tanjieling0/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/tanjieling0/ip.git (master)... -Jan 30, 2024 2:09:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/soons1/ip.git (master)... -Jan 30, 2024 2:09:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/chewbum/ip.git (master)... -Jan 30, 2024 2:09:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/soons1/ip.git (master)... -Jan 30, 2024 2:09:38 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/soons1/ip.git (master) completed! -Jan 30, 2024 2:09:38 AM reposense.report.ReportGenerator analyzeRepos -INFO: [173/428] Analyzing https://github.com/bgopi23/ip.git (master)... -Jan 30, 2024 2:09:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/xuwen-ho/ip.git (master)... -Jan 30, 2024 2:09:38 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Apzure/ip.git completed! -Jan 30, 2024 2:09:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/chewbum/ip.git (master)... -Jan 30, 2024 2:09:38 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/chewbum/ip.git (master) completed! -Jan 30, 2024 2:09:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/xuwen-ho/ip.git (master)... -Jan 30, 2024 2:09:38 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:30 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/xuwen-ho/ip.git (master) completed! -Jan 30, 2024 2:09:38 AM reposense.report.ReportGenerator analyzeRepos -INFO: [174/428] Analyzing https://github.com/sun-ruiheng/ip.git (master)... -Jan 30, 2024 2:09:38 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/chewbum/ip.git (master)... +Jan 30, 2024 6:32:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/chewbum/ip.git (master)... +Jan 30, 2024 6:32:30 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/chewbum/ip.git (master) completed! +Jan 30, 2024 6:32:31 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tanjieling0/ip.git completed! +Jan 30, 2024 6:32:31 AM reposense.report.ReportGenerator analyzeRepos +INFO: [172/428] Analyzing https://github.com/tanjieling0/ip.git (master)... +Jan 30, 2024 6:32:31 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/dhlee03/ip.git... +Jan 30, 2024 6:32:31 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/dhlee03/ip.git to complete... +Jan 30, 2024 6:32:31 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/tanjieling0/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/tanjieling0/ip.git (master)... +Jan 30, 2024 6:32:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/tanjieling0/ip.git (master)... +Jan 30, 2024 6:32:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/tanjieling0/ip.git (master)... +Jan 30, 2024 6:32:31 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/tanjieling0/ip.git (master) completed! +Jan 30, 2024 6:32:31 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/sun-ruiheng/ip.git completed! +Jan 30, 2024 6:32:31 AM reposense.report.ReportGenerator analyzeRepos +INFO: [173/428] Analyzing https://github.com/sun-ruiheng/ip.git (master)... +Jan 30, 2024 6:32:31 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ReganChoy/ip.git... +Jan 30, 2024 6:32:31 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ReganChoy/ip.git to complete... +Jan 30, 2024 6:32:31 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/sun-ruiheng/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/sun-ruiheng/ip.git (master)... +Jan 30, 2024 6:32:31 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/bgopi23/ip.git completed! +Jan 30, 2024 6:32:31 AM reposense.report.ReportGenerator analyzeRepos +INFO: [174/428] Analyzing https://github.com/bgopi23/ip.git (master)... +Jan 30, 2024 6:32:31 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/LWS49/ip.git... +Jan 30, 2024 6:32:31 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/LWS49/ip.git to complete... +Jan 30, 2024 6:32:31 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/zhikaiong2001/ip.git completed! +Jan 30, 2024 6:32:31 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/bgopi23/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/bgopi23/ip.git (master)... -Jan 30, 2024 2:09:38 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/0-yibai/ip.git completed! -Jan 30, 2024 2:09:38 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 6:32:31 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ChillinRage/ip.git... +Jan 30, 2024 6:32:31 AM reposense.report.ReportGenerator analyzeRepos INFO: [175/428] Analyzing https://github.com/zhikaiong2001/ip.git (master)... -Jan 30, 2024 2:09:38 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/yespiggy/ip.git... -Jan 30, 2024 2:09:38 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/raysonchia/ip.git... -Jan 30, 2024 2:09:38 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/sun-ruiheng/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/sun-ruiheng/ip.git (master)... -Jan 30, 2024 2:09:38 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/yespiggy/ip.git to complete... -Jan 30, 2024 2:09:38 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/raysonchia/ip.git to complete... -Jan 30, 2024 2:09:38 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:31 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ChillinRage/ip.git to complete... +Jan 30, 2024 6:32:31 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/zhikaiong2001/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/zhikaiong2001/ip.git (master)... -Jan 30, 2024 2:09:38 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jxunze/ip.git completed! -Jan 30, 2024 2:09:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/tanjieling0/ip.git (master)... -Jan 30, 2024 2:09:38 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/bachletuankhai/ip.git... -Jan 30, 2024 2:09:38 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/alphajae11/ip.git completed! -Jan 30, 2024 2:09:38 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/bachletuankhai/ip.git to complete... -Jan 30, 2024 2:09:38 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/joelgoh1/ip.git... -Jan 30, 2024 2:09:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/tanjieling0/ip.git (master)... -Jan 30, 2024 2:09:38 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/tanjieling0/ip.git (master) completed! -Jan 30, 2024 2:09:38 AM reposense.report.ReportGenerator analyzeRepos -INFO: [176/428] Analyzing https://github.com/LWS49/ip.git (master)... -Jan 30, 2024 2:09:38 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/joelgoh1/ip.git to complete... -Jan 30, 2024 2:09:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/sun-ruiheng/ip.git (master)... +Jan 30, 2024 6:32:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/bgopi23/ip.git (master)... -Jan 30, 2024 2:09:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/sun-ruiheng/ip.git (master)... +Jan 30, 2024 6:32:31 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/sun-ruiheng/ip.git (master) completed! +Jan 30, 2024 6:32:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/bgopi23/ip.git (master)... -Jan 30, 2024 2:09:38 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:31 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/bgopi23/ip.git (master) completed! -Jan 30, 2024 2:09:38 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/LWS49/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/LWS49/ip.git (master)... -Jan 30, 2024 2:09:38 AM reposense.report.ReportGenerator analyzeRepos -INFO: [177/428] Analyzing https://github.com/ReganChoy/ip.git (master)... -Jan 30, 2024 2:09:38 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ReganChoy/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ReganChoy/ip.git (master)... -Jan 30, 2024 2:09:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/zhikaiong2001/ip.git (master)... -Jan 30, 2024 2:09:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/sun-ruiheng/ip.git (master)... -Jan 30, 2024 2:09:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/zhikaiong2001/ip.git (master)... -Jan 30, 2024 2:09:38 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:31 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/zhikaiong2001/ip.git (master) completed! -Jan 30, 2024 2:09:38 AM reposense.report.ReportGenerator analyzeRepos -INFO: [178/428] Analyzing https://github.com/dhlee03/ip.git (master)... -Jan 30, 2024 2:09:38 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/yespiggy/ip.git completed! -Jan 30, 2024 2:09:38 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/raysonchia/ip.git completed! -Jan 30, 2024 2:09:38 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/YuZizhen/ip.git... -Jan 30, 2024 2:09:38 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:31 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/dhlee03/ip.git completed! +Jan 30, 2024 6:32:31 AM reposense.report.ReportGenerator analyzeRepos +INFO: [176/428] Analyzing https://github.com/dhlee03/ip.git (master)... +Jan 30, 2024 6:32:31 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Shauryan123/ip.git... +Jan 30, 2024 6:32:31 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Shauryan123/ip.git to complete... +Jan 30, 2024 6:32:31 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/dhlee03/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/dhlee03/ip.git (master)... -Jan 30, 2024 2:09:38 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/SherwynNg/ip.git... -Jan 30, 2024 2:09:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/sun-ruiheng/ip.git (master)... -Jan 30, 2024 2:09:38 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/SherwynNg/ip.git to complete... -Jan 30, 2024 2:09:38 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/bachletuankhai/ip.git completed! -Jan 30, 2024 2:09:39 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/sun-ruiheng/ip.git (master) completed! -Jan 30, 2024 2:09:39 AM reposense.report.ReportGenerator analyzeRepos -INFO: [179/428] Analyzing https://github.com/ChillinRage/ip.git (master)... -Jan 30, 2024 2:09:39 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/YuZizhen/ip.git to complete... -Jan 30, 2024 2:09:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/LWS49/ip.git (master)... -Jan 30, 2024 2:09:39 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/kab-dot/ip.git... -Jan 30, 2024 2:09:39 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/joelgoh1/ip.git completed! -Jan 30, 2024 2:09:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/dhlee03/ip.git (master)... +Jan 30, 2024 6:32:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/dhlee03/ip.git (master)... +Jan 30, 2024 6:32:31 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/dhlee03/ip.git (master) completed! +Jan 30, 2024 6:32:32 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ReganChoy/ip.git completed! +Jan 30, 2024 6:32:32 AM reposense.report.ReportGenerator analyzeRepos +INFO: [177/428] Analyzing https://github.com/ReganChoy/ip.git (master)... +Jan 30, 2024 6:32:32 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Colex2000/ip.git... +Jan 30, 2024 6:32:32 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Colex2000/ip.git to complete... +Jan 30, 2024 6:32:32 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ReganChoy/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ReganChoy/ip.git (master)... +Jan 30, 2024 6:32:32 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/LWS49/ip.git completed! +Jan 30, 2024 6:32:32 AM reposense.report.ReportGenerator analyzeRepos +INFO: [178/428] Analyzing https://github.com/LWS49/ip.git (master)... +Jan 30, 2024 6:32:32 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/HusseinSafwan02/ip.git... +Jan 30, 2024 6:32:32 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/HusseinSafwan02/ip.git to complete... +Jan 30, 2024 6:32:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ReganChoy/ip.git (master)... -Jan 30, 2024 2:09:39 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/belligerentbeagle/ip.git... -Jan 30, 2024 2:09:39 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/kab-dot/ip.git to complete... -Jan 30, 2024 2:09:39 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ReganChoy/ip.git (master)... +Jan 30, 2024 6:32:32 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ReganChoy/ip.git (master) completed! +Jan 30, 2024 6:32:32 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/LWS49/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/LWS49/ip.git (master)... +Jan 30, 2024 6:32:32 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ChillinRage/ip.git completed! +Jan 30, 2024 6:32:32 AM reposense.report.ReportGenerator analyzeRepos +INFO: [179/428] Analyzing https://github.com/ChillinRage/ip.git (master)... +Jan 30, 2024 6:32:32 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ZHANGTIANYAO1/ip.git... +Jan 30, 2024 6:32:32 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ZHANGTIANYAO1/ip.git to complete... +Jan 30, 2024 6:32:32 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ChillinRage/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ChillinRage/ip.git (master)... -Jan 30, 2024 2:09:39 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/belligerentbeagle/ip.git to complete... -Jan 30, 2024 2:09:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/LWS49/ip.git (master)... +Jan 30, 2024 6:32:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/LWS49/ip.git (master)... -Jan 30, 2024 2:09:39 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:32 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/LWS49/ip.git (master) completed! -Jan 30, 2024 2:09:39 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 6:32:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ChillinRage/ip.git (master)... +Jan 30, 2024 6:32:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ChillinRage/ip.git (master)... +Jan 30, 2024 6:32:32 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ChillinRage/ip.git (master) completed! +Jan 30, 2024 6:32:32 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Shauryan123/ip.git completed! +Jan 30, 2024 6:32:32 AM reposense.report.ReportGenerator analyzeRepos INFO: [180/428] Analyzing https://github.com/Shauryan123/ip.git (master)... -Jan 30, 2024 2:09:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ReganChoy/ip.git (master)... -Jan 30, 2024 2:09:39 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ReganChoy/ip.git (master) completed! -Jan 30, 2024 2:09:39 AM reposense.report.ReportGenerator analyzeRepos -INFO: [181/428] Analyzing https://github.com/ZHANGTIANYAO1/ip.git (master)... -Jan 30, 2024 2:09:39 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:32 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Windofbitter/ip.git... +Jan 30, 2024 6:32:32 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Windofbitter/ip.git to complete... +Jan 30, 2024 6:32:32 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Shauryan123/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Shauryan123/ip.git (master)... -Jan 30, 2024 2:09:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/dhlee03/ip.git (master)... -Jan 30, 2024 2:09:39 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ZHANGTIANYAO1/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ZHANGTIANYAO1/ip.git (master)... -Jan 30, 2024 2:09:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/dhlee03/ip.git (master)... -Jan 30, 2024 2:09:39 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/dhlee03/ip.git (master) completed! -Jan 30, 2024 2:09:39 AM reposense.report.ReportGenerator analyzeRepos -INFO: [182/428] Analyzing https://github.com/Colex2000/ip.git (master)... -Jan 30, 2024 2:09:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ChillinRage/ip.git (master)... -Jan 30, 2024 2:09:39 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Shauryan123/ip.git (master)... +Jan 30, 2024 6:32:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Shauryan123/ip.git (master)... +Jan 30, 2024 6:32:32 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Shauryan123/ip.git (master) completed! +Jan 30, 2024 6:32:32 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Colex2000/ip.git completed! +Jan 30, 2024 6:32:32 AM reposense.report.ReportGenerator analyzeRepos +INFO: [181/428] Analyzing https://github.com/Colex2000/ip.git (master)... +Jan 30, 2024 6:32:32 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/quelinxiao/ip.git... +Jan 30, 2024 6:32:32 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/quelinxiao/ip.git to complete... +Jan 30, 2024 6:32:32 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Colex2000/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Colex2000/ip.git (master)... -Jan 30, 2024 2:09:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ChillinRage/ip.git (master)... -Jan 30, 2024 2:09:39 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ChillinRage/ip.git (master) completed! -Jan 30, 2024 2:09:39 AM reposense.report.ReportGenerator analyzeRepos -INFO: [183/428] Analyzing https://github.com/HusseinSafwan02/ip.git (master)... -Jan 30, 2024 2:09:39 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:32 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/HusseinSafwan02/ip.git completed! +Jan 30, 2024 6:32:32 AM reposense.report.ReportGenerator analyzeRepos +INFO: [182/428] Analyzing https://github.com/HusseinSafwan02/ip.git (master)... +Jan 30, 2024 6:32:32 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ararchch/ip.git... +Jan 30, 2024 6:32:32 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ararchch/ip.git to complete... +Jan 30, 2024 6:32:32 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/HusseinSafwan02/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/HusseinSafwan02/ip.git (master)... -Jan 30, 2024 2:09:39 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/YuZizhen/ip.git completed! -Jan 30, 2024 2:09:39 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ongzhili/ip.git... -Jan 30, 2024 2:09:39 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ongzhili/ip.git to complete... -Jan 30, 2024 2:09:39 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/SherwynNg/ip.git completed! -Jan 30, 2024 2:09:39 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Dethada/ip.git... -Jan 30, 2024 2:09:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Shauryan123/ip.git (master)... -Jan 30, 2024 2:09:39 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Dethada/ip.git to complete... -Jan 30, 2024 2:09:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:32 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ZHANGTIANYAO1/ip.git completed! +Jan 30, 2024 6:32:32 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/KiatLun/ip.git... +Jan 30, 2024 6:32:32 AM reposense.report.ReportGenerator analyzeRepos +INFO: [183/428] Analyzing https://github.com/ZHANGTIANYAO1/ip.git (master)... +Jan 30, 2024 6:32:33 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/KiatLun/ip.git to complete... +Jan 30, 2024 6:32:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/HusseinSafwan02/ip.git (master)... -Jan 30, 2024 2:09:39 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/kab-dot/ip.git completed! -Jan 30, 2024 2:09:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Shauryan123/ip.git (master)... -Jan 30, 2024 2:09:39 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Shauryan123/ip.git (master) completed! -Jan 30, 2024 2:09:39 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/belligerentbeagle/ip.git completed! -Jan 30, 2024 2:09:39 AM reposense.report.ReportGenerator analyzeRepos -INFO: [184/428] Analyzing https://github.com/Windofbitter/ip.git (master)... -Jan 30, 2024 2:09:39 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/yuhinarita/ip.git... -Jan 30, 2024 2:09:39 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/vnnamng/ip.git... -Jan 30, 2024 2:09:39 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/yuhinarita/ip.git to complete... -Jan 30, 2024 2:09:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/HusseinSafwan02/ip.git (master)... -Jan 30, 2024 2:09:39 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/HusseinSafwan02/ip.git (master) completed! -Jan 30, 2024 2:09:39 AM reposense.report.ReportGenerator analyzeRepos -INFO: [185/428] Analyzing https://github.com/KiatLun/ip.git (master)... -Jan 30, 2024 2:09:39 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/vnnamng/ip.git to complete... -Jan 30, 2024 2:09:39 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Windofbitter/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Windofbitter/ip.git (master)... -Jan 30, 2024 2:09:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/HusseinSafwan02/ip.git (master)... +Jan 30, 2024 6:32:33 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/HusseinSafwan02/ip.git (master) completed! +Jan 30, 2024 6:32:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Colex2000/ip.git (master)... -Jan 30, 2024 2:09:39 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/KiatLun/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/KiatLun/ip.git (master)... -Jan 30, 2024 2:09:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:33 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ZHANGTIANYAO1/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ZHANGTIANYAO1/ip.git (master)... +Jan 30, 2024 6:32:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Colex2000/ip.git (master)... -Jan 30, 2024 2:09:39 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:33 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Colex2000/ip.git (master) completed! -Jan 30, 2024 2:09:39 AM reposense.report.ReportGenerator analyzeRepos -INFO: [186/428] Analyzing https://github.com/ararchch/ip.git (master)... -Jan 30, 2024 2:09:39 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:33 AM reposense.report.RepoCloner waitForCloneProcess +WARNING: Exception met while trying to clone the repo "quelinxiao/ip[master]", will skip this repo. +reposense.system.CommandRunnerProcessException: Error returned from command git clone --bare 'https://github.com/quelinxiao/ip.git' 'repos/quelinxiao_ip/ip_bare' on path . : +Cloning into bare repository 'repos/quelinxiao_ip/ip_bare'... +fatal: could not read Username for 'https://github.com': No such device or address + + at reposense.system.CommandRunnerProcess.waitForProcess(CommandRunnerProcess.java:46) + at reposense.report.RepoCloner.waitForCloneProcess(RepoCloner.java:323) + at reposense.report.RepoCloner.getClonedRepoLocation(RepoCloner.java:123) + at reposense.report.ReportGenerator.cloneRepo(ReportGenerator.java:263) + at reposense.report.ReportGenerator.lambda$cloneAndAnalyzeRepos$0(ReportGenerator.java:208) + at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1700) + at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) + at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) + at java.base/java.lang.Thread.run(Thread.java:829) + +Jan 30, 2024 6:32:33 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Bandov/ip.git... +Jan 30, 2024 6:32:33 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Bandov/ip.git to complete... +Jan 30, 2024 6:32:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ZHANGTIANYAO1/ip.git (master)... +Jan 30, 2024 6:32:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ZHANGTIANYAO1/ip.git (master)... +Jan 30, 2024 6:32:33 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ZHANGTIANYAO1/ip.git (master) completed! +Jan 30, 2024 6:32:33 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Windofbitter/ip.git completed! +Jan 30, 2024 6:32:33 AM reposense.report.ReportGenerator analyzeRepos +INFO: [184/428] Analyzing https://github.com/Windofbitter/ip.git (master)... +Jan 30, 2024 6:32:33 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/peienlim/ip.git... +Jan 30, 2024 6:32:33 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/peienlim/ip.git to complete... +Jan 30, 2024 6:32:33 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Windofbitter/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Windofbitter/ip.git (master)... +Jan 30, 2024 6:32:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Windofbitter/ip.git (master)... +Jan 30, 2024 6:32:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Windofbitter/ip.git (master)... +Jan 30, 2024 6:32:33 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Windofbitter/ip.git (master) completed! +Jan 30, 2024 6:32:33 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ararchch/ip.git completed! +Jan 30, 2024 6:32:33 AM reposense.report.ReportGenerator analyzeRepos +INFO: [185/428] Analyzing https://github.com/ararchch/ip.git (master)... +Jan 30, 2024 6:32:33 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/zoebelle-pang/ip.git... +Jan 30, 2024 6:32:33 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/zoebelle-pang/ip.git to complete... +Jan 30, 2024 6:32:33 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/KiatLun/ip.git completed! +Jan 30, 2024 6:32:33 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/tayziyi/ip.git... +Jan 30, 2024 6:32:33 AM reposense.report.ReportGenerator analyzeRepos +INFO: [186/428] Analyzing https://github.com/KiatLun/ip.git (master)... +Jan 30, 2024 6:32:33 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/tayziyi/ip.git to complete... +Jan 30, 2024 6:32:33 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ararchch/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ararchch/ip.git (master)... -Jan 30, 2024 2:09:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:33 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/KiatLun/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/KiatLun/ip.git (master)... +Jan 30, 2024 6:32:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/KiatLun/ip.git (master)... -Jan 30, 2024 2:09:39 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ongzhili/ip.git completed! -Jan 30, 2024 2:09:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/KiatLun/ip.git (master)... -Jan 30, 2024 2:09:39 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:33 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/KiatLun/ip.git (master) completed! -Jan 30, 2024 2:09:39 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/DominicFuMJ/ip.git... -Jan 30, 2024 2:09:39 AM reposense.report.ReportGenerator analyzeRepos -INFO: [187/428] Analyzing https://github.com/Bandov/ip.git (master)... -Jan 30, 2024 2:09:39 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/DominicFuMJ/ip.git to complete... -Jan 30, 2024 2:09:39 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Bandov/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Bandov/ip.git (master)... -Jan 30, 2024 2:09:39 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Dethada/ip.git completed! -Jan 30, 2024 2:09:39 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/yuhinarita/ip.git completed! -Jan 30, 2024 2:09:39 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/vnnamng/ip.git completed! -Jan 30, 2024 2:09:39 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Anant1902/ip.git... -Jan 30, 2024 2:09:39 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/redcolorbicycle/ip.git... -Jan 30, 2024 2:09:39 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/yorklim/ip.git... -Jan 30, 2024 2:09:39 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/redcolorbicycle/ip.git to complete... -Jan 30, 2024 2:09:39 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/yorklim/ip.git to complete... -Jan 30, 2024 2:09:39 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Anant1902/ip.git to complete... -Jan 30, 2024 2:09:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ararchch/ip.git (master)... -Jan 30, 2024 2:09:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ZHANGTIANYAO1/ip.git (master)... -Jan 30, 2024 2:09:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ararchch/ip.git (master)... -Jan 30, 2024 2:09:39 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:33 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ararchch/ip.git (master) completed! -Jan 30, 2024 2:09:39 AM reposense.report.ReportGenerator analyzeRepos -INFO: [188/428] Analyzing https://github.com/zoebelle-pang/ip.git (master)... -Jan 30, 2024 2:09:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ZHANGTIANYAO1/ip.git (master)... -Jan 30, 2024 2:09:39 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ZHANGTIANYAO1/ip.git (master) completed! -Jan 30, 2024 2:09:39 AM reposense.report.ReportGenerator analyzeRepos -INFO: [189/428] Analyzing https://github.com/peienlim/ip.git (master)... -Jan 30, 2024 2:09:39 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/zoebelle-pang/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/zoebelle-pang/ip.git (master)... -Jan 30, 2024 2:09:39 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/peienlim/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/peienlim/ip.git (master)... -Jan 30, 2024 2:09:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/zoebelle-pang/ip.git (master)... -Jan 30, 2024 2:09:39 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/DominicFuMJ/ip.git completed! -Jan 30, 2024 2:09:39 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Wongqingyee/ip.git... -Jan 30, 2024 2:09:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:33 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Bandov/ip.git completed! +Jan 30, 2024 6:32:33 AM reposense.report.ReportGenerator analyzeRepos +INFO: [187/428] Analyzing https://github.com/Bandov/ip.git (master)... +Jan 30, 2024 6:32:33 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/R-Laksh/ip.git... +Jan 30, 2024 6:32:33 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/R-Laksh/ip.git to complete... +Jan 30, 2024 6:32:33 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Bandov/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Bandov/ip.git (master)... +Jan 30, 2024 6:32:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Bandov/ip.git (master)... -Jan 30, 2024 2:09:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/zoebelle-pang/ip.git (master)... -Jan 30, 2024 2:09:39 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/zoebelle-pang/ip.git (master) completed! -Jan 30, 2024 2:09:39 AM reposense.report.ReportGenerator analyzeRepos -INFO: [190/428] Analyzing https://github.com/tayziyi/ip.git (master)... -Jan 30, 2024 2:09:39 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Wongqingyee/ip.git to complete... -Jan 30, 2024 2:09:39 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Anant1902/ip.git completed! -Jan 30, 2024 2:09:39 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/redcolorbicycle/ip.git completed! -Jan 30, 2024 2:09:39 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/YowSiaoKang/ip.git... -Jan 30, 2024 2:09:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Bandov/ip.git (master)... -Jan 30, 2024 2:09:39 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/tayziyi/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/tayziyi/ip.git (master)... -Jan 30, 2024 2:09:39 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:34 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Bandov/ip.git (master) completed! -Jan 30, 2024 2:09:39 AM reposense.report.ReportGenerator analyzeRepos -INFO: [191/428] Analyzing https://github.com/R-Laksh/ip.git (master)... -Jan 30, 2024 2:09:39 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/YowSiaoKang/ip.git to complete... -Jan 30, 2024 2:09:39 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/LargeCrowd/ip.git... -Jan 30, 2024 2:09:39 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/LargeCrowd/ip.git to complete... -Jan 30, 2024 2:09:39 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/yorklim/ip.git completed! -Jan 30, 2024 2:09:39 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/R-Laksh/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/R-Laksh/ip.git (master)... -Jan 30, 2024 2:09:39 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/irwynliong/ip.git... -Jan 30, 2024 2:09:39 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/irwynliong/ip.git to complete... -Jan 30, 2024 2:09:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:34 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/peienlim/ip.git completed! +Jan 30, 2024 6:32:34 AM reposense.report.ReportGenerator analyzeRepos +INFO: [188/428] Analyzing https://github.com/peienlim/ip.git (master)... +Jan 30, 2024 6:32:34 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Cedricaca/ip.git... +Jan 30, 2024 6:32:34 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Cedricaca/ip.git to complete... +Jan 30, 2024 6:32:34 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/peienlim/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/peienlim/ip.git (master)... +Jan 30, 2024 6:32:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/peienlim/ip.git (master)... -Jan 30, 2024 2:09:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/peienlim/ip.git (master)... -Jan 30, 2024 2:09:40 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:34 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/peienlim/ip.git (master) completed! -Jan 30, 2024 2:09:40 AM reposense.report.ReportGenerator analyzeRepos -INFO: [192/428] Analyzing https://github.com/matthewken19/ip.git (master)... -Jan 30, 2024 2:09:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:34 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/zoebelle-pang/ip.git completed! +Jan 30, 2024 6:32:34 AM reposense.report.ReportGenerator analyzeRepos +INFO: [189/428] Analyzing https://github.com/zoebelle-pang/ip.git (master)... +Jan 30, 2024 6:32:34 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/matthewken19/ip.git... +Jan 30, 2024 6:32:34 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/matthewken19/ip.git to complete... +Jan 30, 2024 6:32:34 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tayziyi/ip.git completed! +Jan 30, 2024 6:32:34 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/zoebelle-pang/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/zoebelle-pang/ip.git (master)... +Jan 30, 2024 6:32:34 AM reposense.report.ReportGenerator analyzeRepos +INFO: [190/428] Analyzing https://github.com/tayziyi/ip.git (master)... +Jan 30, 2024 6:32:34 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/taufiq/ip.git... +Jan 30, 2024 6:32:34 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/taufiq/ip.git to complete... +Jan 30, 2024 6:32:34 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/tayziyi/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/tayziyi/ip.git (master)... +Jan 30, 2024 6:32:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/zoebelle-pang/ip.git (master)... +Jan 30, 2024 6:32:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/zoebelle-pang/ip.git (master)... +Jan 30, 2024 6:32:34 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/zoebelle-pang/ip.git (master) completed! +Jan 30, 2024 6:32:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/tayziyi/ip.git (master)... -Jan 30, 2024 2:09:40 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/matthewken19/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/matthewken19/ip.git (master)... -Jan 30, 2024 2:09:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/tayziyi/ip.git (master)... -Jan 30, 2024 2:09:40 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:34 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/tayziyi/ip.git (master) completed! -Jan 30, 2024 2:09:40 AM reposense.report.ReportGenerator analyzeRepos -INFO: [193/428] Analyzing https://github.com/Cedricaca/ip.git (master)... -Jan 30, 2024 2:09:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Windofbitter/ip.git (master)... -Jan 30, 2024 2:09:40 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Cedricaca/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Cedricaca/ip.git (master)... -Jan 30, 2024 2:09:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Windofbitter/ip.git (master)... -Jan 30, 2024 2:09:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:34 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/R-Laksh/ip.git completed! +Jan 30, 2024 6:32:34 AM reposense.report.ReportGenerator analyzeRepos +INFO: [191/428] Analyzing https://github.com/R-Laksh/ip.git (master)... +Jan 30, 2024 6:32:34 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/gingerbreaf/ip.git... +Jan 30, 2024 6:32:34 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/gingerbreaf/ip.git to complete... +Jan 30, 2024 6:32:34 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/R-Laksh/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/R-Laksh/ip.git (master)... +Jan 30, 2024 6:32:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/R-Laksh/ip.git (master)... -Jan 30, 2024 2:09:40 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Windofbitter/ip.git (master) completed! -Jan 30, 2024 2:09:40 AM reposense.report.ReportGenerator analyzeRepos -INFO: [194/428] Analyzing https://github.com/taufiq/ip.git (master)... -Jan 30, 2024 2:09:40 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Wongqingyee/ip.git completed! -Jan 30, 2024 2:09:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/R-Laksh/ip.git (master)... -Jan 30, 2024 2:09:40 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:34 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/R-Laksh/ip.git (master) completed! -Jan 30, 2024 2:09:40 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jannaleong/ip.git... -Jan 30, 2024 2:09:40 AM reposense.report.ReportGenerator analyzeRepos -INFO: [195/428] Analyzing https://github.com/gingerbreaf/ip.git (master)... -Jan 30, 2024 2:09:40 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/YowSiaoKang/ip.git completed! -Jan 30, 2024 2:09:40 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:34 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Cedricaca/ip.git completed! +Jan 30, 2024 6:32:34 AM reposense.report.ReportGenerator analyzeRepos +INFO: [192/428] Analyzing https://github.com/Cedricaca/ip.git (master)... +Jan 30, 2024 6:32:34 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Zack-Tay/ip.git... +Jan 30, 2024 6:32:34 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Zack-Tay/ip.git to complete... +Jan 30, 2024 6:32:34 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Cedricaca/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Cedricaca/ip.git (master)... +Jan 30, 2024 6:32:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Cedricaca/ip.git (master)... +Jan 30, 2024 6:32:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Cedricaca/ip.git (master)... +Jan 30, 2024 6:32:34 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Cedricaca/ip.git (master) completed! +Jan 30, 2024 6:32:35 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/matthewken19/ip.git completed! +Jan 30, 2024 6:32:35 AM reposense.report.ReportGenerator analyzeRepos +INFO: [193/428] Analyzing https://github.com/matthewken19/ip.git (master)... +Jan 30, 2024 6:32:35 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/darryl-chan/ip.git... +Jan 30, 2024 6:32:35 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/darryl-chan/ip.git to complete... +Jan 30, 2024 6:32:35 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/taufiq/ip.git completed! +Jan 30, 2024 6:32:35 AM reposense.report.ReportGenerator analyzeRepos +INFO: [194/428] Analyzing https://github.com/taufiq/ip.git (master)... +Jan 30, 2024 6:32:35 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/JustWeiHao/ip.git... +Jan 30, 2024 6:32:35 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/JustWeiHao/ip.git to complete... +Jan 30, 2024 6:32:35 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/matthewken19/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/matthewken19/ip.git (master)... +Jan 30, 2024 6:32:35 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/taufiq/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/taufiq/ip.git (master)... -Jan 30, 2024 2:09:40 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jannaleong/ip.git to complete... -Jan 30, 2024 2:09:40 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/gingerbreaf/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/gingerbreaf/ip.git (master)... -Jan 30, 2024 2:09:40 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/kaiyi27/ip.git... -Jan 30, 2024 2:09:40 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/LargeCrowd/ip.git completed! -Jan 30, 2024 2:09:40 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/kaiyi27/ip.git to complete... -Jan 30, 2024 2:09:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/taufiq/ip.git (master)... +Jan 30, 2024 6:32:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/matthewken19/ip.git (master)... -Jan 30, 2024 2:09:40 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/irwynliong/ip.git completed! -Jan 30, 2024 2:09:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Cedricaca/ip.git (master)... -Jan 30, 2024 2:09:40 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/aureliony/ip.git... -Jan 30, 2024 2:09:40 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/azumieflare/ip.git... -Jan 30, 2024 2:09:40 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/aureliony/ip.git to complete... -Jan 30, 2024 2:09:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/taufiq/ip.git (master)... +Jan 30, 2024 6:32:35 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/taufiq/ip.git (master) completed! +Jan 30, 2024 6:32:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/matthewken19/ip.git (master)... -Jan 30, 2024 2:09:40 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:35 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/matthewken19/ip.git (master) completed! -Jan 30, 2024 2:09:40 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 6:32:35 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/gingerbreaf/ip.git completed! +Jan 30, 2024 6:32:35 AM reposense.report.ReportGenerator analyzeRepos +INFO: [195/428] Analyzing https://github.com/gingerbreaf/ip.git (master)... +Jan 30, 2024 6:32:35 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/brennalaurentan/ip.git... +Jan 30, 2024 6:32:35 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/brennalaurentan/ip.git to complete... +Jan 30, 2024 6:32:35 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/gingerbreaf/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/gingerbreaf/ip.git (master)... +Jan 30, 2024 6:32:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/gingerbreaf/ip.git (master)... +Jan 30, 2024 6:32:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/gingerbreaf/ip.git (master)... +Jan 30, 2024 6:32:35 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/gingerbreaf/ip.git (master) completed! +Jan 30, 2024 6:32:35 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Zack-Tay/ip.git completed! +Jan 30, 2024 6:32:35 AM reposense.report.ReportGenerator analyzeRepos INFO: [196/428] Analyzing https://github.com/Zack-Tay/ip.git (master)... -Jan 30, 2024 2:09:40 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/azumieflare/ip.git to complete... -Jan 30, 2024 2:09:40 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:35 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/0-yibai/ip.git... +Jan 30, 2024 6:32:35 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/0-yibai/ip.git to complete... +Jan 30, 2024 6:32:35 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Zack-Tay/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Zack-Tay/ip.git (master)... -Jan 30, 2024 2:09:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Cedricaca/ip.git (master)... -Jan 30, 2024 2:09:40 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Cedricaca/ip.git (master) completed! -Jan 30, 2024 2:09:40 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 6:32:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Zack-Tay/ip.git (master)... +Jan 30, 2024 6:32:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Zack-Tay/ip.git (master)... +Jan 30, 2024 6:32:35 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Zack-Tay/ip.git (master) completed! +Jan 30, 2024 6:32:36 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/darryl-chan/ip.git completed! +Jan 30, 2024 6:32:36 AM reposense.report.ReportGenerator analyzeRepos INFO: [197/428] Analyzing https://github.com/darryl-chan/ip.git (master)... -Jan 30, 2024 2:09:40 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:36 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Apzure/ip.git... +Jan 30, 2024 6:32:36 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Apzure/ip.git to complete... +Jan 30, 2024 6:32:36 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/JustWeiHao/ip.git completed! +Jan 30, 2024 6:32:36 AM reposense.report.ReportGenerator analyzeRepos +INFO: [198/428] Analyzing https://github.com/JustWeiHao/ip.git (master)... +Jan 30, 2024 6:32:36 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jxunze/ip.git... +Jan 30, 2024 6:32:36 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/darryl-chan/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/darryl-chan/ip.git (master)... -Jan 30, 2024 2:09:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/taufiq/ip.git (master)... -Jan 30, 2024 2:09:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/taufiq/ip.git (master)... -Jan 30, 2024 2:09:40 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/taufiq/ip.git (master) completed! -Jan 30, 2024 2:09:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/gingerbreaf/ip.git (master)... -Jan 30, 2024 2:09:40 AM reposense.report.ReportGenerator analyzeRepos -INFO: [198/428] Analyzing https://github.com/JustWeiHao/ip.git (master)... -Jan 30, 2024 2:09:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/gingerbreaf/ip.git (master)... -Jan 30, 2024 2:09:40 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/gingerbreaf/ip.git (master) completed! -Jan 30, 2024 2:09:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Zack-Tay/ip.git (master)... -Jan 30, 2024 2:09:40 AM reposense.report.ReportGenerator analyzeRepos -INFO: [199/428] Analyzing https://github.com/brennalaurentan/ip.git (master)... -Jan 30, 2024 2:09:40 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:36 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jxunze/ip.git to complete... +Jan 30, 2024 6:32:36 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/JustWeiHao/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/JustWeiHao/ip.git (master)... -Jan 30, 2024 2:09:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Zack-Tay/ip.git (master)... -Jan 30, 2024 2:09:40 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Zack-Tay/ip.git (master) completed! -Jan 30, 2024 2:09:40 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:36 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/brennalaurentan/ip.git completed! +Jan 30, 2024 6:32:36 AM reposense.report.ReportGenerator analyzeRepos +INFO: [199/428] Analyzing https://github.com/brennalaurentan/ip.git (master)... +Jan 30, 2024 6:32:36 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/alphajae11/ip.git... +Jan 30, 2024 6:32:36 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/alphajae11/ip.git to complete... +Jan 30, 2024 6:32:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/darryl-chan/ip.git (master)... +Jan 30, 2024 6:32:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/JustWeiHao/ip.git (master)... +Jan 30, 2024 6:32:36 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/brennalaurentan/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/brennalaurentan/ip.git (master)... -Jan 30, 2024 2:09:40 AM reposense.report.ReportGenerator analyzeRepos -INFO: [200/428] Analyzing https://github.com/Apzure/ip.git (master)... -Jan 30, 2024 2:09:40 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jannaleong/ip.git completed! -Jan 30, 2024 2:09:40 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/qinboan/ip.git... -Jan 30, 2024 2:09:40 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Apzure/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Apzure/ip.git (master)... -Jan 30, 2024 2:09:40 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/aureliony/ip.git completed! -Jan 30, 2024 2:09:40 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/qinboan/ip.git to complete... -Jan 30, 2024 2:09:40 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/azumieflare/ip.git completed! -Jan 30, 2024 2:09:40 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/kaiyi27/ip.git completed! -Jan 30, 2024 2:09:40 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/tengcharmaine/ip.git... -Jan 30, 2024 2:09:40 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/tengcharmaine/ip.git to complete... -Jan 30, 2024 2:09:40 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/moguries/ip.git... -Jan 30, 2024 2:09:40 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Joshy837/ip.git... -Jan 30, 2024 2:09:40 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Joshy837/ip.git to complete... -Jan 30, 2024 2:09:40 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/moguries/ip.git to complete... -Jan 30, 2024 2:09:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/darryl-chan/ip.git (master)... -Jan 30, 2024 2:09:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/darryl-chan/ip.git (master)... -Jan 30, 2024 2:09:40 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:36 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/darryl-chan/ip.git (master) completed! -Jan 30, 2024 2:09:40 AM reposense.report.ReportGenerator analyzeRepos -INFO: [201/428] Analyzing https://github.com/0-yibai/ip.git (master)... -Jan 30, 2024 2:09:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/JustWeiHao/ip.git (master)... +Jan 30, 2024 6:32:36 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/JustWeiHao/ip.git (master) completed! +Jan 30, 2024 6:32:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/brennalaurentan/ip.git (master)... -Jan 30, 2024 2:09:40 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/0-yibai/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/0-yibai/ip.git (master)... -Jan 30, 2024 2:09:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/brennalaurentan/ip.git (master)... -Jan 30, 2024 2:09:40 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:36 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/brennalaurentan/ip.git (master) completed! -Jan 30, 2024 2:09:40 AM reposense.report.ReportGenerator analyzeRepos -INFO: [202/428] Analyzing https://github.com/jxunze/ip.git (master)... -Jan 30, 2024 2:09:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/JustWeiHao/ip.git (master)... -Jan 30, 2024 2:09:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/JustWeiHao/ip.git (master)... -Jan 30, 2024 2:09:40 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jxunze/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jxunze/ip.git (master)... -Jan 30, 2024 2:09:40 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/JustWeiHao/ip.git (master) completed! -Jan 30, 2024 2:09:40 AM reposense.report.ReportGenerator analyzeRepos -INFO: [203/428] Analyzing https://github.com/alphajae11/ip.git (master)... -Jan 30, 2024 2:09:40 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/alphajae11/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/alphajae11/ip.git (master)... -Jan 30, 2024 2:09:40 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/qinboan/ip.git completed! -Jan 30, 2024 2:09:40 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tengcharmaine/ip.git completed! -Jan 30, 2024 2:09:40 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/chengjunyuan/ip.git... -Jan 30, 2024 2:09:40 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Joshy837/ip.git completed! -Jan 30, 2024 2:09:40 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ChrysanthemumT/ip.git... -Jan 30, 2024 2:09:40 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/moguries/ip.git completed! -Jan 30, 2024 2:09:40 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/chengjunyuan/ip.git to complete... -Jan 30, 2024 2:09:40 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/camille-readbean/ip.git... -Jan 30, 2024 2:09:40 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ChrysanthemumT/ip.git to complete... -Jan 30, 2024 2:09:40 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/dabzpengu/ip.git... -Jan 30, 2024 2:09:40 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/camille-readbean/ip.git to complete... -Jan 30, 2024 2:09:40 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/dabzpengu/ip.git to complete... -Jan 30, 2024 2:09:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:36 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/0-yibai/ip.git completed! +Jan 30, 2024 6:32:36 AM reposense.report.ReportGenerator analyzeRepos +INFO: [200/428] Analyzing https://github.com/0-yibai/ip.git (master)... +Jan 30, 2024 6:32:36 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/yespiggy/ip.git... +Jan 30, 2024 6:32:36 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/yespiggy/ip.git to complete... +Jan 30, 2024 6:32:36 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/0-yibai/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/0-yibai/ip.git (master)... +Jan 30, 2024 6:32:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/0-yibai/ip.git (master)... -Jan 30, 2024 2:09:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Apzure/ip.git (master)... -Jan 30, 2024 2:09:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/0-yibai/ip.git (master)... -Jan 30, 2024 2:09:40 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:36 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/0-yibai/ip.git (master) completed! -Jan 30, 2024 2:09:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:36 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Apzure/ip.git completed! +Jan 30, 2024 6:32:36 AM reposense.report.ReportGenerator analyzeRepos +INFO: [201/428] Analyzing https://github.com/Apzure/ip.git (master)... +Jan 30, 2024 6:32:36 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/raysonchia/ip.git... +Jan 30, 2024 6:32:36 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/raysonchia/ip.git to complete... +Jan 30, 2024 6:32:36 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Apzure/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Apzure/ip.git (master)... +Jan 30, 2024 6:32:36 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/alphajae11/ip.git completed! +Jan 30, 2024 6:32:36 AM reposense.report.ReportGenerator analyzeRepos +INFO: [202/428] Analyzing https://github.com/alphajae11/ip.git (master)... +Jan 30, 2024 6:32:36 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/bachletuankhai/ip.git... +Jan 30, 2024 6:32:36 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/bachletuankhai/ip.git to complete... +Jan 30, 2024 6:32:36 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/alphajae11/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/alphajae11/ip.git (master)... +Jan 30, 2024 6:32:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Apzure/ip.git (master)... +Jan 30, 2024 6:32:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Apzure/ip.git (master)... -Jan 30, 2024 2:09:40 AM reposense.report.ReportGenerator analyzeRepos -INFO: [204/428] Analyzing https://github.com/raysonchia/ip.git (master)... -Jan 30, 2024 2:09:40 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:37 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Apzure/ip.git (master) completed! -Jan 30, 2024 2:09:40 AM reposense.report.ReportGenerator analyzeRepos -INFO: [205/428] Analyzing https://github.com/yespiggy/ip.git (master)... -Jan 30, 2024 2:09:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/alphajae11/ip.git (master)... -Jan 30, 2024 2:09:40 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/raysonchia/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/raysonchia/ip.git (master)... -Jan 30, 2024 2:09:40 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/yespiggy/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/yespiggy/ip.git (master)... -Jan 30, 2024 2:09:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/alphajae11/ip.git (master)... -Jan 30, 2024 2:09:40 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:37 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/alphajae11/ip.git (master) completed! -Jan 30, 2024 2:09:40 AM reposense.report.ReportGenerator analyzeRepos -INFO: [206/428] Analyzing https://github.com/bachletuankhai/ip.git (master)... -Jan 30, 2024 2:09:41 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/bachletuankhai/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/bachletuankhai/ip.git (master)... -Jan 30, 2024 2:09:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:37 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/yespiggy/ip.git completed! +Jan 30, 2024 6:32:37 AM reposense.report.ReportGenerator analyzeRepos +INFO: [203/428] Analyzing https://github.com/yespiggy/ip.git (master)... +Jan 30, 2024 6:32:37 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/joelgoh1/ip.git... +Jan 30, 2024 6:32:37 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/joelgoh1/ip.git to complete... +Jan 30, 2024 6:32:37 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/yespiggy/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/yespiggy/ip.git (master)... +Jan 30, 2024 6:32:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/yespiggy/ip.git (master)... +Jan 30, 2024 6:32:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/yespiggy/ip.git (master)... +Jan 30, 2024 6:32:37 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/yespiggy/ip.git (master) completed! +Jan 30, 2024 6:32:37 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/raysonchia/ip.git completed! +Jan 30, 2024 6:32:37 AM reposense.report.ReportGenerator analyzeRepos +INFO: [204/428] Analyzing https://github.com/raysonchia/ip.git (master)... +Jan 30, 2024 6:32:37 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/YuZizhen/ip.git... +Jan 30, 2024 6:32:37 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/YuZizhen/ip.git to complete... +Jan 30, 2024 6:32:37 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/raysonchia/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/raysonchia/ip.git (master)... +Jan 30, 2024 6:32:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/raysonchia/ip.git (master)... -Jan 30, 2024 2:09:41 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ChrysanthemumT/ip.git completed! -Jan 30, 2024 2:09:41 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/dabzpengu/ip.git completed! -Jan 30, 2024 2:09:41 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/chengjunyuan/ip.git completed! -Jan 30, 2024 2:09:41 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/camille-readbean/ip.git completed! -Jan 30, 2024 2:09:41 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/cleowenxuan/ip.git... -Jan 30, 2024 2:09:41 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ziiqii/ip.git... -Jan 30, 2024 2:09:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/raysonchia/ip.git (master)... -Jan 30, 2024 2:09:41 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:37 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/raysonchia/ip.git (master) completed! -Jan 30, 2024 2:09:41 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 6:32:37 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/bachletuankhai/ip.git completed! +Jan 30, 2024 6:32:37 AM reposense.report.ReportGenerator analyzeRepos +INFO: [205/428] Analyzing https://github.com/bachletuankhai/ip.git (master)... +Jan 30, 2024 6:32:37 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/SherwynNg/ip.git... +Jan 30, 2024 6:32:37 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/SherwynNg/ip.git to complete... +Jan 30, 2024 6:32:37 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/bachletuankhai/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/bachletuankhai/ip.git (master)... +Jan 30, 2024 6:32:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/bachletuankhai/ip.git (master)... +Jan 30, 2024 6:32:37 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jxunze/ip.git completed! +Jan 30, 2024 6:32:37 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/kab-dot/ip.git... +Jan 30, 2024 6:32:37 AM reposense.report.ReportGenerator analyzeRepos +INFO: [206/428] Analyzing https://github.com/jxunze/ip.git (master)... +Jan 30, 2024 6:32:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/bachletuankhai/ip.git (master)... +Jan 30, 2024 6:32:37 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/kab-dot/ip.git to complete... +Jan 30, 2024 6:32:37 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/bachletuankhai/ip.git (master) completed! +Jan 30, 2024 6:32:37 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/joelgoh1/ip.git completed! +Jan 30, 2024 6:32:37 AM reposense.report.ReportGenerator analyzeRepos INFO: [207/428] Analyzing https://github.com/joelgoh1/ip.git (master)... -Jan 30, 2024 2:09:41 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/rertyy/ip.git... -Jan 30, 2024 2:09:41 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ziiqii/ip.git to complete... -Jan 30, 2024 2:09:41 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/cleowenxuan/ip.git to complete... -Jan 30, 2024 2:09:41 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/xiaorui-ui/ip.git... -Jan 30, 2024 2:09:41 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/xiaorui-ui/ip.git to complete... -Jan 30, 2024 2:09:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/yespiggy/ip.git (master)... -Jan 30, 2024 2:09:41 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/rertyy/ip.git to complete... -Jan 30, 2024 2:09:41 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:37 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/belligerentbeagle/ip.git... +Jan 30, 2024 6:32:37 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/belligerentbeagle/ip.git to complete... +Jan 30, 2024 6:32:37 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jxunze/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jxunze/ip.git (master)... +Jan 30, 2024 6:32:37 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/joelgoh1/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/joelgoh1/ip.git (master)... -Jan 30, 2024 2:09:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/yespiggy/ip.git (master)... -Jan 30, 2024 2:09:41 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/yespiggy/ip.git (master) completed! -Jan 30, 2024 2:09:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/joelgoh1/ip.git (master)... +Jan 30, 2024 6:32:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/joelgoh1/ip.git (master)... +Jan 30, 2024 6:32:38 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/joelgoh1/ip.git (master) completed! +Jan 30, 2024 6:32:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/jxunze/ip.git (master)... -Jan 30, 2024 2:09:41 AM reposense.report.ReportGenerator analyzeRepos -INFO: [208/428] Analyzing https://github.com/YuZizhen/ip.git (master)... -Jan 30, 2024 2:09:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/jxunze/ip.git (master)... -Jan 30, 2024 2:09:41 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:38 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/jxunze/ip.git (master) completed! -Jan 30, 2024 2:09:41 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:38 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/YuZizhen/ip.git completed! +Jan 30, 2024 6:32:38 AM reposense.report.ReportGenerator analyzeRepos +INFO: [208/428] Analyzing https://github.com/YuZizhen/ip.git (master)... +Jan 30, 2024 6:32:38 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ongzhili/ip.git... +Jan 30, 2024 6:32:38 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ongzhili/ip.git to complete... +Jan 30, 2024 6:32:38 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/YuZizhen/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/YuZizhen/ip.git (master)... -Jan 30, 2024 2:09:41 AM reposense.report.ReportGenerator analyzeRepos -INFO: [209/428] Analyzing https://github.com/SherwynNg/ip.git (master)... -Jan 30, 2024 2:09:41 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/SherwynNg/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/SherwynNg/ip.git (master)... -Jan 30, 2024 2:09:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/YuZizhen/ip.git (master)... -Jan 30, 2024 2:09:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/YuZizhen/ip.git (master)... -Jan 30, 2024 2:09:41 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:38 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/YuZizhen/ip.git (master) completed! -Jan 30, 2024 2:09:41 AM reposense.report.ReportGenerator analyzeRepos -INFO: [210/428] Analyzing https://github.com/belligerentbeagle/ip.git (master)... -Jan 30, 2024 2:09:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/joelgoh1/ip.git (master)... -Jan 30, 2024 2:09:41 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/belligerentbeagle/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/belligerentbeagle/ip.git (master)... -Jan 30, 2024 2:09:41 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/cleowenxuan/ip.git completed! -Jan 30, 2024 2:09:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/joelgoh1/ip.git (master)... -Jan 30, 2024 2:09:41 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/joelgoh1/ip.git (master) completed! -Jan 30, 2024 2:09:41 AM reposense.report.ReportGenerator analyzeRepos -INFO: [211/428] Analyzing https://github.com/kab-dot/ip.git (master)... -Jan 30, 2024 2:09:41 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/TarinPairor/ip.git... -Jan 30, 2024 2:09:41 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ziiqii/ip.git completed! -Jan 30, 2024 2:09:41 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/TarinPairor/ip.git to complete... -Jan 30, 2024 2:09:41 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/amanzainal/ip.git... -Jan 30, 2024 2:09:41 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/xiaorui-ui/ip.git completed! -Jan 30, 2024 2:09:41 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/rertyy/ip.git completed! -Jan 30, 2024 2:09:41 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/kab-dot/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/kab-dot/ip.git (master)... -Jan 30, 2024 2:09:41 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/amanzainal/ip.git to complete... -Jan 30, 2024 2:09:41 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/minwaiphyo/ip.git... -Jan 30, 2024 2:09:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/bachletuankhai/ip.git (master)... -Jan 30, 2024 2:09:41 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/minwaiphyo/ip.git to complete... -Jan 30, 2024 2:09:41 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Javiery3889/ip.git... -Jan 30, 2024 2:09:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:38 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/SherwynNg/ip.git completed! +Jan 30, 2024 6:32:38 AM reposense.report.ReportGenerator analyzeRepos +INFO: [209/428] Analyzing https://github.com/SherwynNg/ip.git (master)... +Jan 30, 2024 6:32:38 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Dethada/ip.git... +Jan 30, 2024 6:32:38 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Dethada/ip.git to complete... +Jan 30, 2024 6:32:38 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/SherwynNg/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/SherwynNg/ip.git (master)... +Jan 30, 2024 6:32:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/SherwynNg/ip.git (master)... -Jan 30, 2024 2:09:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/bachletuankhai/ip.git (master)... -Jan 30, 2024 2:09:41 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/bachletuankhai/ip.git (master) completed! -Jan 30, 2024 2:09:41 AM reposense.report.ReportGenerator analyzeRepos -INFO: [212/428] Analyzing https://github.com/ongzhili/ip.git (master)... -Jan 30, 2024 2:09:41 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Javiery3889/ip.git to complete... -Jan 30, 2024 2:09:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/SherwynNg/ip.git (master)... -Jan 30, 2024 2:09:41 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:38 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/SherwynNg/ip.git (master) completed! -Jan 30, 2024 2:09:41 AM reposense.report.ReportGenerator analyzeRepos -INFO: [213/428] Analyzing https://github.com/Dethada/ip.git (master)... -Jan 30, 2024 2:09:41 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ongzhili/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ongzhili/ip.git (master)... -Jan 30, 2024 2:09:41 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Dethada/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Dethada/ip.git (master)... -Jan 30, 2024 2:09:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:38 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/kab-dot/ip.git completed! +Jan 30, 2024 6:32:38 AM reposense.report.ReportGenerator analyzeRepos +INFO: [210/428] Analyzing https://github.com/kab-dot/ip.git (master)... +Jan 30, 2024 6:32:38 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/yuhinarita/ip.git... +Jan 30, 2024 6:32:38 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/yuhinarita/ip.git to complete... +Jan 30, 2024 6:32:38 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/kab-dot/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/kab-dot/ip.git (master)... +Jan 30, 2024 6:32:38 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/belligerentbeagle/ip.git completed! +Jan 30, 2024 6:32:38 AM reposense.report.ReportGenerator analyzeRepos +INFO: [211/428] Analyzing https://github.com/belligerentbeagle/ip.git (master)... +Jan 30, 2024 6:32:38 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/vnnamng/ip.git... +Jan 30, 2024 6:32:38 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/vnnamng/ip.git to complete... +Jan 30, 2024 6:32:38 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/belligerentbeagle/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/belligerentbeagle/ip.git (master)... +Jan 30, 2024 6:32:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/kab-dot/ip.git (master)... -Jan 30, 2024 2:09:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/belligerentbeagle/ip.git (master)... -Jan 30, 2024 2:09:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/kab-dot/ip.git (master)... -Jan 30, 2024 2:09:41 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:38 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/kab-dot/ip.git (master) completed! -Jan 30, 2024 2:09:41 AM reposense.report.ReportGenerator analyzeRepos -INFO: [214/428] Analyzing https://github.com/yuhinarita/ip.git (master)... -Jan 30, 2024 2:09:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/belligerentbeagle/ip.git (master)... +Jan 30, 2024 6:32:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/belligerentbeagle/ip.git (master)... -Jan 30, 2024 2:09:41 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:38 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/belligerentbeagle/ip.git (master) completed! -Jan 30, 2024 2:09:41 AM reposense.report.ReportGenerator analyzeRepos -INFO: [215/428] Analyzing https://github.com/vnnamng/ip.git (master)... -Jan 30, 2024 2:09:41 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/vnnamng/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/vnnamng/ip.git (master)... -Jan 30, 2024 2:09:41 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/yuhinarita/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/yuhinarita/ip.git (master)... -Jan 30, 2024 2:09:41 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/TarinPairor/ip.git completed! -Jan 30, 2024 2:09:41 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jimseah-0116/ip.git... -Jan 30, 2024 2:09:41 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/amanzainal/ip.git completed! -Jan 30, 2024 2:09:41 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jimseah-0116/ip.git to complete... -Jan 30, 2024 2:09:41 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/VatsalVitosh/ip.git... -Jan 30, 2024 2:09:41 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/minwaiphyo/ip.git completed! -Jan 30, 2024 2:09:41 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/VatsalVitosh/ip.git to complete... -Jan 30, 2024 2:09:41 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/narwhalsilent/ip.git... -Jan 30, 2024 2:09:41 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Javiery3889/ip.git completed! -Jan 30, 2024 2:09:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:39 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ongzhili/ip.git completed! +Jan 30, 2024 6:32:39 AM reposense.report.ReportGenerator analyzeRepos +INFO: [212/428] Analyzing https://github.com/ongzhili/ip.git (master)... +Jan 30, 2024 6:32:39 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/DominicFuMJ/ip.git... +Jan 30, 2024 6:32:39 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/DominicFuMJ/ip.git to complete... +Jan 30, 2024 6:32:39 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ongzhili/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ongzhili/ip.git (master)... +Jan 30, 2024 6:32:39 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Dethada/ip.git completed! +Jan 30, 2024 6:32:39 AM reposense.report.ReportGenerator analyzeRepos +INFO: [213/428] Analyzing https://github.com/Dethada/ip.git (master)... +Jan 30, 2024 6:32:39 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Anant1902/ip.git... +Jan 30, 2024 6:32:39 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Anant1902/ip.git to complete... +Jan 30, 2024 6:32:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ongzhili/ip.git (master)... -Jan 30, 2024 2:09:41 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/narwhalsilent/ip.git to complete... -Jan 30, 2024 2:09:41 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ChuaZiLong/ip.git... -Jan 30, 2024 2:09:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:39 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Dethada/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Dethada/ip.git (master)... +Jan 30, 2024 6:32:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ongzhili/ip.git (master)... -Jan 30, 2024 2:09:41 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:39 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ongzhili/ip.git (master) completed! -Jan 30, 2024 2:09:41 AM reposense.report.ReportGenerator analyzeRepos -INFO: [216/428] Analyzing https://github.com/DominicFuMJ/ip.git (master)... -Jan 30, 2024 2:09:41 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ChuaZiLong/ip.git to complete... -Jan 30, 2024 2:09:41 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/DominicFuMJ/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/DominicFuMJ/ip.git (master)... -Jan 30, 2024 2:09:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:39 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/yuhinarita/ip.git completed! +Jan 30, 2024 6:32:39 AM reposense.report.ReportGenerator analyzeRepos +INFO: [214/428] Analyzing https://github.com/yuhinarita/ip.git (master)... +Jan 30, 2024 6:32:39 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/redcolorbicycle/ip.git... +Jan 30, 2024 6:32:39 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/redcolorbicycle/ip.git to complete... +Jan 30, 2024 6:32:39 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/yuhinarita/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/yuhinarita/ip.git (master)... +Jan 30, 2024 6:32:39 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/vnnamng/ip.git completed! +Jan 30, 2024 6:32:39 AM reposense.report.ReportGenerator analyzeRepos +INFO: [215/428] Analyzing https://github.com/vnnamng/ip.git (master)... +Jan 30, 2024 6:32:39 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/yorklim/ip.git... +Jan 30, 2024 6:32:39 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/yorklim/ip.git to complete... +Jan 30, 2024 6:32:39 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/vnnamng/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/vnnamng/ip.git (master)... +Jan 30, 2024 6:32:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Dethada/ip.git (master)... +Jan 30, 2024 6:32:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Dethada/ip.git (master)... +Jan 30, 2024 6:32:39 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Dethada/ip.git (master) completed! +Jan 30, 2024 6:32:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/yuhinarita/ip.git (master)... -Jan 30, 2024 2:09:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/yuhinarita/ip.git (master)... -Jan 30, 2024 2:09:41 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:39 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/yuhinarita/ip.git (master) completed! -Jan 30, 2024 2:09:41 AM reposense.report.ReportGenerator analyzeRepos -INFO: [217/428] Analyzing https://github.com/Anant1902/ip.git (master)... -Jan 30, 2024 2:09:41 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Anant1902/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Anant1902/ip.git (master)... -Jan 30, 2024 2:09:42 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jimseah-0116/ip.git completed! -Jan 30, 2024 2:09:42 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/narwhalsilent/ip.git completed! -Jan 30, 2024 2:09:42 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Lin-Shuang-Shuang/ip.git... -Jan 30, 2024 2:09:42 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Lin-Shuang-Shuang/ip.git to complete... -Jan 30, 2024 2:09:42 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/whelan-low/ip.git... -Jan 30, 2024 2:09:42 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ChuaZiLong/ip.git completed! -Jan 30, 2024 2:09:42 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/whelan-low/ip.git to complete... -Jan 30, 2024 2:09:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/DominicFuMJ/ip.git (master)... -Jan 30, 2024 2:09:42 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ThitipatC/ip.git... -Jan 30, 2024 2:09:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/vnnamng/ip.git (master)... -Jan 30, 2024 2:09:42 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/VatsalVitosh/ip.git completed! -Jan 30, 2024 2:09:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/vnnamng/ip.git (master)... +Jan 30, 2024 6:32:39 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/vnnamng/ip.git (master) completed! +Jan 30, 2024 6:32:39 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/DominicFuMJ/ip.git completed! +Jan 30, 2024 6:32:39 AM reposense.report.ReportGenerator analyzeRepos +INFO: [216/428] Analyzing https://github.com/DominicFuMJ/ip.git (master)... +Jan 30, 2024 6:32:39 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Wongqingyee/ip.git... +Jan 30, 2024 6:32:39 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Wongqingyee/ip.git to complete... +Jan 30, 2024 6:32:39 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/DominicFuMJ/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/DominicFuMJ/ip.git (master)... +Jan 30, 2024 6:32:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/DominicFuMJ/ip.git (master)... +Jan 30, 2024 6:32:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/DominicFuMJ/ip.git (master)... -Jan 30, 2024 2:09:42 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:40 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/DominicFuMJ/ip.git (master) completed! -Jan 30, 2024 2:09:42 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 6:32:40 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Anant1902/ip.git completed! +Jan 30, 2024 6:32:40 AM reposense.report.ReportGenerator analyzeRepos +INFO: [217/428] Analyzing https://github.com/Anant1902/ip.git (master)... +Jan 30, 2024 6:32:40 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/YowSiaoKang/ip.git... +Jan 30, 2024 6:32:40 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/YowSiaoKang/ip.git to complete... +Jan 30, 2024 6:32:40 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Anant1902/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Anant1902/ip.git (master)... +Jan 30, 2024 6:32:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Anant1902/ip.git (master)... +Jan 30, 2024 6:32:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Anant1902/ip.git (master)... +Jan 30, 2024 6:32:40 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Anant1902/ip.git (master) completed! +Jan 30, 2024 6:32:40 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/redcolorbicycle/ip.git completed! +Jan 30, 2024 6:32:40 AM reposense.report.ReportGenerator analyzeRepos INFO: [218/428] Analyzing https://github.com/redcolorbicycle/ip.git (master)... -Jan 30, 2024 2:09:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Dethada/ip.git (master)... -Jan 30, 2024 2:09:42 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ThitipatC/ip.git to complete... -Jan 30, 2024 2:09:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/vnnamng/ip.git (master)... -Jan 30, 2024 2:09:42 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/vnnamng/ip.git (master) completed! -Jan 30, 2024 2:09:42 AM reposense.report.ReportGenerator analyzeRepos -INFO: [219/428] Analyzing https://github.com/yorklim/ip.git (master)... -Jan 30, 2024 2:09:42 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/YuvBindal/ip.git... -Jan 30, 2024 2:09:42 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:40 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/LargeCrowd/ip.git... +Jan 30, 2024 6:32:40 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/LargeCrowd/ip.git to complete... +Jan 30, 2024 6:32:40 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/redcolorbicycle/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/redcolorbicycle/ip.git (master)... -Jan 30, 2024 2:09:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Dethada/ip.git (master)... -Jan 30, 2024 2:09:42 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/YuvBindal/ip.git to complete... -Jan 30, 2024 2:09:42 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Dethada/ip.git (master) completed! -Jan 30, 2024 2:09:42 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:40 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/yorklim/ip.git completed! +Jan 30, 2024 6:32:40 AM reposense.report.ReportGenerator analyzeRepos +INFO: [219/428] Analyzing https://github.com/yorklim/ip.git (master)... +Jan 30, 2024 6:32:40 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/irwynliong/ip.git... +Jan 30, 2024 6:32:40 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/irwynliong/ip.git to complete... +Jan 30, 2024 6:32:40 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/yorklim/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/yorklim/ip.git (master)... -Jan 30, 2024 2:09:42 AM reposense.report.ReportGenerator analyzeRepos -INFO: [220/428] Analyzing https://github.com/Wongqingyee/ip.git (master)... -Jan 30, 2024 2:09:42 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Wongqingyee/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Wongqingyee/ip.git (master)... -Jan 30, 2024 2:09:42 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Lin-Shuang-Shuang/ip.git completed! -Jan 30, 2024 2:09:42 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/whelan-low/ip.git completed! -Jan 30, 2024 2:09:42 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/doyelee0313/ip.git... -Jan 30, 2024 2:09:42 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/taniatsq/ip.git... -Jan 30, 2024 2:09:42 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/doyelee0313/ip.git to complete... -Jan 30, 2024 2:09:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Anant1902/ip.git (master)... -Jan 30, 2024 2:09:42 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ThitipatC/ip.git completed! -Jan 30, 2024 2:09:42 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/taniatsq/ip.git to complete... -Jan 30, 2024 2:09:42 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Rikko1204/ip.git... -Jan 30, 2024 2:09:42 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Rikko1204/ip.git to complete... -Jan 30, 2024 2:09:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/redcolorbicycle/ip.git (master)... -Jan 30, 2024 2:09:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Anant1902/ip.git (master)... -Jan 30, 2024 2:09:42 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Anant1902/ip.git (master) completed! -Jan 30, 2024 2:09:42 AM reposense.report.ReportGenerator analyzeRepos -INFO: [221/428] Analyzing https://github.com/YowSiaoKang/ip.git (master)... -Jan 30, 2024 2:09:42 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/YowSiaoKang/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/YowSiaoKang/ip.git (master)... -Jan 30, 2024 2:09:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/redcolorbicycle/ip.git (master)... -Jan 30, 2024 2:09:42 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:40 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/redcolorbicycle/ip.git (master) completed! -Jan 30, 2024 2:09:42 AM reposense.report.ReportGenerator analyzeRepos -INFO: [222/428] Analyzing https://github.com/irwynliong/ip.git (master)... -Jan 30, 2024 2:09:42 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/YuvBindal/ip.git completed! -Jan 30, 2024 2:09:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/yorklim/ip.git (master)... +Jan 30, 2024 6:32:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/yorklim/ip.git (master)... +Jan 30, 2024 6:32:40 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/yorklim/ip.git (master) completed! +Jan 30, 2024 6:32:40 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Wongqingyee/ip.git completed! +Jan 30, 2024 6:32:40 AM reposense.report.ReportGenerator analyzeRepos +INFO: [220/428] Analyzing https://github.com/Wongqingyee/ip.git (master)... +Jan 30, 2024 6:32:40 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jannaleong/ip.git... +Jan 30, 2024 6:32:40 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jannaleong/ip.git to complete... +Jan 30, 2024 6:32:40 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Wongqingyee/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Wongqingyee/ip.git (master)... +Jan 30, 2024 6:32:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Wongqingyee/ip.git (master)... -Jan 30, 2024 2:09:42 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/irwynliong/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/irwynliong/ip.git (master)... -Jan 30, 2024 2:09:42 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Yskie/ip.git... -Jan 30, 2024 2:09:42 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Yskie/ip.git to complete... -Jan 30, 2024 2:09:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Wongqingyee/ip.git (master)... -Jan 30, 2024 2:09:42 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:40 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Wongqingyee/ip.git (master) completed! -Jan 30, 2024 2:09:42 AM reposense.report.ReportGenerator analyzeRepos -INFO: [223/428] Analyzing https://github.com/LargeCrowd/ip.git (master)... -Jan 30, 2024 2:09:42 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:40 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/YowSiaoKang/ip.git completed! +Jan 30, 2024 6:32:40 AM reposense.report.ReportGenerator analyzeRepos +INFO: [221/428] Analyzing https://github.com/YowSiaoKang/ip.git (master)... +Jan 30, 2024 6:32:40 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/kaiyi27/ip.git... +Jan 30, 2024 6:32:40 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/kaiyi27/ip.git to complete... +Jan 30, 2024 6:32:40 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/YowSiaoKang/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/YowSiaoKang/ip.git (master)... +Jan 30, 2024 6:32:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/YowSiaoKang/ip.git (master)... +Jan 30, 2024 6:32:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/YowSiaoKang/ip.git (master)... +Jan 30, 2024 6:32:40 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/YowSiaoKang/ip.git (master) completed! +Jan 30, 2024 6:32:40 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/LargeCrowd/ip.git completed! +Jan 30, 2024 6:32:40 AM reposense.report.ReportGenerator analyzeRepos +INFO: [222/428] Analyzing https://github.com/LargeCrowd/ip.git (master)... +Jan 30, 2024 6:32:40 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/aureliony/ip.git... +Jan 30, 2024 6:32:40 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/aureliony/ip.git to complete... +Jan 30, 2024 6:32:41 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/LargeCrowd/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/LargeCrowd/ip.git (master)... -Jan 30, 2024 2:09:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/yorklim/ip.git (master)... -Jan 30, 2024 2:09:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/yorklim/ip.git (master)... -Jan 30, 2024 2:09:42 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/yorklim/ip.git (master) completed! -Jan 30, 2024 2:09:42 AM reposense.report.ReportGenerator analyzeRepos -INFO: [224/428] Analyzing https://github.com/jannaleong/ip.git (master)... -Jan 30, 2024 2:09:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:41 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/irwynliong/ip.git completed! +Jan 30, 2024 6:32:41 AM reposense.report.ReportGenerator analyzeRepos +INFO: [223/428] Analyzing https://github.com/irwynliong/ip.git (master)... +Jan 30, 2024 6:32:41 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/azumieflare/ip.git... +Jan 30, 2024 6:32:41 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/azumieflare/ip.git to complete... +Jan 30, 2024 6:32:41 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/irwynliong/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/irwynliong/ip.git (master)... +Jan 30, 2024 6:32:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/LargeCrowd/ip.git (master)... -Jan 30, 2024 2:09:42 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jannaleong/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jannaleong/ip.git (master)... -Jan 30, 2024 2:09:42 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/taniatsq/ip.git completed! -Jan 30, 2024 2:09:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/YowSiaoKang/ip.git (master)... -Jan 30, 2024 2:09:42 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/doyelee0313/ip.git completed! -Jan 30, 2024 2:09:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/LargeCrowd/ip.git (master)... -Jan 30, 2024 2:09:42 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:41 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/LargeCrowd/ip.git (master) completed! -Jan 30, 2024 2:09:42 AM reposense.report.ReportGenerator analyzeRepos -INFO: [225/428] Analyzing https://github.com/aureliony/ip.git (master)... -Jan 30, 2024 2:09:42 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Fidget-Spinner/ip.git... -Jan 30, 2024 2:09:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/YowSiaoKang/ip.git (master)... -Jan 30, 2024 2:09:42 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/FangRuoqing/ip.git... -Jan 30, 2024 2:09:42 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/YowSiaoKang/ip.git (master) completed! -Jan 30, 2024 2:09:42 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/FangRuoqing/ip.git to complete... -Jan 30, 2024 2:09:42 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Rikko1204/ip.git completed! -Jan 30, 2024 2:09:42 AM reposense.report.ReportGenerator analyzeRepos -INFO: [226/428] Analyzing https://github.com/kaiyi27/ip.git (master)... -Jan 30, 2024 2:09:42 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Fidget-Spinner/ip.git to complete... -Jan 30, 2024 2:09:42 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/zhuuyicheng/ip.git... -Jan 30, 2024 2:09:42 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/aureliony/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/aureliony/ip.git (master)... -Jan 30, 2024 2:09:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/irwynliong/ip.git (master)... -Jan 30, 2024 2:09:42 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/zhuuyicheng/ip.git to complete... -Jan 30, 2024 2:09:42 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/kaiyi27/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/kaiyi27/ip.git (master)... -Jan 30, 2024 2:09:42 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Yskie/ip.git completed! -Jan 30, 2024 2:09:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/irwynliong/ip.git (master)... -Jan 30, 2024 2:09:42 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:41 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/irwynliong/ip.git (master) completed! -Jan 30, 2024 2:09:42 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 6:32:41 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jannaleong/ip.git completed! +Jan 30, 2024 6:32:41 AM reposense.report.ReportGenerator analyzeRepos +INFO: [224/428] Analyzing https://github.com/jannaleong/ip.git (master)... +Jan 30, 2024 6:32:41 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/qinboan/ip.git... +Jan 30, 2024 6:32:41 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/qinboan/ip.git to complete... +Jan 30, 2024 6:32:41 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jannaleong/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jannaleong/ip.git (master)... +Jan 30, 2024 6:32:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jannaleong/ip.git (master)... +Jan 30, 2024 6:32:41 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/kaiyi27/ip.git completed! +Jan 30, 2024 6:32:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jannaleong/ip.git (master)... +Jan 30, 2024 6:32:41 AM reposense.report.ReportGenerator analyzeRepos +INFO: [225/428] Analyzing https://github.com/kaiyi27/ip.git (master)... +Jan 30, 2024 6:32:41 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/tengcharmaine/ip.git... +Jan 30, 2024 6:32:41 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/tengcharmaine/ip.git to complete... +Jan 30, 2024 6:32:41 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jannaleong/ip.git (master) completed! +Jan 30, 2024 6:32:41 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/kaiyi27/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/kaiyi27/ip.git (master)... +Jan 30, 2024 6:32:41 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/aureliony/ip.git completed! +Jan 30, 2024 6:32:41 AM reposense.report.ReportGenerator analyzeRepos +INFO: [226/428] Analyzing https://github.com/aureliony/ip.git (master)... +Jan 30, 2024 6:32:41 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/moguries/ip.git... +Jan 30, 2024 6:32:41 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/moguries/ip.git to complete... +Jan 30, 2024 6:32:41 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/azumieflare/ip.git completed! +Jan 30, 2024 6:32:41 AM reposense.report.ReportGenerator analyzeRepos INFO: [227/428] Analyzing https://github.com/azumieflare/ip.git (master)... -Jan 30, 2024 2:09:42 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/smolegz/ip.git... -Jan 30, 2024 2:09:42 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/smolegz/ip.git to complete... -Jan 30, 2024 2:09:42 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:41 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Joshy837/ip.git... +Jan 30, 2024 6:32:41 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Joshy837/ip.git to complete... +Jan 30, 2024 6:32:41 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/aureliony/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/aureliony/ip.git (master)... +Jan 30, 2024 6:32:41 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/azumieflare/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/azumieflare/ip.git (master)... -Jan 30, 2024 2:09:42 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Fidget-Spinner/ip.git completed! -Jan 30, 2024 2:09:42 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/zhuuyicheng/ip.git completed! -Jan 30, 2024 2:09:42 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/FangRuoqing/ip.git completed! -Jan 30, 2024 2:09:42 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jinhanfromNUS/ip.git... -Jan 30, 2024 2:09:42 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/0nesheep/ip.git... -Jan 30, 2024 2:09:42 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AdityaB4/ip.git... -Jan 30, 2024 2:09:42 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AdityaB4/ip.git to complete... -Jan 30, 2024 2:09:42 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/0nesheep/ip.git to complete... -Jan 30, 2024 2:09:43 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jinhanfromNUS/ip.git to complete... -Jan 30, 2024 2:09:43 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/smolegz/ip.git completed! -Jan 30, 2024 2:09:43 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/HM33-Stu/ip.git... -Jan 30, 2024 2:09:43 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/HM33-Stu/ip.git to complete... -Jan 30, 2024 2:09:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jannaleong/ip.git (master)... -Jan 30, 2024 2:09:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/azumieflare/ip.git (master)... -Jan 30, 2024 2:09:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jannaleong/ip.git (master)... -Jan 30, 2024 2:09:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/kaiyi27/ip.git (master)... -Jan 30, 2024 2:09:43 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jannaleong/ip.git (master) completed! -Jan 30, 2024 2:09:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/kaiyi27/ip.git (master)... +Jan 30, 2024 6:32:41 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/kaiyi27/ip.git (master) completed! +Jan 30, 2024 6:32:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/azumieflare/ip.git (master)... +Jan 30, 2024 6:32:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/azumieflare/ip.git (master)... -Jan 30, 2024 2:09:43 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:41 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/azumieflare/ip.git (master) completed! -Jan 30, 2024 2:09:43 AM reposense.report.ReportGenerator analyzeRepos -INFO: [228/428] Analyzing https://github.com/qinboan/ip.git (master)... -Jan 30, 2024 2:09:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/aureliony/ip.git (master)... -Jan 30, 2024 2:09:43 AM reposense.report.ReportGenerator analyzeRepos -INFO: [229/428] Analyzing https://github.com/tengcharmaine/ip.git (master)... -Jan 30, 2024 2:09:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/kaiyi27/ip.git (master)... -Jan 30, 2024 2:09:43 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/kaiyi27/ip.git (master) completed! -Jan 30, 2024 2:09:43 AM reposense.report.ReportGenerator analyzeRepos -INFO: [230/428] Analyzing https://github.com/moguries/ip.git (master)... -Jan 30, 2024 2:09:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/aureliony/ip.git (master)... -Jan 30, 2024 2:09:43 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:42 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/aureliony/ip.git (master) completed! -Jan 30, 2024 2:09:43 AM reposense.report.ReportGenerator analyzeRepos -INFO: [231/428] Analyzing https://github.com/Joshy837/ip.git (master)... -Jan 30, 2024 2:09:43 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:42 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/qinboan/ip.git completed! +Jan 30, 2024 6:32:42 AM reposense.report.ReportGenerator analyzeRepos +INFO: [228/428] Analyzing https://github.com/qinboan/ip.git (master)... +Jan 30, 2024 6:32:42 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/chengjunyuan/ip.git... +Jan 30, 2024 6:32:42 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/chengjunyuan/ip.git to complete... +Jan 30, 2024 6:32:42 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/qinboan/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/qinboan/ip.git (master)... -Jan 30, 2024 2:09:43 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/qinboan/ip.git (master)... +Jan 30, 2024 6:32:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/qinboan/ip.git (master)... +Jan 30, 2024 6:32:42 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/qinboan/ip.git (master) completed! +Jan 30, 2024 6:32:42 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tengcharmaine/ip.git completed! +Jan 30, 2024 6:32:42 AM reposense.report.ReportGenerator analyzeRepos +INFO: [229/428] Analyzing https://github.com/tengcharmaine/ip.git (master)... +Jan 30, 2024 6:32:42 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ChrysanthemumT/ip.git... +Jan 30, 2024 6:32:42 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ChrysanthemumT/ip.git to complete... +Jan 30, 2024 6:32:42 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/tengcharmaine/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/tengcharmaine/ip.git (master)... -Jan 30, 2024 2:09:43 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/tengcharmaine/ip.git (master)... +Jan 30, 2024 6:32:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/tengcharmaine/ip.git (master)... +Jan 30, 2024 6:32:42 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/tengcharmaine/ip.git (master) completed! +Jan 30, 2024 6:32:42 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Joshy837/ip.git completed! +Jan 30, 2024 6:32:42 AM reposense.report.ReportGenerator analyzeRepos +INFO: [230/428] Analyzing https://github.com/Joshy837/ip.git (master)... +Jan 30, 2024 6:32:42 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/camille-readbean/ip.git... +Jan 30, 2024 6:32:42 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/camille-readbean/ip.git to complete... +Jan 30, 2024 6:32:42 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/moguries/ip.git completed! +Jan 30, 2024 6:32:42 AM reposense.report.ReportGenerator analyzeRepos +INFO: [231/428] Analyzing https://github.com/moguries/ip.git (master)... +Jan 30, 2024 6:32:42 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/dabzpengu/ip.git... +Jan 30, 2024 6:32:42 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/dabzpengu/ip.git to complete... +Jan 30, 2024 6:32:42 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Joshy837/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Joshy837/ip.git (master)... -Jan 30, 2024 2:09:43 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/0nesheep/ip.git completed! -Jan 30, 2024 2:09:43 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/yap-zong-xin/ip.git... -Jan 30, 2024 2:09:43 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:42 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/moguries/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/moguries/ip.git (master)... -Jan 30, 2024 2:09:43 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jinhanfromNUS/ip.git completed! -Jan 30, 2024 2:09:43 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AdityaB4/ip.git completed! -Jan 30, 2024 2:09:43 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/yap-zong-xin/ip.git to complete... -Jan 30, 2024 2:09:43 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jocelyn-soh/ip.git... -Jan 30, 2024 2:09:43 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/felixchanyy/ip.git... -Jan 30, 2024 2:09:43 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jocelyn-soh/ip.git to complete... -Jan 30, 2024 2:09:43 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/HM33-Stu/ip.git completed! -Jan 30, 2024 2:09:43 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/felixchanyy/ip.git to complete... -Jan 30, 2024 2:09:43 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/donwong2308/ip.git... -Jan 30, 2024 2:09:43 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/donwong2308/ip.git to complete... -Jan 30, 2024 2:09:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/qinboan/ip.git (master)... -Jan 30, 2024 2:09:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/tengcharmaine/ip.git (master)... -Jan 30, 2024 2:09:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Joshy837/ip.git (master)... -Jan 30, 2024 2:09:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/qinboan/ip.git (master)... -Jan 30, 2024 2:09:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/moguries/ip.git (master)... -Jan 30, 2024 2:09:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Joshy837/ip.git (master)... -Jan 30, 2024 2:09:43 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/qinboan/ip.git (master) completed! -Jan 30, 2024 2:09:43 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:42 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Joshy837/ip.git (master) completed! -Jan 30, 2024 2:09:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/tengcharmaine/ip.git (master)... -Jan 30, 2024 2:09:43 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/tengcharmaine/ip.git (master) completed! -Jan 30, 2024 2:09:43 AM reposense.report.ReportGenerator analyzeRepos -INFO: [232/428] Analyzing https://github.com/dabzpengu/ip.git (master)... -Jan 30, 2024 2:09:43 AM reposense.report.ReportGenerator analyzeRepos -INFO: [233/428] Analyzing https://github.com/chengjunyuan/ip.git (master)... -Jan 30, 2024 2:09:43 AM reposense.report.ReportGenerator analyzeRepos -INFO: [234/428] Analyzing https://github.com/ChrysanthemumT/ip.git (master)... -Jan 30, 2024 2:09:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/moguries/ip.git (master)... -Jan 30, 2024 2:09:43 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:42 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/moguries/ip.git (master) completed! -Jan 30, 2024 2:09:43 AM reposense.report.ReportGenerator analyzeRepos -INFO: [235/428] Analyzing https://github.com/camille-readbean/ip.git (master)... -Jan 30, 2024 2:09:43 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/dabzpengu/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/dabzpengu/ip.git (master)... -Jan 30, 2024 2:09:43 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:43 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/chengjunyuan/ip.git completed! +Jan 30, 2024 6:32:43 AM reposense.report.ReportGenerator analyzeRepos +INFO: [232/428] Analyzing https://github.com/chengjunyuan/ip.git (master)... +Jan 30, 2024 6:32:43 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/cleowenxuan/ip.git... +Jan 30, 2024 6:32:43 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/cleowenxuan/ip.git to complete... +Jan 30, 2024 6:32:43 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/chengjunyuan/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/chengjunyuan/ip.git (master)... -Jan 30, 2024 2:09:43 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/chengjunyuan/ip.git (master)... +Jan 30, 2024 6:32:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/chengjunyuan/ip.git (master)... +Jan 30, 2024 6:32:43 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/chengjunyuan/ip.git (master) completed! +Jan 30, 2024 6:32:43 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ChrysanthemumT/ip.git completed! +Jan 30, 2024 6:32:43 AM reposense.report.ReportGenerator analyzeRepos +INFO: [233/428] Analyzing https://github.com/ChrysanthemumT/ip.git (master)... +Jan 30, 2024 6:32:43 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ziiqii/ip.git... +Jan 30, 2024 6:32:43 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ziiqii/ip.git to complete... +Jan 30, 2024 6:32:43 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ChrysanthemumT/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ChrysanthemumT/ip.git (master)... -Jan 30, 2024 2:09:43 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ChrysanthemumT/ip.git (master)... +Jan 30, 2024 6:32:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ChrysanthemumT/ip.git (master)... +Jan 30, 2024 6:32:43 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ChrysanthemumT/ip.git (master) completed! +Jan 30, 2024 6:32:43 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/camille-readbean/ip.git completed! +Jan 30, 2024 6:32:43 AM reposense.report.ReportGenerator analyzeRepos +INFO: [234/428] Analyzing https://github.com/camille-readbean/ip.git (master)... +Jan 30, 2024 6:32:43 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/rertyy/ip.git... +Jan 30, 2024 6:32:43 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/rertyy/ip.git to complete... +Jan 30, 2024 6:32:43 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/dabzpengu/ip.git completed! +Jan 30, 2024 6:32:43 AM reposense.report.ReportGenerator analyzeRepos +INFO: [235/428] Analyzing https://github.com/dabzpengu/ip.git (master)... +Jan 30, 2024 6:32:43 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/xiaorui-ui/ip.git... +Jan 30, 2024 6:32:43 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/xiaorui-ui/ip.git to complete... +Jan 30, 2024 6:32:43 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/camille-readbean/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/camille-readbean/ip.git (master)... -Jan 30, 2024 2:09:43 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/felixchanyy/ip.git completed! -Jan 30, 2024 2:09:43 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jocelyn-soh/ip.git completed! -Jan 30, 2024 2:09:43 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/yap-zong-xin/ip.git completed! -Jan 30, 2024 2:09:43 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/minreiseah/ip.git... -Jan 30, 2024 2:09:43 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Pluiexo/ip.git... -Jan 30, 2024 2:09:43 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Emberlynn-Loo/ip.git... -Jan 30, 2024 2:09:43 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Pluiexo/ip.git to complete... -Jan 30, 2024 2:09:43 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/minreiseah/ip.git to complete... -Jan 30, 2024 2:09:43 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/donwong2308/ip.git completed! -Jan 30, 2024 2:09:43 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Emberlynn-Loo/ip.git to complete... -Jan 30, 2024 2:09:43 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/DhiraPT/ip.git... -Jan 30, 2024 2:09:43 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/DhiraPT/ip.git to complete... -Jan 30, 2024 2:09:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:43 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/dabzpengu/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/dabzpengu/ip.git (master)... +Jan 30, 2024 6:32:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/dabzpengu/ip.git (master)... -Jan 30, 2024 2:09:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/dabzpengu/ip.git (master)... -Jan 30, 2024 2:09:43 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:43 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/dabzpengu/ip.git (master) completed! -Jan 30, 2024 2:09:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/chengjunyuan/ip.git (master)... -Jan 30, 2024 2:09:43 AM reposense.report.ReportGenerator analyzeRepos -INFO: [236/428] Analyzing https://github.com/cleowenxuan/ip.git (master)... -Jan 30, 2024 2:09:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/chengjunyuan/ip.git (master)... -Jan 30, 2024 2:09:43 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/chengjunyuan/ip.git (master) completed! -Jan 30, 2024 2:09:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/camille-readbean/ip.git (master)... -Jan 30, 2024 2:09:43 AM reposense.report.ReportGenerator analyzeRepos -INFO: [237/428] Analyzing https://github.com/ziiqii/ip.git (master)... -Jan 30, 2024 2:09:43 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/cleowenxuan/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/cleowenxuan/ip.git (master)... -Jan 30, 2024 2:09:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ChrysanthemumT/ip.git (master)... -Jan 30, 2024 2:09:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/camille-readbean/ip.git (master)... -Jan 30, 2024 2:09:43 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:43 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/camille-readbean/ip.git (master) completed! -Jan 30, 2024 2:09:43 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:43 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/cleowenxuan/ip.git completed! +Jan 30, 2024 6:32:43 AM reposense.report.ReportGenerator analyzeRepos +INFO: [236/428] Analyzing https://github.com/cleowenxuan/ip.git (master)... +Jan 30, 2024 6:32:43 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/TarinPairor/ip.git... +Jan 30, 2024 6:32:43 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/TarinPairor/ip.git to complete... +Jan 30, 2024 6:32:43 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/cleowenxuan/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/cleowenxuan/ip.git (master)... +Jan 30, 2024 6:32:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/cleowenxuan/ip.git (master)... +Jan 30, 2024 6:32:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/cleowenxuan/ip.git (master)... +Jan 30, 2024 6:32:43 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/cleowenxuan/ip.git (master) completed! +Jan 30, 2024 6:32:43 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ziiqii/ip.git completed! +Jan 30, 2024 6:32:43 AM reposense.report.ReportGenerator analyzeRepos +INFO: [237/428] Analyzing https://github.com/ziiqii/ip.git (master)... +Jan 30, 2024 6:32:43 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/amanzainal/ip.git... +Jan 30, 2024 6:32:43 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/amanzainal/ip.git to complete... +Jan 30, 2024 6:32:43 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ziiqii/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ziiqii/ip.git (master)... -Jan 30, 2024 2:09:43 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 6:32:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ziiqii/ip.git (master)... +Jan 30, 2024 6:32:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ziiqii/ip.git (master)... +Jan 30, 2024 6:32:44 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ziiqii/ip.git (master) completed! +Jan 30, 2024 6:32:44 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/rertyy/ip.git completed! +Jan 30, 2024 6:32:44 AM reposense.report.ReportGenerator analyzeRepos INFO: [238/428] Analyzing https://github.com/rertyy/ip.git (master)... -Jan 30, 2024 2:09:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ChrysanthemumT/ip.git (master)... -Jan 30, 2024 2:09:43 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ChrysanthemumT/ip.git (master) completed! -Jan 30, 2024 2:09:43 AM reposense.report.ReportGenerator analyzeRepos -INFO: [239/428] Analyzing https://github.com/xiaorui-ui/ip.git (master)... -Jan 30, 2024 2:09:43 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:44 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/minwaiphyo/ip.git... +Jan 30, 2024 6:32:44 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/minwaiphyo/ip.git to complete... +Jan 30, 2024 6:32:44 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/xiaorui-ui/ip.git completed! +Jan 30, 2024 6:32:44 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/rertyy/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/rertyy/ip.git (master)... -Jan 30, 2024 2:09:43 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:44 AM reposense.report.ReportGenerator analyzeRepos +INFO: [239/428] Analyzing https://github.com/xiaorui-ui/ip.git (master)... +Jan 30, 2024 6:32:44 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Javiery3889/ip.git... +Jan 30, 2024 6:32:44 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Javiery3889/ip.git to complete... +Jan 30, 2024 6:32:44 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/xiaorui-ui/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/xiaorui-ui/ip.git (master)... -Jan 30, 2024 2:09:43 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Pluiexo/ip.git completed! -Jan 30, 2024 2:09:43 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/minreiseah/ip.git completed! -Jan 30, 2024 2:09:43 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Emberlynn-Loo/ip.git completed! -Jan 30, 2024 2:09:43 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/howen02/ip.git... -Jan 30, 2024 2:09:43 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/shunjieee/ip.git... -Jan 30, 2024 2:09:43 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/nigel27022001/ip.git... -Jan 30, 2024 2:09:43 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/shunjieee/ip.git to complete... -Jan 30, 2024 2:09:43 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/DhiraPT/ip.git completed! -Jan 30, 2024 2:09:43 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/howen02/ip.git to complete... -Jan 30, 2024 2:09:43 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/shayaansultan/ip.git... -Jan 30, 2024 2:09:43 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/nigel27022001/ip.git to complete... -Jan 30, 2024 2:09:43 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/shayaansultan/ip.git to complete... -Jan 30, 2024 2:09:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/cleowenxuan/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/cleowenxuan/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/cleowenxuan/ip.git (master) completed! -Jan 30, 2024 2:09:44 AM reposense.report.ReportGenerator analyzeRepos -INFO: [240/428] Analyzing https://github.com/TarinPairor/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/xiaorui-ui/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/rertyy/ip.git (master)... +Jan 30, 2024 6:32:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/xiaorui-ui/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/rertyy/ip.git (master)... +Jan 30, 2024 6:32:44 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/xiaorui-ui/ip.git (master) completed! -Jan 30, 2024 2:09:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/rertyy/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:44 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/rertyy/ip.git (master) completed! +Jan 30, 2024 6:32:44 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/TarinPairor/ip.git completed! +Jan 30, 2024 6:32:44 AM reposense.report.ReportGenerator analyzeRepos +INFO: [240/428] Analyzing https://github.com/TarinPairor/ip.git (master)... +Jan 30, 2024 6:32:44 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jimseah-0116/ip.git... +Jan 30, 2024 6:32:44 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jimseah-0116/ip.git to complete... +Jan 30, 2024 6:32:44 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/TarinPairor/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/TarinPairor/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 6:32:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/TarinPairor/ip.git (master)... +Jan 30, 2024 6:32:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/TarinPairor/ip.git (master)... +Jan 30, 2024 6:32:44 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/TarinPairor/ip.git (master) completed! +Jan 30, 2024 6:32:44 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/amanzainal/ip.git completed! +Jan 30, 2024 6:32:44 AM reposense.report.ReportGenerator analyzeRepos INFO: [241/428] Analyzing https://github.com/amanzainal/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ziiqii/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/rertyy/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/rertyy/ip.git (master) completed! -Jan 30, 2024 2:09:44 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:44 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/VatsalVitosh/ip.git... +Jan 30, 2024 6:32:44 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/VatsalVitosh/ip.git to complete... +Jan 30, 2024 6:32:44 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/amanzainal/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/amanzainal/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 6:32:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/amanzainal/ip.git (master)... +Jan 30, 2024 6:32:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/amanzainal/ip.git (master)... +Jan 30, 2024 6:32:44 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/amanzainal/ip.git (master) completed! +Jan 30, 2024 6:32:44 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/minwaiphyo/ip.git completed! +Jan 30, 2024 6:32:44 AM reposense.report.ReportGenerator analyzeRepos INFO: [242/428] Analyzing https://github.com/minwaiphyo/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ziiqii/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ziiqii/ip.git (master) completed! -Jan 30, 2024 2:09:44 AM reposense.report.ReportGenerator analyzeRepos -INFO: [243/428] Analyzing https://github.com/Javiery3889/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:44 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/narwhalsilent/ip.git... +Jan 30, 2024 6:32:44 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/narwhalsilent/ip.git to complete... +Jan 30, 2024 6:32:44 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/minwaiphyo/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/minwaiphyo/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:44 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Javiery3889/ip.git completed! +Jan 30, 2024 6:32:44 AM reposense.report.ReportGenerator analyzeRepos +INFO: [243/428] Analyzing https://github.com/Javiery3889/ip.git (master)... +Jan 30, 2024 6:32:44 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ChuaZiLong/ip.git... +Jan 30, 2024 6:32:44 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ChuaZiLong/ip.git to complete... +Jan 30, 2024 6:32:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/minwaiphyo/ip.git (master)... +Jan 30, 2024 6:32:44 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Javiery3889/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Javiery3889/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/nigel27022001/ip.git completed! -Jan 30, 2024 2:09:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/shunjieee/ip.git completed! -Jan 30, 2024 2:09:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/shayaansultan/ip.git completed! -Jan 30, 2024 2:09:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/howen02/ip.git completed! -Jan 30, 2024 2:09:44 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/mahadhir247/ip.git... -Jan 30, 2024 2:09:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/minwaiphyo/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/GiselleTan/ip.git... -Jan 30, 2024 2:09:44 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/lihaoquan/ip.git... -Jan 30, 2024 2:09:44 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/PallonCX/ip.git... -Jan 30, 2024 2:09:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/TarinPairor/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/PallonCX/ip.git to complete... -Jan 30, 2024 2:09:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/lihaoquan/ip.git to complete... -Jan 30, 2024 2:09:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/GiselleTan/ip.git to complete... -Jan 30, 2024 2:09:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/mahadhir247/ip.git to complete... -Jan 30, 2024 2:09:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/minwaiphyo/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:44 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/minwaiphyo/ip.git (master) completed! -Jan 30, 2024 2:09:44 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 6:32:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Javiery3889/ip.git (master)... +Jan 30, 2024 6:32:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Javiery3889/ip.git (master)... +Jan 30, 2024 6:32:45 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Javiery3889/ip.git (master) completed! +Jan 30, 2024 6:32:45 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jimseah-0116/ip.git completed! +Jan 30, 2024 6:32:45 AM reposense.report.ReportGenerator analyzeRepos INFO: [244/428] Analyzing https://github.com/jimseah-0116/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:45 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Lin-Shuang-Shuang/ip.git... +Jan 30, 2024 6:32:45 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Lin-Shuang-Shuang/ip.git to complete... +Jan 30, 2024 6:32:45 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jimseah-0116/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jimseah-0116/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/TarinPairor/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/TarinPairor/ip.git (master) completed! -Jan 30, 2024 2:09:44 AM reposense.report.ReportGenerator analyzeRepos -INFO: [245/428] Analyzing https://github.com/narwhalsilent/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jimseah-0116/ip.git (master)... +Jan 30, 2024 6:32:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jimseah-0116/ip.git (master)... +Jan 30, 2024 6:32:45 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jimseah-0116/ip.git (master) completed! +Jan 30, 2024 6:32:45 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/VatsalVitosh/ip.git completed! +Jan 30, 2024 6:32:45 AM reposense.report.ReportGenerator analyzeRepos +INFO: [245/428] Analyzing https://github.com/VatsalVitosh/ip.git (master)... +Jan 30, 2024 6:32:45 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/whelan-low/ip.git... +Jan 30, 2024 6:32:45 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/whelan-low/ip.git to complete... +Jan 30, 2024 6:32:45 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/VatsalVitosh/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/VatsalVitosh/ip.git (master)... +Jan 30, 2024 6:32:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/VatsalVitosh/ip.git (master)... +Jan 30, 2024 6:32:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/VatsalVitosh/ip.git (master)... +Jan 30, 2024 6:32:45 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/VatsalVitosh/ip.git (master) completed! +Jan 30, 2024 6:32:45 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/narwhalsilent/ip.git completed! +Jan 30, 2024 6:32:45 AM reposense.report.ReportGenerator analyzeRepos +INFO: [246/428] Analyzing https://github.com/narwhalsilent/ip.git (master)... +Jan 30, 2024 6:32:45 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ThitipatC/ip.git... +Jan 30, 2024 6:32:45 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ThitipatC/ip.git to complete... +Jan 30, 2024 6:32:45 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/narwhalsilent/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/narwhalsilent/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jimseah-0116/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/amanzainal/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jimseah-0116/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jimseah-0116/ip.git (master) completed! -Jan 30, 2024 2:09:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/amanzainal/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.report.ReportGenerator analyzeRepos -INFO: [246/428] Analyzing https://github.com/ChuaZiLong/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/amanzainal/ip.git (master) completed! -Jan 30, 2024 2:09:44 AM reposense.report.ReportGenerator analyzeRepos -INFO: [247/428] Analyzing https://github.com/VatsalVitosh/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/narwhalsilent/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Javiery3889/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:45 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ChuaZiLong/ip.git completed! +Jan 30, 2024 6:32:45 AM reposense.report.ReportGenerator analyzeRepos +INFO: [247/428] Analyzing https://github.com/ChuaZiLong/ip.git (master)... +Jan 30, 2024 6:32:45 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/YuvBindal/ip.git... +Jan 30, 2024 6:32:45 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/YuvBindal/ip.git to complete... +Jan 30, 2024 6:32:45 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ChuaZiLong/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ChuaZiLong/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/narwhalsilent/ip.git (master)... +Jan 30, 2024 6:32:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/narwhalsilent/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/mahadhir247/ip.git completed! -Jan 30, 2024 2:09:44 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:45 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/narwhalsilent/ip.git (master) completed! -Jan 30, 2024 2:09:44 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 6:32:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ChuaZiLong/ip.git (master)... +Jan 30, 2024 6:32:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ChuaZiLong/ip.git (master)... +Jan 30, 2024 6:32:45 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ChuaZiLong/ip.git (master) completed! +Jan 30, 2024 6:32:46 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Lin-Shuang-Shuang/ip.git completed! +Jan 30, 2024 6:32:46 AM reposense.report.ReportGenerator analyzeRepos INFO: [248/428] Analyzing https://github.com/Lin-Shuang-Shuang/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/lihaoquan/ip.git completed! -Jan 30, 2024 2:09:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Javiery3889/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Javiery3889/ip.git (master) completed! -Jan 30, 2024 2:09:44 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/yadunut/ip.git... -Jan 30, 2024 2:09:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/GiselleTan/ip.git completed! -Jan 30, 2024 2:09:44 AM reposense.report.ReportGenerator analyzeRepos -INFO: [249/428] Analyzing https://github.com/whelan-low/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/VatsalVitosh/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/VatsalVitosh/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/yiwern5/ip.git... -Jan 30, 2024 2:09:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/PallonCX/ip.git completed! -Jan 30, 2024 2:09:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/yiwern5/ip.git to complete... -Jan 30, 2024 2:09:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/yadunut/ip.git to complete... -Jan 30, 2024 2:09:44 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:46 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/doyelee0313/ip.git... +Jan 30, 2024 6:32:46 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/doyelee0313/ip.git to complete... +Jan 30, 2024 6:32:46 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Lin-Shuang-Shuang/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Lin-Shuang-Shuang/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/saiutkarsh33/ip.git... -Jan 30, 2024 2:09:44 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Dexter-Wong/ip.git... -Jan 30, 2024 2:09:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/saiutkarsh33/ip.git to complete... -Jan 30, 2024 2:09:44 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Lin-Shuang-Shuang/ip.git (master)... +Jan 30, 2024 6:32:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Lin-Shuang-Shuang/ip.git (master)... +Jan 30, 2024 6:32:46 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Lin-Shuang-Shuang/ip.git (master) completed! +Jan 30, 2024 6:32:46 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/whelan-low/ip.git completed! +Jan 30, 2024 6:32:46 AM reposense.report.ReportGenerator analyzeRepos +INFO: [249/428] Analyzing https://github.com/whelan-low/ip.git (master)... +Jan 30, 2024 6:32:46 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/taniatsq/ip.git... +Jan 30, 2024 6:32:46 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/taniatsq/ip.git to complete... +Jan 30, 2024 6:32:46 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/whelan-low/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/whelan-low/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Dexter-Wong/ip.git to complete... -Jan 30, 2024 2:09:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ChuaZiLong/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ChuaZiLong/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ChuaZiLong/ip.git (master) completed! -Jan 30, 2024 2:09:44 AM reposense.report.ReportGenerator analyzeRepos -INFO: [250/428] Analyzing https://github.com/ThitipatC/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ThitipatC/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ThitipatC/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/whelan-low/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Lin-Shuang-Shuang/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/VatsalVitosh/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/whelan-low/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:46 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/whelan-low/ip.git (master) completed! -Jan 30, 2024 2:09:44 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 6:32:46 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ThitipatC/ip.git completed! +Jan 30, 2024 6:32:46 AM reposense.report.ReportGenerator analyzeRepos +INFO: [250/428] Analyzing https://github.com/ThitipatC/ip.git (master)... +Jan 30, 2024 6:32:46 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Rikko1204/ip.git... +Jan 30, 2024 6:32:46 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Rikko1204/ip.git to complete... +Jan 30, 2024 6:32:46 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/YuvBindal/ip.git completed! +Jan 30, 2024 6:32:46 AM reposense.report.ReportGenerator analyzeRepos INFO: [251/428] Analyzing https://github.com/YuvBindal/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Lin-Shuang-Shuang/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/VatsalVitosh/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Lin-Shuang-Shuang/ip.git (master) completed! -Jan 30, 2024 2:09:44 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/VatsalVitosh/ip.git (master) completed! -Jan 30, 2024 2:09:44 AM reposense.report.ReportGenerator analyzeRepos -INFO: [252/428] Analyzing https://github.com/taniatsq/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.report.ReportGenerator analyzeRepos -INFO: [253/428] Analyzing https://github.com/doyelee0313/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:46 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Yskie/ip.git... +Jan 30, 2024 6:32:46 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ThitipatC/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ThitipatC/ip.git (master)... +Jan 30, 2024 6:32:46 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Yskie/ip.git to complete... +Jan 30, 2024 6:32:46 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/YuvBindal/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/YuvBindal/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/taniatsq/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/taniatsq/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/doyelee0313/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/doyelee0313/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/yadunut/ip.git completed! -Jan 30, 2024 2:09:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/yiwern5/ip.git completed! -Jan 30, 2024 2:09:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Dexter-Wong/ip.git completed! -Jan 30, 2024 2:09:44 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/h4ow3i/ip.git... -Jan 30, 2024 2:09:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/saiutkarsh33/ip.git completed! -Jan 30, 2024 2:09:44 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Derekljh/ip.git... -Jan 30, 2024 2:09:44 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Jayne1010/ip.git... -Jan 30, 2024 2:09:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Jayne1010/ip.git to complete... -Jan 30, 2024 2:09:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Derekljh/ip.git to complete... -Jan 30, 2024 2:09:44 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/officialchengyud/ip.git... -Jan 30, 2024 2:09:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/h4ow3i/ip.git to complete... -Jan 30, 2024 2:09:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/officialchengyud/ip.git to complete... -Jan 30, 2024 2:09:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ThitipatC/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/YuvBindal/ip.git (master)... +Jan 30, 2024 6:32:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ThitipatC/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:46 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ThitipatC/ip.git (master) completed! -Jan 30, 2024 2:09:44 AM reposense.report.ReportGenerator analyzeRepos -INFO: [254/428] Analyzing https://github.com/Rikko1204/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/YuvBindal/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/doyelee0313/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/YuvBindal/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:46 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/YuvBindal/ip.git (master) completed! -Jan 30, 2024 2:09:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/taniatsq/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Rikko1204/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Rikko1204/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.report.ReportGenerator analyzeRepos -INFO: [255/428] Analyzing https://github.com/Yskie/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:46 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/doyelee0313/ip.git completed! +Jan 30, 2024 6:32:46 AM reposense.report.ReportGenerator analyzeRepos +INFO: [252/428] Analyzing https://github.com/doyelee0313/ip.git (master)... +Jan 30, 2024 6:32:46 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Fidget-Spinner/ip.git... +Jan 30, 2024 6:32:46 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Fidget-Spinner/ip.git to complete... +Jan 30, 2024 6:32:46 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/doyelee0313/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/doyelee0313/ip.git (master)... +Jan 30, 2024 6:32:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/doyelee0313/ip.git (master)... +Jan 30, 2024 6:32:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/doyelee0313/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:46 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/doyelee0313/ip.git (master) completed! -Jan 30, 2024 2:09:44 AM reposense.report.ReportGenerator analyzeRepos -INFO: [256/428] Analyzing https://github.com/zhuuyicheng/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:46 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/taniatsq/ip.git completed! +Jan 30, 2024 6:32:46 AM reposense.report.ReportGenerator analyzeRepos +INFO: [253/428] Analyzing https://github.com/taniatsq/ip.git (master)... +Jan 30, 2024 6:32:46 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/FangRuoqing/ip.git... +Jan 30, 2024 6:32:46 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/FangRuoqing/ip.git to complete... +Jan 30, 2024 6:32:47 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/taniatsq/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/taniatsq/ip.git (master)... +Jan 30, 2024 6:32:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/taniatsq/ip.git (master)... +Jan 30, 2024 6:32:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/taniatsq/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:47 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/taniatsq/ip.git (master) completed! -Jan 30, 2024 2:09:44 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:47 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Rikko1204/ip.git completed! +Jan 30, 2024 6:32:47 AM reposense.report.ReportGenerator analyzeRepos +INFO: [254/428] Analyzing https://github.com/Rikko1204/ip.git (master)... +Jan 30, 2024 6:32:47 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/zhuuyicheng/ip.git... +Jan 30, 2024 6:32:47 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/zhuuyicheng/ip.git to complete... +Jan 30, 2024 6:32:47 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Yskie/ip.git completed! +Jan 30, 2024 6:32:47 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Rikko1204/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Rikko1204/ip.git (master)... +Jan 30, 2024 6:32:47 AM reposense.report.ReportGenerator analyzeRepos +INFO: [255/428] Analyzing https://github.com/Yskie/ip.git (master)... +Jan 30, 2024 6:32:47 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/smolegz/ip.git... +Jan 30, 2024 6:32:47 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/smolegz/ip.git to complete... +Jan 30, 2024 6:32:47 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Yskie/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Yskie/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 6:32:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Rikko1204/ip.git (master)... +Jan 30, 2024 6:32:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Rikko1204/ip.git (master)... +Jan 30, 2024 6:32:47 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Rikko1204/ip.git (master) completed! +Jan 30, 2024 6:32:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Yskie/ip.git (master)... +Jan 30, 2024 6:32:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Yskie/ip.git (master)... +Jan 30, 2024 6:32:47 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Yskie/ip.git (master) completed! +Jan 30, 2024 6:32:47 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Fidget-Spinner/ip.git completed! +Jan 30, 2024 6:32:47 AM reposense.report.ReportGenerator analyzeRepos +INFO: [256/428] Analyzing https://github.com/Fidget-Spinner/ip.git (master)... +Jan 30, 2024 6:32:47 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jinhanfromNUS/ip.git... +Jan 30, 2024 6:32:47 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jinhanfromNUS/ip.git to complete... +Jan 30, 2024 6:32:47 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Fidget-Spinner/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Fidget-Spinner/ip.git (master)... +Jan 30, 2024 6:32:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Fidget-Spinner/ip.git (master)... +Jan 30, 2024 6:32:47 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/FangRuoqing/ip.git completed! +Jan 30, 2024 6:32:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Fidget-Spinner/ip.git (master)... +Jan 30, 2024 6:32:47 AM reposense.report.ReportGenerator analyzeRepos INFO: [257/428] Analyzing https://github.com/FangRuoqing/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/zhuuyicheng/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/zhuuyicheng/ip.git (master)... -Jan 30, 2024 2:09:44 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:47 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/0nesheep/ip.git... +Jan 30, 2024 6:32:47 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Fidget-Spinner/ip.git (master) completed! +Jan 30, 2024 6:32:47 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/0nesheep/ip.git to complete... +Jan 30, 2024 6:32:47 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/FangRuoqing/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/FangRuoqing/ip.git (master)... -Jan 30, 2024 2:09:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Derekljh/ip.git completed! -Jan 30, 2024 2:09:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Jayne1010/ip.git completed! -Jan 30, 2024 2:09:45 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/chenyixin0/ip.git... -Jan 30, 2024 2:09:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/officialchengyud/ip.git completed! -Jan 30, 2024 2:09:45 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/shavonneg/ip.git... -Jan 30, 2024 2:09:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/chenyixin0/ip.git to complete... -Jan 30, 2024 2:09:45 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/caitlyntang/ip.git... -Jan 30, 2024 2:09:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/h4ow3i/ip.git completed! -Jan 30, 2024 2:09:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/shavonneg/ip.git to complete... -Jan 30, 2024 2:09:45 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/getsquared/ip.git... -Jan 30, 2024 2:09:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/caitlyntang/ip.git to complete... -Jan 30, 2024 2:09:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/FangRuoqing/ip.git (master)... -Jan 30, 2024 2:09:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/getsquared/ip.git to complete... -Jan 30, 2024 2:09:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/FangRuoqing/ip.git (master)... -Jan 30, 2024 2:09:45 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:47 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/FangRuoqing/ip.git (master) completed! -Jan 30, 2024 2:09:45 AM reposense.report.ReportGenerator analyzeRepos -INFO: [258/428] Analyzing https://github.com/Fidget-Spinner/ip.git (master)... -Jan 30, 2024 2:09:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Rikko1204/ip.git (master)... -Jan 30, 2024 2:09:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/zhuuyicheng/ip.git (master)... -Jan 30, 2024 2:09:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Rikko1204/ip.git (master)... -Jan 30, 2024 2:09:45 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Rikko1204/ip.git (master) completed! -Jan 30, 2024 2:09:45 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 6:32:48 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/zhuuyicheng/ip.git completed! +Jan 30, 2024 6:32:48 AM reposense.report.ReportGenerator analyzeRepos +INFO: [258/428] Analyzing https://github.com/zhuuyicheng/ip.git (master)... +Jan 30, 2024 6:32:48 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AdityaB4/ip.git... +Jan 30, 2024 6:32:48 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AdityaB4/ip.git to complete... +Jan 30, 2024 6:32:48 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/smolegz/ip.git completed! +Jan 30, 2024 6:32:48 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/HM33-Stu/ip.git... +Jan 30, 2024 6:32:48 AM reposense.report.ReportGenerator analyzeRepos INFO: [259/428] Analyzing https://github.com/smolegz/ip.git (master)... -Jan 30, 2024 2:09:45 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Fidget-Spinner/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Fidget-Spinner/ip.git (master)... -Jan 30, 2024 2:09:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/zhuuyicheng/ip.git (master)... -Jan 30, 2024 2:09:45 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/zhuuyicheng/ip.git (master) completed! -Jan 30, 2024 2:09:45 AM reposense.report.ReportGenerator analyzeRepos -INFO: [260/428] Analyzing https://github.com/0nesheep/ip.git (master)... -Jan 30, 2024 2:09:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Yskie/ip.git (master)... -Jan 30, 2024 2:09:45 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:48 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/HM33-Stu/ip.git to complete... +Jan 30, 2024 6:32:48 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/zhuuyicheng/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/zhuuyicheng/ip.git (master)... +Jan 30, 2024 6:32:48 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/smolegz/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/smolegz/ip.git (master)... -Jan 30, 2024 2:09:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Yskie/ip.git (master)... -Jan 30, 2024 2:09:45 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/0nesheep/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/0nesheep/ip.git (master)... -Jan 30, 2024 2:09:45 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Yskie/ip.git (master) completed! -Jan 30, 2024 2:09:45 AM reposense.report.ReportGenerator analyzeRepos -INFO: [261/428] Analyzing https://github.com/jinhanfromNUS/ip.git (master)... -Jan 30, 2024 2:09:45 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jinhanfromNUS/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jinhanfromNUS/ip.git (master)... -Jan 30, 2024 2:09:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/caitlyntang/ip.git completed! -Jan 30, 2024 2:09:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/chenyixin0/ip.git completed! -Jan 30, 2024 2:09:45 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ashleyy2444/ip.git... -Jan 30, 2024 2:09:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/shavonneg/ip.git completed! -Jan 30, 2024 2:09:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/getsquared/ip.git completed! -Jan 30, 2024 2:09:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ashleyy2444/ip.git to complete... -Jan 30, 2024 2:09:45 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/zhekaiii/ip.git... -Jan 30, 2024 2:09:45 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/johnyoozhengxian/ip.git... -Jan 30, 2024 2:09:45 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/meenulekha/ip.git... -Jan 30, 2024 2:09:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/zhuuyicheng/ip.git (master)... +Jan 30, 2024 6:32:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/smolegz/ip.git (master)... -Jan 30, 2024 2:09:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/johnyoozhengxian/ip.git to complete... -Jan 30, 2024 2:09:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/zhekaiii/ip.git to complete... -Jan 30, 2024 2:09:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jinhanfromNUS/ip.git (master)... -Jan 30, 2024 2:09:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/meenulekha/ip.git to complete... -Jan 30, 2024 2:09:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/zhuuyicheng/ip.git (master)... +Jan 30, 2024 6:32:48 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/zhuuyicheng/ip.git (master) completed! +Jan 30, 2024 6:32:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/smolegz/ip.git (master)... -Jan 30, 2024 2:09:45 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:48 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/smolegz/ip.git (master) completed! -Jan 30, 2024 2:09:45 AM reposense.report.ReportGenerator analyzeRepos -INFO: [262/428] Analyzing https://github.com/AdityaB4/ip.git (master)... -Jan 30, 2024 2:09:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/0nesheep/ip.git (master)... -Jan 30, 2024 2:09:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:48 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jinhanfromNUS/ip.git completed! +Jan 30, 2024 6:32:48 AM reposense.report.ReportGenerator analyzeRepos +INFO: [260/428] Analyzing https://github.com/jinhanfromNUS/ip.git (master)... +Jan 30, 2024 6:32:48 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/yap-zong-xin/ip.git... +Jan 30, 2024 6:32:48 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/yap-zong-xin/ip.git to complete... +Jan 30, 2024 6:32:48 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jinhanfromNUS/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jinhanfromNUS/ip.git (master)... +Jan 30, 2024 6:32:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jinhanfromNUS/ip.git (master)... +Jan 30, 2024 6:32:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/jinhanfromNUS/ip.git (master)... -Jan 30, 2024 2:09:45 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:48 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/jinhanfromNUS/ip.git (master) completed! -Jan 30, 2024 2:09:45 AM reposense.report.ReportGenerator analyzeRepos -INFO: [263/428] Analyzing https://github.com/HM33-Stu/ip.git (master)... -Jan 30, 2024 2:09:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:48 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/0nesheep/ip.git completed! +Jan 30, 2024 6:32:48 AM reposense.report.ReportGenerator analyzeRepos +INFO: [261/428] Analyzing https://github.com/0nesheep/ip.git (master)... +Jan 30, 2024 6:32:48 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jocelyn-soh/ip.git... +Jan 30, 2024 6:32:48 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jocelyn-soh/ip.git to complete... +Jan 30, 2024 6:32:48 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/0nesheep/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/0nesheep/ip.git (master)... +Jan 30, 2024 6:32:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/0nesheep/ip.git (master)... +Jan 30, 2024 6:32:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/0nesheep/ip.git (master)... -Jan 30, 2024 2:09:45 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:48 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/0nesheep/ip.git (master) completed! -Jan 30, 2024 2:09:45 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AdityaB4/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AdityaB4/ip.git (master)... -Jan 30, 2024 2:09:45 AM reposense.report.ReportGenerator analyzeRepos -INFO: [264/428] Analyzing https://github.com/yap-zong-xin/ip.git (master)... -Jan 30, 2024 2:09:45 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:48 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AdityaB4/ip.git completed! +Jan 30, 2024 6:32:48 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/HM33-Stu/ip.git completed! +Jan 30, 2024 6:32:48 AM reposense.report.ReportGenerator analyzeRepos +INFO: [262/428] Analyzing https://github.com/AdityaB4/ip.git (master)... +Jan 30, 2024 6:32:48 AM reposense.report.ReportGenerator analyzeRepos +INFO: [263/428] Analyzing https://github.com/HM33-Stu/ip.git (master)... +Jan 30, 2024 6:32:48 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/felixchanyy/ip.git... +Jan 30, 2024 6:32:48 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/donwong2308/ip.git... +Jan 30, 2024 6:32:48 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/donwong2308/ip.git to complete... +Jan 30, 2024 6:32:48 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/felixchanyy/ip.git to complete... +Jan 30, 2024 6:32:48 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/HM33-Stu/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/HM33-Stu/ip.git (master)... -Jan 30, 2024 2:09:45 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/yap-zong-xin/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/yap-zong-xin/ip.git (master)... -Jan 30, 2024 2:09:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:48 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AdityaB4/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AdityaB4/ip.git (master)... +Jan 30, 2024 6:32:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/HM33-Stu/ip.git (master)... -Jan 30, 2024 2:09:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/HM33-Stu/ip.git (master)... -Jan 30, 2024 2:09:45 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:48 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/HM33-Stu/ip.git (master) completed! -Jan 30, 2024 2:09:45 AM reposense.report.ReportGenerator analyzeRepos -INFO: [265/428] Analyzing https://github.com/jocelyn-soh/ip.git (master)... -Jan 30, 2024 2:09:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ashleyy2444/ip.git completed! -Jan 30, 2024 2:09:45 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jocelyn-soh/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jocelyn-soh/ip.git (master)... -Jan 30, 2024 2:09:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/zhekaiii/ip.git completed! -Jan 30, 2024 2:09:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Fidget-Spinner/ip.git (master)... -Jan 30, 2024 2:09:45 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Li-Zizhen/ip.git... -Jan 30, 2024 2:09:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/johnyoozhengxian/ip.git completed! -Jan 30, 2024 2:09:45 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/SimHanKiong/ip.git... -Jan 30, 2024 2:09:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Li-Zizhen/ip.git to complete... -Jan 30, 2024 2:09:45 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/JuliaPoo/ip.git... -Jan 30, 2024 2:09:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/SimHanKiong/ip.git to complete... -Jan 30, 2024 2:09:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/yap-zong-xin/ip.git (master)... -Jan 30, 2024 2:09:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Fidget-Spinner/ip.git (master)... -Jan 30, 2024 2:09:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/JuliaPoo/ip.git to complete... -Jan 30, 2024 2:09:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/meenulekha/ip.git completed! -Jan 30, 2024 2:09:45 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Fidget-Spinner/ip.git (master) completed! -Jan 30, 2024 2:09:45 AM reposense.report.ReportGenerator analyzeRepos -INFO: [266/428] Analyzing https://github.com/felixchanyy/ip.git (master)... -Jan 30, 2024 2:09:45 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/vannykin/ip.git... -Jan 30, 2024 2:09:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/vannykin/ip.git to complete... -Jan 30, 2024 2:09:45 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/felixchanyy/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/felixchanyy/ip.git (master)... -Jan 30, 2024 2:09:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/yap-zong-xin/ip.git (master)... -Jan 30, 2024 2:09:45 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/yap-zong-xin/ip.git (master) completed! -Jan 30, 2024 2:09:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AdityaB4/ip.git (master)... -Jan 30, 2024 2:09:45 AM reposense.report.ReportGenerator analyzeRepos -INFO: [267/428] Analyzing https://github.com/donwong2308/ip.git (master)... -Jan 30, 2024 2:09:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AdityaB4/ip.git (master)... -Jan 30, 2024 2:09:45 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:48 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AdityaB4/ip.git (master) completed! -Jan 30, 2024 2:09:45 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:49 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/yap-zong-xin/ip.git completed! +Jan 30, 2024 6:32:49 AM reposense.report.ReportGenerator analyzeRepos +INFO: [264/428] Analyzing https://github.com/yap-zong-xin/ip.git (master)... +Jan 30, 2024 6:32:49 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/minreiseah/ip.git... +Jan 30, 2024 6:32:49 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/minreiseah/ip.git to complete... +Jan 30, 2024 6:32:49 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/yap-zong-xin/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/yap-zong-xin/ip.git (master)... +Jan 30, 2024 6:32:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/yap-zong-xin/ip.git (master)... +Jan 30, 2024 6:32:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/yap-zong-xin/ip.git (master)... +Jan 30, 2024 6:32:49 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/yap-zong-xin/ip.git (master) completed! +Jan 30, 2024 6:32:49 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jocelyn-soh/ip.git completed! +Jan 30, 2024 6:32:49 AM reposense.report.ReportGenerator analyzeRepos +INFO: [265/428] Analyzing https://github.com/jocelyn-soh/ip.git (master)... +Jan 30, 2024 6:32:49 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Pluiexo/ip.git... +Jan 30, 2024 6:32:49 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Pluiexo/ip.git to complete... +Jan 30, 2024 6:32:49 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jocelyn-soh/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jocelyn-soh/ip.git (master)... +Jan 30, 2024 6:32:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jocelyn-soh/ip.git (master)... +Jan 30, 2024 6:32:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jocelyn-soh/ip.git (master)... +Jan 30, 2024 6:32:49 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jocelyn-soh/ip.git (master) completed! +Jan 30, 2024 6:32:49 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/donwong2308/ip.git completed! +Jan 30, 2024 6:32:49 AM reposense.report.ReportGenerator analyzeRepos +INFO: [266/428] Analyzing https://github.com/donwong2308/ip.git (master)... +Jan 30, 2024 6:32:49 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Emberlynn-Loo/ip.git... +Jan 30, 2024 6:32:49 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Emberlynn-Loo/ip.git to complete... +Jan 30, 2024 6:32:49 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/felixchanyy/ip.git completed! +Jan 30, 2024 6:32:49 AM reposense.report.ReportGenerator analyzeRepos +INFO: [267/428] Analyzing https://github.com/felixchanyy/ip.git (master)... +Jan 30, 2024 6:32:49 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/DhiraPT/ip.git... +Jan 30, 2024 6:32:49 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/DhiraPT/ip.git to complete... +Jan 30, 2024 6:32:49 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/donwong2308/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/donwong2308/ip.git (master)... -Jan 30, 2024 2:09:45 AM reposense.report.ReportGenerator analyzeRepos -INFO: [268/428] Analyzing https://github.com/Pluiexo/ip.git (master)... -Jan 30, 2024 2:09:45 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Pluiexo/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Pluiexo/ip.git (master)... -Jan 30, 2024 2:09:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jocelyn-soh/ip.git (master)... -Jan 30, 2024 2:09:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jocelyn-soh/ip.git (master)... -Jan 30, 2024 2:09:45 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jocelyn-soh/ip.git (master) completed! -Jan 30, 2024 2:09:45 AM reposense.report.ReportGenerator analyzeRepos -INFO: [269/428] Analyzing https://github.com/minreiseah/ip.git (master)... -Jan 30, 2024 2:09:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/felixchanyy/ip.git (master)... -Jan 30, 2024 2:09:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:49 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/felixchanyy/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/felixchanyy/ip.git (master)... +Jan 30, 2024 6:32:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/donwong2308/ip.git (master)... -Jan 30, 2024 2:09:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Li-Zizhen/ip.git completed! -Jan 30, 2024 2:09:45 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/minreiseah/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/minreiseah/ip.git (master)... -Jan 30, 2024 2:09:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/donwong2308/ip.git (master)... +Jan 30, 2024 6:32:49 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/donwong2308/ip.git (master) completed! +Jan 30, 2024 6:32:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/felixchanyy/ip.git (master)... +Jan 30, 2024 6:32:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/felixchanyy/ip.git (master)... -Jan 30, 2024 2:09:45 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:49 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/felixchanyy/ip.git (master) completed! -Jan 30, 2024 2:09:45 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/teojunda/ip.git... -Jan 30, 2024 2:09:45 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 6:32:49 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/minreiseah/ip.git completed! +Jan 30, 2024 6:32:49 AM reposense.report.ReportGenerator analyzeRepos +INFO: [268/428] Analyzing https://github.com/minreiseah/ip.git (master)... +Jan 30, 2024 6:32:49 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/howen02/ip.git... +Jan 30, 2024 6:32:49 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/howen02/ip.git to complete... +Jan 30, 2024 6:32:49 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/minreiseah/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/minreiseah/ip.git (master)... +Jan 30, 2024 6:32:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/minreiseah/ip.git (master)... +Jan 30, 2024 6:32:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/minreiseah/ip.git (master)... +Jan 30, 2024 6:32:49 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/minreiseah/ip.git (master) completed! +Jan 30, 2024 6:32:50 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Pluiexo/ip.git completed! +Jan 30, 2024 6:32:50 AM reposense.report.ReportGenerator analyzeRepos +INFO: [269/428] Analyzing https://github.com/Pluiexo/ip.git (master)... +Jan 30, 2024 6:32:50 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/shunjieee/ip.git... +Jan 30, 2024 6:32:50 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/shunjieee/ip.git to complete... +Jan 30, 2024 6:32:50 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Pluiexo/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Pluiexo/ip.git (master)... +Jan 30, 2024 6:32:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Pluiexo/ip.git (master)... +Jan 30, 2024 6:32:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Pluiexo/ip.git (master)... +Jan 30, 2024 6:32:50 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Pluiexo/ip.git (master) completed! +Jan 30, 2024 6:32:50 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Emberlynn-Loo/ip.git completed! +Jan 30, 2024 6:32:50 AM reposense.report.ReportGenerator analyzeRepos INFO: [270/428] Analyzing https://github.com/Emberlynn-Loo/ip.git (master)... -Jan 30, 2024 2:09:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/SimHanKiong/ip.git completed! -Jan 30, 2024 2:09:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/teojunda/ip.git to complete... -Jan 30, 2024 2:09:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/donwong2308/ip.git (master)... -Jan 30, 2024 2:09:45 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/donwong2308/ip.git (master) completed! -Jan 30, 2024 2:09:45 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Ko-Khan/ip.git... -Jan 30, 2024 2:09:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/JuliaPoo/ip.git completed! -Jan 30, 2024 2:09:45 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 6:32:50 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/nigel27022001/ip.git... +Jan 30, 2024 6:32:50 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/nigel27022001/ip.git to complete... +Jan 30, 2024 6:32:50 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/DhiraPT/ip.git completed! +Jan 30, 2024 6:32:50 AM reposense.report.ReportGenerator analyzeRepos INFO: [271/428] Analyzing https://github.com/DhiraPT/ip.git (master)... -Jan 30, 2024 2:09:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Ko-Khan/ip.git to complete... -Jan 30, 2024 2:09:45 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:50 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/shayaansultan/ip.git... +Jan 30, 2024 6:32:50 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/shayaansultan/ip.git to complete... +Jan 30, 2024 6:32:50 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Emberlynn-Loo/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Emberlynn-Loo/ip.git (master)... -Jan 30, 2024 2:09:46 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jyztintan/ip.git... -Jan 30, 2024 2:09:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jyztintan/ip.git to complete... -Jan 30, 2024 2:09:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/vannykin/ip.git completed! -Jan 30, 2024 2:09:46 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:50 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/DhiraPT/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:46 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jasperng-nus/ip.git... -Jan 30, 2024 2:09:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/DhiraPT/ip.git (master)... -Jan 30, 2024 2:09:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jasperng-nus/ip.git to complete... -Jan 30, 2024 2:09:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Pluiexo/ip.git (master)... -Jan 30, 2024 2:09:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Pluiexo/ip.git (master)... -Jan 30, 2024 2:09:46 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Pluiexo/ip.git (master) completed! -Jan 30, 2024 2:09:46 AM reposense.report.ReportGenerator analyzeRepos -INFO: [272/428] Analyzing https://github.com/shayaansultan/ip.git (master)... -Jan 30, 2024 2:09:46 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/shayaansultan/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/shayaansultan/ip.git (master)... -Jan 30, 2024 2:09:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Emberlynn-Loo/ip.git (master)... -Jan 30, 2024 2:09:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/minreiseah/ip.git (master)... -Jan 30, 2024 2:09:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Emberlynn-Loo/ip.git (master)... -Jan 30, 2024 2:09:46 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:50 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Emberlynn-Loo/ip.git (master) completed! -Jan 30, 2024 2:09:46 AM reposense.report.ReportGenerator analyzeRepos -INFO: [273/428] Analyzing https://github.com/nigel27022001/ip.git (master)... -Jan 30, 2024 2:09:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/minreiseah/ip.git (master)... -Jan 30, 2024 2:09:46 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/minreiseah/ip.git (master) completed! -Jan 30, 2024 2:09:46 AM reposense.report.ReportGenerator analyzeRepos -INFO: [274/428] Analyzing https://github.com/shunjieee/ip.git (master)... -Jan 30, 2024 2:09:46 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/nigel27022001/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/nigel27022001/ip.git (master)... -Jan 30, 2024 2:09:46 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/shunjieee/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/shunjieee/ip.git (master)... -Jan 30, 2024 2:09:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/DhiraPT/ip.git (master)... -Jan 30, 2024 2:09:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Ko-Khan/ip.git completed! -Jan 30, 2024 2:09:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/teojunda/ip.git completed! -Jan 30, 2024 2:09:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/DhiraPT/ip.git (master)... -Jan 30, 2024 2:09:46 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:50 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/DhiraPT/ip.git (master) completed! -Jan 30, 2024 2:09:46 AM reposense.report.ReportGenerator analyzeRepos -INFO: [275/428] Analyzing https://github.com/howen02/ip.git (master)... -Jan 30, 2024 2:09:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/shunjieee/ip.git (master)... -Jan 30, 2024 2:09:46 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/delishad21/ip.git... -Jan 30, 2024 2:09:46 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/IamZhenHong/ip.git... -Jan 30, 2024 2:09:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jyztintan/ip.git completed! -Jan 30, 2024 2:09:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/IamZhenHong/ip.git to complete... -Jan 30, 2024 2:09:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/delishad21/ip.git to complete... -Jan 30, 2024 2:09:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jasperng-nus/ip.git completed! -Jan 30, 2024 2:09:46 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/shamesjen/ip.git... -Jan 30, 2024 2:09:46 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Ma-Yirui/ip.git... -Jan 30, 2024 2:09:46 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:50 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/howen02/ip.git completed! +Jan 30, 2024 6:32:50 AM reposense.report.ReportGenerator analyzeRepos +INFO: [272/428] Analyzing https://github.com/howen02/ip.git (master)... +Jan 30, 2024 6:32:50 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/mahadhir247/ip.git... +Jan 30, 2024 6:32:50 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/mahadhir247/ip.git to complete... +Jan 30, 2024 6:32:50 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/howen02/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/howen02/ip.git (master)... -Jan 30, 2024 2:09:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/shamesjen/ip.git to complete... -Jan 30, 2024 2:09:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/howen02/ip.git (master)... +Jan 30, 2024 6:32:50 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/shunjieee/ip.git completed! +Jan 30, 2024 6:32:50 AM reposense.report.ReportGenerator analyzeRepos +INFO: [273/428] Analyzing https://github.com/shunjieee/ip.git (master)... +Jan 30, 2024 6:32:50 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/GiselleTan/ip.git... +Jan 30, 2024 6:32:50 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/GiselleTan/ip.git to complete... +Jan 30, 2024 6:32:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/howen02/ip.git (master)... +Jan 30, 2024 6:32:50 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/howen02/ip.git (master) completed! +Jan 30, 2024 6:32:50 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/shunjieee/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/shunjieee/ip.git (master)... +Jan 30, 2024 6:32:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/shunjieee/ip.git (master)... +Jan 30, 2024 6:32:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/shunjieee/ip.git (master)... -Jan 30, 2024 2:09:46 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:50 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/shunjieee/ip.git (master) completed! -Jan 30, 2024 2:09:46 AM reposense.report.ReportGenerator analyzeRepos -INFO: [276/428] Analyzing https://github.com/mahadhir247/ip.git (master)... -Jan 30, 2024 2:09:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Ma-Yirui/ip.git to complete... -Jan 30, 2024 2:09:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/shayaansultan/ip.git (master)... -Jan 30, 2024 2:09:46 AM reposense.report.RepoCloner waitForCloneProcess -WARNING: Exception met while trying to clone the repo "IamZhenHong/ip[master]", will skip this repo. -reposense.system.CommandRunnerProcessException: Error returned from command git clone --bare 'https://github.com/IamZhenHong/ip.git' 'repos/IamZhenHong_ip/ip_bare' on path . : -Cloning into bare repository 'repos/IamZhenHong_ip/ip_bare'... -fatal: could not read Username for 'https://github.com': No such device or address - - at reposense.system.CommandRunnerProcess.waitForProcess(CommandRunnerProcess.java:46) - at reposense.report.RepoCloner.waitForCloneProcess(RepoCloner.java:323) - at reposense.report.RepoCloner.getClonedRepoLocation(RepoCloner.java:123) - at reposense.report.ReportGenerator.cloneRepo(ReportGenerator.java:263) - at reposense.report.ReportGenerator.lambda$cloneAndAnalyzeRepos$0(ReportGenerator.java:208) - at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1700) - at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) - at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) - at java.base/java.lang.Thread.run(Thread.java:829) - -Jan 30, 2024 2:09:46 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/timothysashimi/ip.git... -Jan 30, 2024 2:09:46 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/mahadhir247/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/mahadhir247/ip.git (master)... -Jan 30, 2024 2:09:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/shayaansultan/ip.git (master)... -Jan 30, 2024 2:09:46 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/shayaansultan/ip.git (master) completed! -Jan 30, 2024 2:09:46 AM reposense.report.ReportGenerator analyzeRepos -INFO: [277/428] Analyzing https://github.com/lihaoquan/ip.git (master)... -Jan 30, 2024 2:09:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/timothysashimi/ip.git to complete... -Jan 30, 2024 2:09:46 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/lihaoquan/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/lihaoquan/ip.git (master)... -Jan 30, 2024 2:09:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:51 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/nigel27022001/ip.git completed! +Jan 30, 2024 6:32:51 AM reposense.report.ReportGenerator analyzeRepos +INFO: [274/428] Analyzing https://github.com/nigel27022001/ip.git (master)... +Jan 30, 2024 6:32:51 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/lihaoquan/ip.git... +Jan 30, 2024 6:32:51 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/lihaoquan/ip.git to complete... +Jan 30, 2024 6:32:51 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/nigel27022001/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/nigel27022001/ip.git (master)... +Jan 30, 2024 6:32:51 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/shayaansultan/ip.git completed! +Jan 30, 2024 6:32:51 AM reposense.report.ReportGenerator analyzeRepos +INFO: [275/428] Analyzing https://github.com/shayaansultan/ip.git (master)... +Jan 30, 2024 6:32:51 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/PallonCX/ip.git... +Jan 30, 2024 6:32:51 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/PallonCX/ip.git to complete... +Jan 30, 2024 6:32:51 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/shayaansultan/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/shayaansultan/ip.git (master)... +Jan 30, 2024 6:32:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/nigel27022001/ip.git (master)... -Jan 30, 2024 2:09:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/nigel27022001/ip.git (master)... -Jan 30, 2024 2:09:46 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:51 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/nigel27022001/ip.git (master) completed! -Jan 30, 2024 2:09:46 AM reposense.report.ReportGenerator analyzeRepos -INFO: [278/428] Analyzing https://github.com/GiselleTan/ip.git (master)... -Jan 30, 2024 2:09:46 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/GiselleTan/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/GiselleTan/ip.git (master)... -Jan 30, 2024 2:09:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/delishad21/ip.git completed! -Jan 30, 2024 2:09:46 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Xilef121/ip.git... -Jan 30, 2024 2:09:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/shayaansultan/ip.git (master)... +Jan 30, 2024 6:32:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/shayaansultan/ip.git (master)... +Jan 30, 2024 6:32:51 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/shayaansultan/ip.git (master) completed! +Jan 30, 2024 6:32:51 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/mahadhir247/ip.git completed! +Jan 30, 2024 6:32:51 AM reposense.report.ReportGenerator analyzeRepos +INFO: [276/428] Analyzing https://github.com/mahadhir247/ip.git (master)... +Jan 30, 2024 6:32:51 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/yadunut/ip.git... +Jan 30, 2024 6:32:51 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/yadunut/ip.git to complete... +Jan 30, 2024 6:32:51 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/mahadhir247/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/mahadhir247/ip.git (master)... +Jan 30, 2024 6:32:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/mahadhir247/ip.git (master)... -Jan 30, 2024 2:09:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Xilef121/ip.git to complete... -Jan 30, 2024 2:09:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/shamesjen/ip.git completed! -Jan 30, 2024 2:09:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/GiselleTan/ip.git (master)... -Jan 30, 2024 2:09:46 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/SamuelZero1/ip.git... -Jan 30, 2024 2:09:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/mahadhir247/ip.git (master)... -Jan 30, 2024 2:09:46 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:51 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/mahadhir247/ip.git (master) completed! -Jan 30, 2024 2:09:46 AM reposense.report.ReportGenerator analyzeRepos -INFO: [279/428] Analyzing https://github.com/PallonCX/ip.git (master)... -Jan 30, 2024 2:09:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Ma-Yirui/ip.git completed! -Jan 30, 2024 2:09:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:51 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/GiselleTan/ip.git completed! +Jan 30, 2024 6:32:51 AM reposense.report.ReportGenerator analyzeRepos +INFO: [277/428] Analyzing https://github.com/GiselleTan/ip.git (master)... +Jan 30, 2024 6:32:51 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/yiwern5/ip.git... +Jan 30, 2024 6:32:51 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/yiwern5/ip.git to complete... +Jan 30, 2024 6:32:51 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/GiselleTan/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/GiselleTan/ip.git (master)... +Jan 30, 2024 6:32:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/GiselleTan/ip.git (master)... +Jan 30, 2024 6:32:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/GiselleTan/ip.git (master)... -Jan 30, 2024 2:09:46 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:51 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/GiselleTan/ip.git (master) completed! -Jan 30, 2024 2:09:46 AM reposense.report.ReportGenerator analyzeRepos -INFO: [280/428] Analyzing https://github.com/yadunut/ip.git (master)... -Jan 30, 2024 2:09:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/SamuelZero1/ip.git to complete... -Jan 30, 2024 2:09:46 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/swtan346/ip.git... -Jan 30, 2024 2:09:46 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:51 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/PallonCX/ip.git completed! +Jan 30, 2024 6:32:51 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/lihaoquan/ip.git completed! +Jan 30, 2024 6:32:51 AM reposense.report.ReportGenerator analyzeRepos +INFO: [278/428] Analyzing https://github.com/PallonCX/ip.git (master)... +Jan 30, 2024 6:32:51 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/saiutkarsh33/ip.git... +Jan 30, 2024 6:32:51 AM reposense.report.ReportGenerator analyzeRepos +INFO: [279/428] Analyzing https://github.com/lihaoquan/ip.git (master)... +Jan 30, 2024 6:32:51 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Dexter-Wong/ip.git... +Jan 30, 2024 6:32:51 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Dexter-Wong/ip.git to complete... +Jan 30, 2024 6:32:51 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/saiutkarsh33/ip.git to complete... +Jan 30, 2024 6:32:51 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/PallonCX/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/PallonCX/ip.git (master)... -Jan 30, 2024 2:09:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/timothysashimi/ip.git completed! -Jan 30, 2024 2:09:46 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:51 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/lihaoquan/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/lihaoquan/ip.git (master)... +Jan 30, 2024 6:32:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/PallonCX/ip.git (master)... +Jan 30, 2024 6:32:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/PallonCX/ip.git (master)... +Jan 30, 2024 6:32:52 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/PallonCX/ip.git (master) completed! +Jan 30, 2024 6:32:52 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/yadunut/ip.git completed! +Jan 30, 2024 6:32:52 AM reposense.report.ReportGenerator analyzeRepos +INFO: [280/428] Analyzing https://github.com/yadunut/ip.git (master)... +Jan 30, 2024 6:32:52 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/h4ow3i/ip.git... +Jan 30, 2024 6:32:52 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/h4ow3i/ip.git to complete... +Jan 30, 2024 6:32:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/lihaoquan/ip.git (master)... +Jan 30, 2024 6:32:52 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/yadunut/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/yadunut/ip.git (master)... -Jan 30, 2024 2:09:46 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/faaheem13/ip.git... -Jan 30, 2024 2:09:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/faaheem13/ip.git to complete... -Jan 30, 2024 2:09:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/swtan346/ip.git to complete... -Jan 30, 2024 2:09:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/lihaoquan/ip.git (master)... -Jan 30, 2024 2:09:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/yadunut/ip.git (master)... -Jan 30, 2024 2:09:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/lihaoquan/ip.git (master)... -Jan 30, 2024 2:09:46 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:52 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/lihaoquan/ip.git (master) completed! -Jan 30, 2024 2:09:46 AM reposense.report.ReportGenerator analyzeRepos -INFO: [281/428] Analyzing https://github.com/Dexter-Wong/ip.git (master)... -Jan 30, 2024 2:09:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/yadunut/ip.git (master)... +Jan 30, 2024 6:32:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/yadunut/ip.git (master)... -Jan 30, 2024 2:09:46 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:52 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/yadunut/ip.git (master) completed! -Jan 30, 2024 2:09:46 AM reposense.report.ReportGenerator analyzeRepos -INFO: [282/428] Analyzing https://github.com/yiwern5/ip.git (master)... -Jan 30, 2024 2:09:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/howen02/ip.git (master)... -Jan 30, 2024 2:09:46 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Dexter-Wong/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Dexter-Wong/ip.git (master)... -Jan 30, 2024 2:09:46 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:52 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/yiwern5/ip.git completed! +Jan 30, 2024 6:32:52 AM reposense.report.ReportGenerator analyzeRepos +INFO: [281/428] Analyzing https://github.com/yiwern5/ip.git (master)... +Jan 30, 2024 6:32:52 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Derekljh/ip.git... +Jan 30, 2024 6:32:52 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Derekljh/ip.git to complete... +Jan 30, 2024 6:32:52 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/yiwern5/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/yiwern5/ip.git (master)... -Jan 30, 2024 2:09:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/howen02/ip.git (master)... -Jan 30, 2024 2:09:46 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/howen02/ip.git (master) completed! -Jan 30, 2024 2:09:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Xilef121/ip.git completed! -Jan 30, 2024 2:09:46 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 6:32:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/yiwern5/ip.git (master)... +Jan 30, 2024 6:32:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/yiwern5/ip.git (master)... +Jan 30, 2024 6:32:52 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/yiwern5/ip.git (master) completed! +Jan 30, 2024 6:32:52 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Dexter-Wong/ip.git completed! +Jan 30, 2024 6:32:52 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Jayne1010/ip.git... +Jan 30, 2024 6:32:52 AM reposense.report.ReportGenerator analyzeRepos +INFO: [282/428] Analyzing https://github.com/Dexter-Wong/ip.git (master)... +Jan 30, 2024 6:32:52 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Jayne1010/ip.git to complete... +Jan 30, 2024 6:32:52 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Dexter-Wong/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Dexter-Wong/ip.git (master)... +Jan 30, 2024 6:32:52 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/saiutkarsh33/ip.git completed! +Jan 30, 2024 6:32:52 AM reposense.report.ReportGenerator analyzeRepos INFO: [283/428] Analyzing https://github.com/saiutkarsh33/ip.git (master)... -Jan 30, 2024 2:09:46 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ChenXy128/ip.git... -Jan 30, 2024 2:09:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ChenXy128/ip.git to complete... -Jan 30, 2024 2:09:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/PallonCX/ip.git (master)... -Jan 30, 2024 2:09:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/PallonCX/ip.git (master)... -Jan 30, 2024 2:09:46 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/PallonCX/ip.git (master) completed! -Jan 30, 2024 2:09:46 AM reposense.report.ReportGenerator analyzeRepos -INFO: [284/428] Analyzing https://github.com/Derekljh/ip.git (master)... -Jan 30, 2024 2:09:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/SamuelZero1/ip.git completed! -Jan 30, 2024 2:09:46 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Arixeyeion/ip.git... -Jan 30, 2024 2:09:46 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:52 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/officialchengyud/ip.git... +Jan 30, 2024 6:32:52 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/officialchengyud/ip.git to complete... +Jan 30, 2024 6:32:52 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/saiutkarsh33/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/saiutkarsh33/ip.git (master)... -Jan 30, 2024 2:09:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/swtan346/ip.git completed! -Jan 30, 2024 2:09:46 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Derekljh/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Derekljh/ip.git (master)... -Jan 30, 2024 2:09:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Arixeyeion/ip.git to complete... -Jan 30, 2024 2:09:46 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Darylgolden/ip.git... -Jan 30, 2024 2:09:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Darylgolden/ip.git to complete... -Jan 30, 2024 2:09:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/faaheem13/ip.git completed! -Jan 30, 2024 2:09:47 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/tankh99/ip.git... -Jan 30, 2024 2:09:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/tankh99/ip.git to complete... -Jan 30, 2024 2:09:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Dexter-Wong/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:52 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/h4ow3i/ip.git completed! +Jan 30, 2024 6:32:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Dexter-Wong/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:52 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/chenyixin0/ip.git... +Jan 30, 2024 6:32:52 AM reposense.report.ReportGenerator analyzeRepos +INFO: [284/428] Analyzing https://github.com/h4ow3i/ip.git (master)... +Jan 30, 2024 6:32:52 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Dexter-Wong/ip.git (master) completed! -Jan 30, 2024 2:09:47 AM reposense.report.ReportGenerator analyzeRepos -INFO: [285/428] Analyzing https://github.com/officialchengyud/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/officialchengyud/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/officialchengyud/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:52 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/chenyixin0/ip.git to complete... +Jan 30, 2024 6:32:52 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/h4ow3i/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/h4ow3i/ip.git (master)... +Jan 30, 2024 6:32:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/saiutkarsh33/ip.git (master)... +Jan 30, 2024 6:32:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/saiutkarsh33/ip.git (master)... +Jan 30, 2024 6:32:52 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/saiutkarsh33/ip.git (master) completed! +Jan 30, 2024 6:32:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/h4ow3i/ip.git (master)... +Jan 30, 2024 6:32:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/h4ow3i/ip.git (master)... +Jan 30, 2024 6:32:52 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/h4ow3i/ip.git (master) completed! +Jan 30, 2024 6:32:53 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Derekljh/ip.git completed! +Jan 30, 2024 6:32:53 AM reposense.report.ReportGenerator analyzeRepos +INFO: [285/428] Analyzing https://github.com/Derekljh/ip.git (master)... +Jan 30, 2024 6:32:53 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/shavonneg/ip.git... +Jan 30, 2024 6:32:53 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/shavonneg/ip.git to complete... +Jan 30, 2024 6:32:53 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Derekljh/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Derekljh/ip.git (master)... +Jan 30, 2024 6:32:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Derekljh/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Derekljh/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:53 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Derekljh/ip.git (master) completed! -Jan 30, 2024 2:09:47 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 6:32:53 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Jayne1010/ip.git completed! +Jan 30, 2024 6:32:53 AM reposense.report.ReportGenerator analyzeRepos INFO: [286/428] Analyzing https://github.com/Jayne1010/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ChenXy128/ip.git completed! -Jan 30, 2024 2:09:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/saiutkarsh33/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Tsenrae/ip.git... -Jan 30, 2024 2:09:47 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:53 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/caitlyntang/ip.git... +Jan 30, 2024 6:32:53 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/caitlyntang/ip.git to complete... +Jan 30, 2024 6:32:53 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Jayne1010/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Jayne1010/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Tsenrae/ip.git to complete... -Jan 30, 2024 2:09:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/saiutkarsh33/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/saiutkarsh33/ip.git (master) completed! -Jan 30, 2024 2:09:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Arixeyeion/ip.git completed! -Jan 30, 2024 2:09:47 AM reposense.report.ReportGenerator analyzeRepos -INFO: [287/428] Analyzing https://github.com/h4ow3i/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/starsia/ip.git... -Jan 30, 2024 2:09:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/starsia/ip.git to complete... -Jan 30, 2024 2:09:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/officialchengyud/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/h4ow3i/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/h4ow3i/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Jayne1010/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/officialchengyud/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/officialchengyud/ip.git (master) completed! -Jan 30, 2024 2:09:47 AM reposense.report.ReportGenerator analyzeRepos -INFO: [288/428] Analyzing https://github.com/caitlyntang/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tankh99/ip.git completed! -Jan 30, 2024 2:09:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Jayne1010/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Jayne1010/ip.git (master) completed! -Jan 30, 2024 2:09:47 AM reposense.report.ReportGenerator analyzeRepos -INFO: [289/428] Analyzing https://github.com/chenyixin0/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/hjungwoo01/ip.git... -Jan 30, 2024 2:09:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/hjungwoo01/ip.git to complete... -Jan 30, 2024 2:09:47 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/caitlyntang/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/caitlyntang/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:53 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/officialchengyud/ip.git completed! +Jan 30, 2024 6:32:53 AM reposense.report.ReportGenerator analyzeRepos +INFO: [287/428] Analyzing https://github.com/officialchengyud/ip.git (master)... +Jan 30, 2024 6:32:53 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/getsquared/ip.git... +Jan 30, 2024 6:32:53 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/getsquared/ip.git to complete... +Jan 30, 2024 6:32:53 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/officialchengyud/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/officialchengyud/ip.git (master)... +Jan 30, 2024 6:32:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Jayne1010/ip.git (master)... +Jan 30, 2024 6:32:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Jayne1010/ip.git (master)... +Jan 30, 2024 6:32:53 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Jayne1010/ip.git (master) completed! +Jan 30, 2024 6:32:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/officialchengyud/ip.git (master)... +Jan 30, 2024 6:32:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/officialchengyud/ip.git (master)... +Jan 30, 2024 6:32:53 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/officialchengyud/ip.git (master) completed! +Jan 30, 2024 6:32:53 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/chenyixin0/ip.git completed! +Jan 30, 2024 6:32:53 AM reposense.report.ReportGenerator analyzeRepos +INFO: [288/428] Analyzing https://github.com/chenyixin0/ip.git (master)... +Jan 30, 2024 6:32:53 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ashleyy2444/ip.git... +Jan 30, 2024 6:32:53 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ashleyy2444/ip.git to complete... +Jan 30, 2024 6:32:53 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/chenyixin0/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/chenyixin0/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/h4ow3i/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/yiwern5/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/h4ow3i/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/h4ow3i/ip.git (master) completed! -Jan 30, 2024 2:09:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Tsenrae/ip.git completed! -Jan 30, 2024 2:09:47 AM reposense.report.ReportGenerator analyzeRepos -INFO: [290/428] Analyzing https://github.com/getsquared/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/chenyixin0/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/caitlyntang/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/yiwern5/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/yiwern5/ip.git (master) completed! -Jan 30, 2024 2:09:47 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/YuSoonZ/ip.git... -Jan 30, 2024 2:09:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/chenyixin0/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.report.ReportGenerator analyzeRepos -INFO: [291/428] Analyzing https://github.com/shavonneg/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:53 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/chenyixin0/ip.git (master) completed! -Jan 30, 2024 2:09:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/YuSoonZ/ip.git to complete... -Jan 30, 2024 2:09:47 AM reposense.report.ReportGenerator analyzeRepos -INFO: [292/428] Analyzing https://github.com/ashleyy2444/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:53 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/shavonneg/ip.git completed! +Jan 30, 2024 6:32:53 AM reposense.report.ReportGenerator analyzeRepos +INFO: [289/428] Analyzing https://github.com/shavonneg/ip.git (master)... +Jan 30, 2024 6:32:53 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/zhekaiii/ip.git... +Jan 30, 2024 6:32:53 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/zhekaiii/ip.git to complete... +Jan 30, 2024 6:32:53 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/shavonneg/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/shavonneg/ip.git (master)... +Jan 30, 2024 6:32:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/shavonneg/ip.git (master)... +Jan 30, 2024 6:32:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/shavonneg/ip.git (master)... +Jan 30, 2024 6:32:53 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/shavonneg/ip.git (master) completed! +Jan 30, 2024 6:32:54 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/caitlyntang/ip.git completed! +Jan 30, 2024 6:32:54 AM reposense.report.ReportGenerator analyzeRepos +INFO: [290/428] Analyzing https://github.com/caitlyntang/ip.git (master)... +Jan 30, 2024 6:32:54 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/johnyoozhengxian/ip.git... +Jan 30, 2024 6:32:54 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/johnyoozhengxian/ip.git to complete... +Jan 30, 2024 6:32:54 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/caitlyntang/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/caitlyntang/ip.git (master)... +Jan 30, 2024 6:32:54 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/getsquared/ip.git completed! +Jan 30, 2024 6:32:54 AM reposense.report.ReportGenerator analyzeRepos +INFO: [291/428] Analyzing https://github.com/getsquared/ip.git (master)... +Jan 30, 2024 6:32:54 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/meenulekha/ip.git... +Jan 30, 2024 6:32:54 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/meenulekha/ip.git to complete... +Jan 30, 2024 6:32:54 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/getsquared/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/getsquared/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/caitlyntang/ip.git (master)... +Jan 30, 2024 6:32:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/caitlyntang/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:54 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/caitlyntang/ip.git (master) completed! -Jan 30, 2024 2:09:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/starsia/ip.git completed! -Jan 30, 2024 2:09:47 AM reposense.report.ReportGenerator analyzeRepos -INFO: [293/428] Analyzing https://github.com/zhekaiii/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Darkarche3/ip.git... -Jan 30, 2024 2:09:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Darkarche3/ip.git to complete... -Jan 30, 2024 2:09:47 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/shavonneg/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/shavonneg/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ashleyy2444/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ashleyy2444/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/zhekaiii/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/zhekaiii/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/hjungwoo01/ip.git completed! -Jan 30, 2024 2:09:47 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Vision-2000/ip.git... -Jan 30, 2024 2:09:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Vision-2000/ip.git to complete... -Jan 30, 2024 2:09:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:54 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ashleyy2444/ip.git completed! +Jan 30, 2024 6:32:54 AM reposense.report.ReportGenerator analyzeRepos +INFO: [292/428] Analyzing https://github.com/ashleyy2444/ip.git (master)... +Jan 30, 2024 6:32:54 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Li-Zizhen/ip.git... +Jan 30, 2024 6:32:54 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Li-Zizhen/ip.git to complete... +Jan 30, 2024 6:32:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/getsquared/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/shavonneg/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/getsquared/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ashleyy2444/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:54 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ashleyy2444/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ashleyy2444/ip.git (master)... +Jan 30, 2024 6:32:54 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/getsquared/ip.git (master) completed! -Jan 30, 2024 2:09:47 AM reposense.report.ReportGenerator analyzeRepos -INFO: [294/428] Analyzing https://github.com/johnyoozhengxian/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ashleyy2444/ip.git (master)... +Jan 30, 2024 6:32:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ashleyy2444/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:54 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ashleyy2444/ip.git (master) completed! -Jan 30, 2024 2:09:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/shavonneg/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/shavonneg/ip.git (master) completed! -Jan 30, 2024 2:09:47 AM reposense.report.ReportGenerator analyzeRepos -INFO: [295/428] Analyzing https://github.com/meenulekha/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.report.ReportGenerator analyzeRepos -INFO: [296/428] Analyzing https://github.com/Li-Zizhen/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/johnyoozhengxian/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/johnyoozhengxian/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:54 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/zhekaiii/ip.git completed! +Jan 30, 2024 6:32:54 AM reposense.report.ReportGenerator analyzeRepos +INFO: [293/428] Analyzing https://github.com/zhekaiii/ip.git (master)... +Jan 30, 2024 6:32:54 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/SimHanKiong/ip.git... +Jan 30, 2024 6:32:54 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/SimHanKiong/ip.git to complete... +Jan 30, 2024 6:32:54 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/zhekaiii/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/zhekaiii/ip.git (master)... +Jan 30, 2024 6:32:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/zhekaiii/ip.git (master)... +Jan 30, 2024 6:32:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/zhekaiii/ip.git (master)... +Jan 30, 2024 6:32:54 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/zhekaiii/ip.git (master) completed! +Jan 30, 2024 6:32:54 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/meenulekha/ip.git completed! +Jan 30, 2024 6:32:54 AM reposense.report.ReportGenerator analyzeRepos +INFO: [294/428] Analyzing https://github.com/meenulekha/ip.git (master)... +Jan 30, 2024 6:32:54 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/JuliaPoo/ip.git... +Jan 30, 2024 6:32:54 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/JuliaPoo/ip.git to complete... +Jan 30, 2024 6:32:54 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/johnyoozhengxian/ip.git completed! +Jan 30, 2024 6:32:54 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/meenulekha/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/meenulekha/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:54 AM reposense.report.ReportGenerator analyzeRepos +INFO: [295/428] Analyzing https://github.com/johnyoozhengxian/ip.git (master)... +Jan 30, 2024 6:32:54 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/vannykin/ip.git... +Jan 30, 2024 6:32:54 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/vannykin/ip.git to complete... +Jan 30, 2024 6:32:55 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/johnyoozhengxian/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/johnyoozhengxian/ip.git (master)... +Jan 30, 2024 6:32:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/meenulekha/ip.git (master)... +Jan 30, 2024 6:32:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/meenulekha/ip.git (master)... +Jan 30, 2024 6:32:55 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/meenulekha/ip.git (master) completed! +Jan 30, 2024 6:32:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/johnyoozhengxian/ip.git (master)... +Jan 30, 2024 6:32:55 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Li-Zizhen/ip.git completed! +Jan 30, 2024 6:32:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/johnyoozhengxian/ip.git (master)... +Jan 30, 2024 6:32:55 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/johnyoozhengxian/ip.git (master) completed! +Jan 30, 2024 6:32:55 AM reposense.report.ReportGenerator analyzeRepos +INFO: [296/428] Analyzing https://github.com/Li-Zizhen/ip.git (master)... +Jan 30, 2024 6:32:55 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/teojunda/ip.git... +Jan 30, 2024 6:32:55 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/teojunda/ip.git to complete... +Jan 30, 2024 6:32:55 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Li-Zizhen/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Li-Zizhen/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/YuSoonZ/ip.git completed! -Jan 30, 2024 2:09:47 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/chiageng/ip.git... -Jan 30, 2024 2:09:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/chiageng/ip.git to complete... -Jan 30, 2024 2:09:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/zhekaiii/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/zhekaiii/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Darkarche3/ip.git completed! -Jan 30, 2024 2:09:47 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/zhekaiii/ip.git (master) completed! -Jan 30, 2024 2:09:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Li-Zizhen/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.report.ReportGenerator analyzeRepos -INFO: [297/428] Analyzing https://github.com/SimHanKiong/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/logical-1985516/ip.git... -Jan 30, 2024 2:09:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Vision-2000/ip.git completed! -Jan 30, 2024 2:09:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Li-Zizhen/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:55 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Li-Zizhen/ip.git (master) completed! -Jan 30, 2024 2:09:47 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 6:32:55 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/SimHanKiong/ip.git completed! +Jan 30, 2024 6:32:55 AM reposense.report.ReportGenerator analyzeRepos +INFO: [297/428] Analyzing https://github.com/SimHanKiong/ip.git (master)... +Jan 30, 2024 6:32:55 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Ko-Khan/ip.git... +Jan 30, 2024 6:32:55 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Ko-Khan/ip.git to complete... +Jan 30, 2024 6:32:55 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/SimHanKiong/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/SimHanKiong/ip.git (master)... +Jan 30, 2024 6:32:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/SimHanKiong/ip.git (master)... +Jan 30, 2024 6:32:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/SimHanKiong/ip.git (master)... +Jan 30, 2024 6:32:55 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/SimHanKiong/ip.git (master) completed! +Jan 30, 2024 6:32:55 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/JuliaPoo/ip.git completed! +Jan 30, 2024 6:32:55 AM reposense.report.ReportGenerator analyzeRepos INFO: [298/428] Analyzing https://github.com/JuliaPoo/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/johnyoozhengxian/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ananya21/ip.git... -Jan 30, 2024 2:09:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/logical-1985516/ip.git to complete... -Jan 30, 2024 2:09:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ananya21/ip.git to complete... -Jan 30, 2024 2:09:47 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:55 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jyztintan/ip.git... +Jan 30, 2024 6:32:55 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jyztintan/ip.git to complete... +Jan 30, 2024 6:32:55 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/JuliaPoo/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/JuliaPoo/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/SimHanKiong/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/SimHanKiong/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/johnyoozhengxian/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/johnyoozhengxian/ip.git (master) completed! -Jan 30, 2024 2:09:47 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 6:32:55 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/vannykin/ip.git completed! +Jan 30, 2024 6:32:55 AM reposense.report.ReportGenerator analyzeRepos INFO: [299/428] Analyzing https://github.com/vannykin/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/meenulekha/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:55 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jasperng-nus/ip.git... +Jan 30, 2024 6:32:55 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jasperng-nus/ip.git to complete... +Jan 30, 2024 6:32:55 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/vannykin/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/vannykin/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/meenulekha/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/meenulekha/ip.git (master) completed! -Jan 30, 2024 2:09:47 AM reposense.report.ReportGenerator analyzeRepos -INFO: [300/428] Analyzing https://github.com/teojunda/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/JuliaPoo/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/JuliaPoo/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:55 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/JuliaPoo/ip.git (master) completed! -Jan 30, 2024 2:09:47 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/vannykin/ip.git (master)... +Jan 30, 2024 6:32:55 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/teojunda/ip.git completed! +Jan 30, 2024 6:32:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/vannykin/ip.git (master)... +Jan 30, 2024 6:32:55 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/vannykin/ip.git (master) completed! +Jan 30, 2024 6:32:55 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/delishad21/ip.git... +Jan 30, 2024 6:32:55 AM reposense.report.ReportGenerator analyzeRepos +INFO: [300/428] Analyzing https://github.com/teojunda/ip.git (master)... +Jan 30, 2024 6:32:55 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/delishad21/ip.git to complete... +Jan 30, 2024 6:32:55 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/teojunda/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/teojunda/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 6:32:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/teojunda/ip.git (master)... +Jan 30, 2024 6:32:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/teojunda/ip.git (master)... +Jan 30, 2024 6:32:55 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/teojunda/ip.git (master) completed! +Jan 30, 2024 6:32:56 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Ko-Khan/ip.git completed! +Jan 30, 2024 6:32:56 AM reposense.report.ReportGenerator analyzeRepos INFO: [301/428] Analyzing https://github.com/Ko-Khan/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:56 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/IamZhenHong/ip.git... +Jan 30, 2024 6:32:56 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/IamZhenHong/ip.git to complete... +Jan 30, 2024 6:32:56 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Ko-Khan/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Ko-Khan/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/vannykin/ip.git (master)... -Jan 30, 2024 2:09:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/chiageng/ip.git completed! -Jan 30, 2024 2:09:47 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/purivirakarin/ip.git... -Jan 30, 2024 2:09:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/vannykin/ip.git (master)... -Jan 30, 2024 2:09:48 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/vannykin/ip.git (master) completed! -Jan 30, 2024 2:09:48 AM reposense.report.ReportGenerator analyzeRepos -INFO: [302/428] Analyzing https://github.com/jyztintan/ip.git (master)... -Jan 30, 2024 2:09:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/purivirakarin/ip.git to complete... -Jan 30, 2024 2:09:48 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jyztintan/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jyztintan/ip.git (master)... -Jan 30, 2024 2:09:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/logical-1985516/ip.git completed! -Jan 30, 2024 2:09:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ananya21/ip.git completed! -Jan 30, 2024 2:09:48 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/joenus/ip.git... -Jan 30, 2024 2:09:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/joenus/ip.git to complete... -Jan 30, 2024 2:09:48 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jessicawyz/ip.git... -Jan 30, 2024 2:09:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jessicawyz/ip.git to complete... -Jan 30, 2024 2:09:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Ko-Khan/ip.git (master)... -Jan 30, 2024 2:09:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Ko-Khan/ip.git (master)... -Jan 30, 2024 2:09:48 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:56 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Ko-Khan/ip.git (master) completed! -Jan 30, 2024 2:09:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/SimHanKiong/ip.git (master)... -Jan 30, 2024 2:09:48 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 6:32:56 AM reposense.report.RepoCloner waitForCloneProcess +WARNING: Exception met while trying to clone the repo "IamZhenHong/ip[master]", will skip this repo. +reposense.system.CommandRunnerProcessException: Error returned from command git clone --bare 'https://github.com/IamZhenHong/ip.git' 'repos/IamZhenHong_ip/ip_bare' on path . : +Cloning into bare repository 'repos/IamZhenHong_ip/ip_bare'... +fatal: could not read Username for 'https://github.com': No such device or address + + at reposense.system.CommandRunnerProcess.waitForProcess(CommandRunnerProcess.java:46) + at reposense.report.RepoCloner.waitForCloneProcess(RepoCloner.java:323) + at reposense.report.RepoCloner.getClonedRepoLocation(RepoCloner.java:123) + at reposense.report.ReportGenerator.cloneRepo(ReportGenerator.java:263) + at reposense.report.ReportGenerator.lambda$cloneAndAnalyzeRepos$0(ReportGenerator.java:208) + at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1700) + at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) + at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) + at java.base/java.lang.Thread.run(Thread.java:829) + +Jan 30, 2024 6:32:56 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/shamesjen/ip.git... +Jan 30, 2024 6:32:56 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/shamesjen/ip.git to complete... +Jan 30, 2024 6:32:56 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jyztintan/ip.git completed! +Jan 30, 2024 6:32:56 AM reposense.report.ReportGenerator analyzeRepos +INFO: [302/428] Analyzing https://github.com/jyztintan/ip.git (master)... +Jan 30, 2024 6:32:56 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Ma-Yirui/ip.git... +Jan 30, 2024 6:32:56 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Ma-Yirui/ip.git to complete... +Jan 30, 2024 6:32:56 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jyztintan/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jyztintan/ip.git (master)... +Jan 30, 2024 6:32:56 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jasperng-nus/ip.git completed! +Jan 30, 2024 6:32:56 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/timothysashimi/ip.git... +Jan 30, 2024 6:32:56 AM reposense.report.ReportGenerator analyzeRepos INFO: [303/428] Analyzing https://github.com/jasperng-nus/ip.git (master)... -Jan 30, 2024 2:09:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/teojunda/ip.git (master)... -Jan 30, 2024 2:09:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/SimHanKiong/ip.git (master)... -Jan 30, 2024 2:09:48 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/SimHanKiong/ip.git (master) completed! -Jan 30, 2024 2:09:48 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:56 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/timothysashimi/ip.git to complete... +Jan 30, 2024 6:32:56 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jasperng-nus/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jasperng-nus/ip.git (master)... -Jan 30, 2024 2:09:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Darylgolden/ip.git completed! -Jan 30, 2024 2:09:48 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 6:32:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jasperng-nus/ip.git (master)... +Jan 30, 2024 6:32:56 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/delishad21/ip.git completed! +Jan 30, 2024 6:32:56 AM reposense.report.ReportGenerator analyzeRepos INFO: [304/428] Analyzing https://github.com/delishad21/ip.git (master)... -Jan 30, 2024 2:09:48 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/casaarlai/ip.git... -Jan 30, 2024 2:09:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/casaarlai/ip.git to complete... -Jan 30, 2024 2:09:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/purivirakarin/ip.git completed! -Jan 30, 2024 2:09:48 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:56 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Xilef121/ip.git... +Jan 30, 2024 6:32:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jasperng-nus/ip.git (master)... +Jan 30, 2024 6:32:56 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jasperng-nus/ip.git (master) completed! +Jan 30, 2024 6:32:56 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Xilef121/ip.git to complete... +Jan 30, 2024 6:32:56 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/delishad21/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/delishad21/ip.git (master)... -Jan 30, 2024 2:09:48 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Ryo-Seah/ip.git... -Jan 30, 2024 2:09:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/teojunda/ip.git (master)... -Jan 30, 2024 2:09:48 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/teojunda/ip.git (master) completed! -Jan 30, 2024 2:09:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Ryo-Seah/ip.git to complete... -Jan 30, 2024 2:09:48 AM reposense.report.ReportGenerator analyzeRepos -INFO: [305/428] Analyzing https://github.com/shamesjen/ip.git (master)... -Jan 30, 2024 2:09:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/jyztintan/ip.git (master)... -Jan 30, 2024 2:09:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/joenus/ip.git completed! -Jan 30, 2024 2:09:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jessicawyz/ip.git completed! -Jan 30, 2024 2:09:48 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/shamesjen/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:48 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jeremiahlzz/ip.git... -Jan 30, 2024 2:09:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/shamesjen/ip.git (master)... -Jan 30, 2024 2:09:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/jyztintan/ip.git (master)... -Jan 30, 2024 2:09:48 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:56 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/jyztintan/ip.git (master) completed! -Jan 30, 2024 2:09:48 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/macareonie/ip.git... -Jan 30, 2024 2:09:48 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 6:32:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/delishad21/ip.git (master)... +Jan 30, 2024 6:32:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/delishad21/ip.git (master)... +Jan 30, 2024 6:32:56 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/delishad21/ip.git (master) completed! +Jan 30, 2024 6:32:57 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/shamesjen/ip.git completed! +Jan 30, 2024 6:32:57 AM reposense.report.ReportGenerator analyzeRepos +INFO: [305/428] Analyzing https://github.com/shamesjen/ip.git (master)... +Jan 30, 2024 6:32:57 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/SamuelZero1/ip.git... +Jan 30, 2024 6:32:57 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/SamuelZero1/ip.git to complete... +Jan 30, 2024 6:32:57 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/shamesjen/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/shamesjen/ip.git (master)... +Jan 30, 2024 6:32:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/shamesjen/ip.git (master)... +Jan 30, 2024 6:32:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/shamesjen/ip.git (master)... +Jan 30, 2024 6:32:57 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/shamesjen/ip.git (master) completed! +Jan 30, 2024 6:32:57 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Ma-Yirui/ip.git completed! +Jan 30, 2024 6:32:57 AM reposense.report.ReportGenerator analyzeRepos INFO: [306/428] Analyzing https://github.com/Ma-Yirui/ip.git (master)... -Jan 30, 2024 2:09:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jeremiahlzz/ip.git to complete... -Jan 30, 2024 2:09:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jasperng-nus/ip.git (master)... -Jan 30, 2024 2:09:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/macareonie/ip.git to complete... -Jan 30, 2024 2:09:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jasperng-nus/ip.git (master)... -Jan 30, 2024 2:09:48 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jasperng-nus/ip.git (master) completed! -Jan 30, 2024 2:09:48 AM reposense.report.ReportGenerator analyzeRepos -INFO: [307/428] Analyzing https://github.com/timothysashimi/ip.git (master)... -Jan 30, 2024 2:09:48 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:57 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/swtan346/ip.git... +Jan 30, 2024 6:32:57 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/swtan346/ip.git to complete... +Jan 30, 2024 6:32:57 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Ma-Yirui/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Ma-Yirui/ip.git (master)... -Jan 30, 2024 2:09:48 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:57 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/timothysashimi/ip.git completed! +Jan 30, 2024 6:32:57 AM reposense.report.ReportGenerator analyzeRepos +INFO: [307/428] Analyzing https://github.com/timothysashimi/ip.git (master)... +Jan 30, 2024 6:32:57 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/faaheem13/ip.git... +Jan 30, 2024 6:32:57 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/faaheem13/ip.git to complete... +Jan 30, 2024 6:32:57 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/timothysashimi/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/timothysashimi/ip.git (master)... -Jan 30, 2024 2:09:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/shamesjen/ip.git (master)... -Jan 30, 2024 2:09:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/casaarlai/ip.git completed! -Jan 30, 2024 2:09:48 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/chin-herng/ip.git... -Jan 30, 2024 2:09:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/chin-herng/ip.git to complete... -Jan 30, 2024 2:09:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/shamesjen/ip.git (master)... -Jan 30, 2024 2:09:48 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/shamesjen/ip.git (master) completed! -Jan 30, 2024 2:09:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Ryo-Seah/ip.git completed! -Jan 30, 2024 2:09:48 AM reposense.report.ReportGenerator analyzeRepos -INFO: [308/428] Analyzing https://github.com/Xilef121/ip.git (master)... -Jan 30, 2024 2:09:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Ma-Yirui/ip.git (master)... -Jan 30, 2024 2:09:48 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/gowthaman-01/ip.git... -Jan 30, 2024 2:09:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/gowthaman-01/ip.git to complete... -Jan 30, 2024 2:09:48 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Xilef121/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Xilef121/ip.git (master)... -Jan 30, 2024 2:09:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Ma-Yirui/ip.git (master)... -Jan 30, 2024 2:09:48 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:57 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Ma-Yirui/ip.git (master) completed! -Jan 30, 2024 2:09:48 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 6:32:57 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Xilef121/ip.git completed! +Jan 30, 2024 6:32:57 AM reposense.report.ReportGenerator analyzeRepos +INFO: [308/428] Analyzing https://github.com/Xilef121/ip.git (master)... +Jan 30, 2024 6:32:57 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ChenXy128/ip.git... +Jan 30, 2024 6:32:57 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ChenXy128/ip.git to complete... +Jan 30, 2024 6:32:57 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Xilef121/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Xilef121/ip.git (master)... +Jan 30, 2024 6:32:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/timothysashimi/ip.git (master)... +Jan 30, 2024 6:32:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/timothysashimi/ip.git (master)... +Jan 30, 2024 6:32:57 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/timothysashimi/ip.git (master) completed! +Jan 30, 2024 6:32:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Xilef121/ip.git (master)... +Jan 30, 2024 6:32:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Xilef121/ip.git (master)... +Jan 30, 2024 6:32:57 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Xilef121/ip.git (master) completed! +Jan 30, 2024 6:32:57 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/SamuelZero1/ip.git completed! +Jan 30, 2024 6:32:57 AM reposense.report.ReportGenerator analyzeRepos INFO: [309/428] Analyzing https://github.com/SamuelZero1/ip.git (master)... -Jan 30, 2024 2:09:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jeremiahlzz/ip.git completed! -Jan 30, 2024 2:09:48 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Joseph31416/ip.git... -Jan 30, 2024 2:09:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/macareonie/ip.git completed! -Jan 30, 2024 2:09:48 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:57 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Arixeyeion/ip.git... +Jan 30, 2024 6:32:57 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Arixeyeion/ip.git to complete... +Jan 30, 2024 6:32:57 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/SamuelZero1/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/SamuelZero1/ip.git (master)... -Jan 30, 2024 2:09:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Joseph31416/ip.git to complete... -Jan 30, 2024 2:09:48 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/radeon2525/ip.git... -Jan 30, 2024 2:09:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/radeon2525/ip.git to complete... -Jan 30, 2024 2:09:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/delishad21/ip.git (master)... -Jan 30, 2024 2:09:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/delishad21/ip.git (master)... -Jan 30, 2024 2:09:48 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/delishad21/ip.git (master) completed! -Jan 30, 2024 2:09:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/SamuelZero1/ip.git (master)... -Jan 30, 2024 2:09:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Xilef121/ip.git (master)... -Jan 30, 2024 2:09:48 AM reposense.report.ReportGenerator analyzeRepos -INFO: [310/428] Analyzing https://github.com/swtan346/ip.git (master)... -Jan 30, 2024 2:09:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/timothysashimi/ip.git (master)... -Jan 30, 2024 2:09:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/SamuelZero1/ip.git (master)... -Jan 30, 2024 2:09:48 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:57 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/SamuelZero1/ip.git (master) completed! -Jan 30, 2024 2:09:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Xilef121/ip.git (master)... -Jan 30, 2024 2:09:48 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Xilef121/ip.git (master) completed! -Jan 30, 2024 2:09:48 AM reposense.report.ReportGenerator analyzeRepos -INFO: [311/428] Analyzing https://github.com/faaheem13/ip.git (master)... -Jan 30, 2024 2:09:48 AM reposense.report.ReportGenerator analyzeRepos -INFO: [312/428] Analyzing https://github.com/ChenXy128/ip.git (master)... -Jan 30, 2024 2:09:48 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/swtan346/ip.git completed! +Jan 30, 2024 6:32:58 AM reposense.report.ReportGenerator analyzeRepos +INFO: [310/428] Analyzing https://github.com/swtan346/ip.git (master)... +Jan 30, 2024 6:32:58 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Darylgolden/ip.git... +Jan 30, 2024 6:32:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Darylgolden/ip.git to complete... +Jan 30, 2024 6:32:58 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/swtan346/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/swtan346/ip.git (master)... -Jan 30, 2024 2:09:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/timothysashimi/ip.git (master)... -Jan 30, 2024 2:09:48 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/timothysashimi/ip.git (master) completed! -Jan 30, 2024 2:09:48 AM reposense.report.ReportGenerator analyzeRepos -INFO: [313/428] Analyzing https://github.com/Arixeyeion/ip.git (master)... -Jan 30, 2024 2:09:48 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/faaheem13/ip.git completed! +Jan 30, 2024 6:32:58 AM reposense.report.ReportGenerator analyzeRepos +INFO: [311/428] Analyzing https://github.com/faaheem13/ip.git (master)... +Jan 30, 2024 6:32:58 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/tankh99/ip.git... +Jan 30, 2024 6:32:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/tankh99/ip.git to complete... +Jan 30, 2024 6:32:58 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/faaheem13/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/faaheem13/ip.git (master)... -Jan 30, 2024 2:09:48 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ChenXy128/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ChenXy128/ip.git (master)... -Jan 30, 2024 2:09:48 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Arixeyeion/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Arixeyeion/ip.git (master)... -Jan 30, 2024 2:09:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/chin-herng/ip.git completed! -Jan 30, 2024 2:09:48 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ejnan/ip.git... -Jan 30, 2024 2:09:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ejnan/ip.git to complete... -Jan 30, 2024 2:09:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/gowthaman-01/ip.git completed! -Jan 30, 2024 2:09:48 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jskimdev/ip.git... -Jan 30, 2024 2:09:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jskimdev/ip.git to complete... -Jan 30, 2024 2:09:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Joseph31416/ip.git completed! -Jan 30, 2024 2:09:48 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Chiarena/ip.git... -Jan 30, 2024 2:09:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/radeon2525/ip.git completed! -Jan 30, 2024 2:09:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/faaheem13/ip.git (master)... -Jan 30, 2024 2:09:48 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/chonghaoen/ip.git... -Jan 30, 2024 2:09:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Chiarena/ip.git to complete... -Jan 30, 2024 2:09:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/chonghaoen/ip.git to complete... -Jan 30, 2024 2:09:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/faaheem13/ip.git (master)... -Jan 30, 2024 2:09:48 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/faaheem13/ip.git (master) completed! -Jan 30, 2024 2:09:48 AM reposense.report.ReportGenerator analyzeRepos -INFO: [314/428] Analyzing https://github.com/tankh99/ip.git (master)... -Jan 30, 2024 2:09:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/swtan346/ip.git (master)... -Jan 30, 2024 2:09:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/faaheem13/ip.git (master)... +Jan 30, 2024 6:32:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/swtan346/ip.git (master)... -Jan 30, 2024 2:09:49 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:58 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/swtan346/ip.git (master) completed! -Jan 30, 2024 2:09:49 AM reposense.report.ReportGenerator analyzeRepos -INFO: [315/428] Analyzing https://github.com/Tsenrae/ip.git (master)... -Jan 30, 2024 2:09:49 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/tankh99/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/tankh99/ip.git (master)... -Jan 30, 2024 2:09:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/faaheem13/ip.git (master)... +Jan 30, 2024 6:32:58 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/faaheem13/ip.git (master) completed! +Jan 30, 2024 6:32:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ChenXy128/ip.git completed! +Jan 30, 2024 6:32:58 AM reposense.report.ReportGenerator analyzeRepos +INFO: [312/428] Analyzing https://github.com/ChenXy128/ip.git (master)... +Jan 30, 2024 6:32:58 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Tsenrae/ip.git... +Jan 30, 2024 6:32:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Tsenrae/ip.git to complete... +Jan 30, 2024 6:32:58 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ChenXy128/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ChenXy128/ip.git (master)... +Jan 30, 2024 6:32:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ChenXy128/ip.git (master)... -Jan 30, 2024 2:09:49 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Tsenrae/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Tsenrae/ip.git (master)... -Jan 30, 2024 2:09:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Arixeyeion/ip.git (master)... -Jan 30, 2024 2:09:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ChenXy128/ip.git (master)... -Jan 30, 2024 2:09:49 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:58 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ChenXy128/ip.git (master) completed! -Jan 30, 2024 2:09:49 AM reposense.report.ReportGenerator analyzeRepos -INFO: [316/428] Analyzing https://github.com/starsia/ip.git (master)... -Jan 30, 2024 2:09:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Arixeyeion/ip.git completed! +Jan 30, 2024 6:32:58 AM reposense.report.ReportGenerator analyzeRepos +INFO: [313/428] Analyzing https://github.com/Arixeyeion/ip.git (master)... +Jan 30, 2024 6:32:58 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/starsia/ip.git... +Jan 30, 2024 6:32:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/starsia/ip.git to complete... +Jan 30, 2024 6:32:58 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Arixeyeion/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Arixeyeion/ip.git (master)... +Jan 30, 2024 6:32:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Arixeyeion/ip.git (master)... +Jan 30, 2024 6:32:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Arixeyeion/ip.git (master)... -Jan 30, 2024 2:09:49 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:58 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Arixeyeion/ip.git (master) completed! -Jan 30, 2024 2:09:49 AM reposense.report.ReportGenerator analyzeRepos -INFO: [317/428] Analyzing https://github.com/hjungwoo01/ip.git (master)... -Jan 30, 2024 2:09:49 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/starsia/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/starsia/ip.git (master)... -Jan 30, 2024 2:09:49 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/hjungwoo01/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/hjungwoo01/ip.git (master)... -Jan 30, 2024 2:09:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ejnan/ip.git completed! -Jan 30, 2024 2:09:49 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/CJerrong/ip.git... -Jan 30, 2024 2:09:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Chiarena/ip.git completed! -Jan 30, 2024 2:09:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/CJerrong/ip.git to complete... -Jan 30, 2024 2:09:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jskimdev/ip.git completed! -Jan 30, 2024 2:09:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/chonghaoen/ip.git completed! -Jan 30, 2024 2:09:49 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/qinxutan/ip.git... -Jan 30, 2024 2:09:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/qinxutan/ip.git to complete... -Jan 30, 2024 2:09:49 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/billyhoce/ip.git... -Jan 30, 2024 2:09:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Tsenrae/ip.git (master)... -Jan 30, 2024 2:09:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/billyhoce/ip.git to complete... -Jan 30, 2024 2:09:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Darylgolden/ip.git completed! +Jan 30, 2024 6:32:58 AM reposense.report.ReportGenerator analyzeRepos +INFO: [314/428] Analyzing https://github.com/Darylgolden/ip.git (master)... +Jan 30, 2024 6:32:58 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/hjungwoo01/ip.git... +Jan 30, 2024 6:32:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/hjungwoo01/ip.git to complete... +Jan 30, 2024 6:32:58 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Darylgolden/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Darylgolden/ip.git (master)... +Jan 30, 2024 6:32:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tankh99/ip.git completed! +Jan 30, 2024 6:32:58 AM reposense.report.ReportGenerator analyzeRepos +INFO: [315/428] Analyzing https://github.com/tankh99/ip.git (master)... +Jan 30, 2024 6:32:58 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/YuSoonZ/ip.git... +Jan 30, 2024 6:32:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/YuSoonZ/ip.git to complete... +Jan 30, 2024 6:32:58 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/tankh99/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/tankh99/ip.git (master)... +Jan 30, 2024 6:32:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Darylgolden/ip.git (master)... +Jan 30, 2024 6:32:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Darylgolden/ip.git (master)... +Jan 30, 2024 6:32:58 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Darylgolden/ip.git (master) completed! +Jan 30, 2024 6:32:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Tsenrae/ip.git completed! +Jan 30, 2024 6:32:58 AM reposense.report.ReportGenerator analyzeRepos +INFO: [316/428] Analyzing https://github.com/Tsenrae/ip.git (master)... +Jan 30, 2024 6:32:58 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Darkarche3/ip.git... +Jan 30, 2024 6:32:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/tankh99/ip.git (master)... -Jan 30, 2024 2:09:49 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/4llysa/ip.git... -Jan 30, 2024 2:09:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/4llysa/ip.git to complete... -Jan 30, 2024 2:09:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Darkarche3/ip.git to complete... +Jan 30, 2024 6:32:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/tankh99/ip.git (master)... -Jan 30, 2024 2:09:49 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:58 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Tsenrae/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Tsenrae/ip.git (master)... +Jan 30, 2024 6:32:58 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/tankh99/ip.git (master) completed! -Jan 30, 2024 2:09:49 AM reposense.report.ReportGenerator analyzeRepos -INFO: [318/428] Analyzing https://github.com/YuSoonZ/ip.git (master)... -Jan 30, 2024 2:09:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:32:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Tsenrae/ip.git (master)... +Jan 30, 2024 6:32:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Tsenrae/ip.git (master)... -Jan 30, 2024 2:09:49 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:32:59 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Tsenrae/ip.git (master) completed! -Jan 30, 2024 2:09:49 AM reposense.report.ReportGenerator analyzeRepos -INFO: [319/428] Analyzing https://github.com/Darkarche3/ip.git (master)... -Jan 30, 2024 2:09:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:32:59 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/starsia/ip.git completed! +Jan 30, 2024 6:32:59 AM reposense.report.ReportGenerator analyzeRepos +INFO: [317/428] Analyzing https://github.com/starsia/ip.git (master)... +Jan 30, 2024 6:32:59 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Vision-2000/ip.git... +Jan 30, 2024 6:32:59 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Vision-2000/ip.git to complete... +Jan 30, 2024 6:32:59 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/starsia/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/starsia/ip.git (master)... +Jan 30, 2024 6:32:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/starsia/ip.git (master)... -Jan 30, 2024 2:09:49 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/starsia/ip.git (master)... +Jan 30, 2024 6:32:59 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/starsia/ip.git (master) completed! +Jan 30, 2024 6:32:59 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/YuSoonZ/ip.git completed! +Jan 30, 2024 6:32:59 AM reposense.report.ReportGenerator analyzeRepos +INFO: [318/428] Analyzing https://github.com/YuSoonZ/ip.git (master)... +Jan 30, 2024 6:32:59 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/chiageng/ip.git... +Jan 30, 2024 6:32:59 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/hjungwoo01/ip.git completed! +Jan 30, 2024 6:32:59 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/chiageng/ip.git to complete... +Jan 30, 2024 6:32:59 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/logical-1985516/ip.git... +Jan 30, 2024 6:32:59 AM reposense.report.ReportGenerator analyzeRepos +INFO: [319/428] Analyzing https://github.com/hjungwoo01/ip.git (master)... +Jan 30, 2024 6:32:59 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/logical-1985516/ip.git to complete... +Jan 30, 2024 6:32:59 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/YuSoonZ/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/YuSoonZ/ip.git (master)... -Jan 30, 2024 2:09:49 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:59 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/hjungwoo01/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:32:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/hjungwoo01/ip.git (master)... +Jan 30, 2024 6:32:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/YuSoonZ/ip.git (master)... +Jan 30, 2024 6:32:59 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Darkarche3/ip.git completed! +Jan 30, 2024 6:32:59 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ananya21/ip.git... +Jan 30, 2024 6:32:59 AM reposense.report.ReportGenerator analyzeRepos +INFO: [320/428] Analyzing https://github.com/Darkarche3/ip.git (master)... +Jan 30, 2024 6:32:59 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ananya21/ip.git to complete... +Jan 30, 2024 6:32:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/YuSoonZ/ip.git (master)... +Jan 30, 2024 6:32:59 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/YuSoonZ/ip.git (master) completed! +Jan 30, 2024 6:32:59 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Darkarche3/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:32:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Darkarche3/ip.git (master)... -Jan 30, 2024 2:09:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/starsia/ip.git (master)... -Jan 30, 2024 2:09:49 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/starsia/ip.git (master) completed! -Jan 30, 2024 2:09:49 AM reposense.report.ReportGenerator analyzeRepos -INFO: [320/428] Analyzing https://github.com/Vision-2000/ip.git (master)... -Jan 30, 2024 2:09:49 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:32:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Darkarche3/ip.git (master)... +Jan 30, 2024 6:32:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/hjungwoo01/ip.git (master)... +Jan 30, 2024 6:32:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Darkarche3/ip.git (master)... +Jan 30, 2024 6:32:59 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Darkarche3/ip.git (master) completed! +Jan 30, 2024 6:32:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/hjungwoo01/ip.git (master)... +Jan 30, 2024 6:32:59 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/hjungwoo01/ip.git (master) completed! +Jan 30, 2024 6:33:00 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Vision-2000/ip.git completed! +Jan 30, 2024 6:33:00 AM reposense.report.ReportGenerator analyzeRepos +INFO: [321/428] Analyzing https://github.com/Vision-2000/ip.git (master)... +Jan 30, 2024 6:33:00 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/purivirakarin/ip.git... +Jan 30, 2024 6:33:00 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/purivirakarin/ip.git to complete... +Jan 30, 2024 6:33:00 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Vision-2000/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:33:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Vision-2000/ip.git (master)... -Jan 30, 2024 2:09:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:33:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Vision-2000/ip.git (master)... -Jan 30, 2024 2:09:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/CJerrong/ip.git completed! -Jan 30, 2024 2:09:49 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/TopKec/ip.git... -Jan 30, 2024 2:09:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Darkarche3/ip.git (master)... -Jan 30, 2024 2:09:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/YuSoonZ/ip.git (master)... -Jan 30, 2024 2:09:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/TopKec/ip.git to complete... -Jan 30, 2024 2:09:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:33:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Vision-2000/ip.git (master)... -Jan 30, 2024 2:09:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/qinxutan/ip.git completed! -Jan 30, 2024 2:09:49 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:33:00 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Vision-2000/ip.git (master) completed! -Jan 30, 2024 2:09:49 AM reposense.report.ReportGenerator analyzeRepos -INFO: [321/428] Analyzing https://github.com/chiageng/ip.git (master)... -Jan 30, 2024 2:09:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Darkarche3/ip.git (master)... -Jan 30, 2024 2:09:49 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Darkarche3/ip.git (master) completed! -Jan 30, 2024 2:09:49 AM reposense.report.ReportGenerator analyzeRepos -INFO: [322/428] Analyzing https://github.com/ananya21/ip.git (master)... -Jan 30, 2024 2:09:49 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/MarcusGitty/ip.git... -Jan 30, 2024 2:09:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/YuSoonZ/ip.git (master)... -Jan 30, 2024 2:09:49 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/YuSoonZ/ip.git (master) completed! -Jan 30, 2024 2:09:49 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 6:33:00 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/chiageng/ip.git completed! +Jan 30, 2024 6:33:00 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/joenus/ip.git... +Jan 30, 2024 6:33:00 AM reposense.report.ReportGenerator analyzeRepos +INFO: [322/428] Analyzing https://github.com/chiageng/ip.git (master)... +Jan 30, 2024 6:33:00 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/joenus/ip.git to complete... +Jan 30, 2024 6:33:00 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/logical-1985516/ip.git completed! +Jan 30, 2024 6:33:00 AM reposense.report.ReportGenerator analyzeRepos INFO: [323/428] Analyzing https://github.com/logical-1985516/ip.git (master)... -Jan 30, 2024 2:09:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/MarcusGitty/ip.git to complete... -Jan 30, 2024 2:09:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/4llysa/ip.git completed! -Jan 30, 2024 2:09:49 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:33:00 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jessicawyz/ip.git... +Jan 30, 2024 6:33:00 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jessicawyz/ip.git to complete... +Jan 30, 2024 6:33:00 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/chiageng/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:33:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/chiageng/ip.git (master)... -Jan 30, 2024 2:09:49 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ananya21/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ananya21/ip.git (master)... -Jan 30, 2024 2:09:49 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/shawnnlimm/ip.git... -Jan 30, 2024 2:09:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/shawnnlimm/ip.git to complete... -Jan 30, 2024 2:09:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/billyhoce/ip.git completed! -Jan 30, 2024 2:09:49 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:33:00 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/logical-1985516/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:33:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/logical-1985516/ip.git (master)... -Jan 30, 2024 2:09:49 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/huekoh/ip.git... -Jan 30, 2024 2:09:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/huekoh/ip.git to complete... -Jan 30, 2024 2:09:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/hjungwoo01/ip.git (master)... -Jan 30, 2024 2:09:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:33:00 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ananya21/ip.git completed! +Jan 30, 2024 6:33:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/logical-1985516/ip.git (master)... +Jan 30, 2024 6:33:00 AM reposense.report.ReportGenerator analyzeRepos +INFO: [324/428] Analyzing https://github.com/ananya21/ip.git (master)... +Jan 30, 2024 6:33:00 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/casaarlai/ip.git... +Jan 30, 2024 6:33:00 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/casaarlai/ip.git to complete... +Jan 30, 2024 6:33:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/logical-1985516/ip.git (master)... +Jan 30, 2024 6:33:00 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/logical-1985516/ip.git (master) completed! +Jan 30, 2024 6:33:00 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ananya21/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:33:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ananya21/ip.git (master)... +Jan 30, 2024 6:33:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ananya21/ip.git (master)... -Jan 30, 2024 2:09:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/hjungwoo01/ip.git (master)... -Jan 30, 2024 2:09:49 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/hjungwoo01/ip.git (master) completed! -Jan 30, 2024 2:09:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:33:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ananya21/ip.git (master)... -Jan 30, 2024 2:09:49 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:33:00 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ananya21/ip.git (master) completed! -Jan 30, 2024 2:09:49 AM reposense.report.ReportGenerator analyzeRepos -INFO: [324/428] Analyzing https://github.com/Darylgolden/ip.git (master)... -Jan 30, 2024 2:09:49 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 6:33:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/chiageng/ip.git (master)... +Jan 30, 2024 6:33:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/chiageng/ip.git (master)... +Jan 30, 2024 6:33:00 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/chiageng/ip.git (master) completed! +Jan 30, 2024 6:33:00 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/purivirakarin/ip.git completed! +Jan 30, 2024 6:33:00 AM reposense.report.ReportGenerator analyzeRepos INFO: [325/428] Analyzing https://github.com/purivirakarin/ip.git (master)... -Jan 30, 2024 2:09:49 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Darylgolden/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Darylgolden/ip.git (master)... -Jan 30, 2024 2:09:49 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:33:00 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Ryo-Seah/ip.git... +Jan 30, 2024 6:33:00 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Ryo-Seah/ip.git to complete... +Jan 30, 2024 6:33:00 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/purivirakarin/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:33:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/purivirakarin/ip.git (master)... -Jan 30, 2024 2:09:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/logical-1985516/ip.git (master)... -Jan 30, 2024 2:09:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/TopKec/ip.git completed! -Jan 30, 2024 2:09:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/MarcusGitty/ip.git completed! -Jan 30, 2024 2:09:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/logical-1985516/ip.git (master)... -Jan 30, 2024 2:09:49 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/logical-1985516/ip.git (master) completed! -Jan 30, 2024 2:09:49 AM reposense.report.ReportGenerator analyzeRepos -INFO: [326/428] Analyzing https://github.com/joenus/ip.git (master)... -Jan 30, 2024 2:09:49 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/JonChong98/ip.git... -Jan 30, 2024 2:09:49 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/STELLA-LYE/ip.git... -Jan 30, 2024 2:09:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/STELLA-LYE/ip.git to complete... -Jan 30, 2024 2:09:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/huekoh/ip.git completed! -Jan 30, 2024 2:09:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/shawnnlimm/ip.git completed! -Jan 30, 2024 2:09:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:33:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/purivirakarin/ip.git (master)... -Jan 30, 2024 2:09:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/JonChong98/ip.git to complete... -Jan 30, 2024 2:09:49 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/nyankoclaws/ip.git... -Jan 30, 2024 2:09:49 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/meowwtama/ip.git... -Jan 30, 2024 2:09:49 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/joenus/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/joenus/ip.git (master)... -Jan 30, 2024 2:09:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/nyankoclaws/ip.git to complete... -Jan 30, 2024 2:09:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/meowwtama/ip.git to complete... -Jan 30, 2024 2:09:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:33:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/purivirakarin/ip.git (master)... -Jan 30, 2024 2:09:49 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:33:00 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/purivirakarin/ip.git (master) completed! -Jan 30, 2024 2:09:49 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 6:33:01 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/joenus/ip.git completed! +Jan 30, 2024 6:33:01 AM reposense.report.ReportGenerator analyzeRepos +INFO: [326/428] Analyzing https://github.com/joenus/ip.git (master)... +Jan 30, 2024 6:33:01 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jeremiahlzz/ip.git... +Jan 30, 2024 6:33:01 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jeremiahlzz/ip.git to complete... +Jan 30, 2024 6:33:01 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/joenus/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:33:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/joenus/ip.git (master)... +Jan 30, 2024 6:33:01 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jessicawyz/ip.git completed! +Jan 30, 2024 6:33:01 AM reposense.report.ReportGenerator analyzeRepos INFO: [327/428] Analyzing https://github.com/jessicawyz/ip.git (master)... -Jan 30, 2024 2:09:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Darylgolden/ip.git (master)... -Jan 30, 2024 2:09:49 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jessicawyz/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jessicawyz/ip.git (master)... -Jan 30, 2024 2:09:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/chiageng/ip.git (master)... -Jan 30, 2024 2:09:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:33:01 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/macareonie/ip.git... +Jan 30, 2024 6:33:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/joenus/ip.git (master)... -Jan 30, 2024 2:09:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Darylgolden/ip.git (master)... -Jan 30, 2024 2:09:49 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Darylgolden/ip.git (master) completed! -Jan 30, 2024 2:09:49 AM reposense.report.ReportGenerator analyzeRepos -INFO: [328/428] Analyzing https://github.com/casaarlai/ip.git (master)... -Jan 30, 2024 2:09:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:33:01 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/macareonie/ip.git to complete... +Jan 30, 2024 6:33:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/joenus/ip.git (master)... -Jan 30, 2024 2:09:49 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:33:01 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/joenus/ip.git (master) completed! -Jan 30, 2024 2:09:49 AM reposense.report.ReportGenerator analyzeRepos -INFO: [329/428] Analyzing https://github.com/Ryo-Seah/ip.git (master)... -Jan 30, 2024 2:09:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/chiageng/ip.git (master)... -Jan 30, 2024 2:09:50 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/chiageng/ip.git (master) completed! -Jan 30, 2024 2:09:50 AM reposense.report.ReportGenerator analyzeRepos -INFO: [330/428] Analyzing https://github.com/jeremiahlzz/ip.git (master)... -Jan 30, 2024 2:09:50 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:33:01 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jessicawyz/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:33:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jessicawyz/ip.git (master)... +Jan 30, 2024 6:33:01 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/casaarlai/ip.git completed! +Jan 30, 2024 6:33:01 AM reposense.report.ReportGenerator analyzeRepos +INFO: [328/428] Analyzing https://github.com/casaarlai/ip.git (master)... +Jan 30, 2024 6:33:01 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/chin-herng/ip.git... +Jan 30, 2024 6:33:01 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/chin-herng/ip.git to complete... +Jan 30, 2024 6:33:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jessicawyz/ip.git (master)... +Jan 30, 2024 6:33:01 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/casaarlai/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:33:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/casaarlai/ip.git (master)... -Jan 30, 2024 2:09:50 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:33:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jessicawyz/ip.git (master)... +Jan 30, 2024 6:33:01 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jessicawyz/ip.git (master) completed! +Jan 30, 2024 6:33:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/casaarlai/ip.git (master)... +Jan 30, 2024 6:33:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/casaarlai/ip.git (master)... +Jan 30, 2024 6:33:01 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/casaarlai/ip.git (master) completed! +Jan 30, 2024 6:33:01 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Ryo-Seah/ip.git completed! +Jan 30, 2024 6:33:01 AM reposense.report.ReportGenerator analyzeRepos +INFO: [329/428] Analyzing https://github.com/Ryo-Seah/ip.git (master)... +Jan 30, 2024 6:33:01 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/gowthaman-01/ip.git... +Jan 30, 2024 6:33:01 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/gowthaman-01/ip.git to complete... +Jan 30, 2024 6:33:01 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Ryo-Seah/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:33:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Ryo-Seah/ip.git (master)... -Jan 30, 2024 2:09:50 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:33:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Ryo-Seah/ip.git (master)... +Jan 30, 2024 6:33:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Ryo-Seah/ip.git (master)... +Jan 30, 2024 6:33:01 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Ryo-Seah/ip.git (master) completed! +Jan 30, 2024 6:33:01 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jeremiahlzz/ip.git completed! +Jan 30, 2024 6:33:01 AM reposense.report.ReportGenerator analyzeRepos +INFO: [330/428] Analyzing https://github.com/jeremiahlzz/ip.git (master)... +Jan 30, 2024 6:33:01 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Joseph31416/ip.git... +Jan 30, 2024 6:33:01 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Joseph31416/ip.git to complete... +Jan 30, 2024 6:33:01 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jeremiahlzz/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:33:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jeremiahlzz/ip.git (master)... -Jan 30, 2024 2:09:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jessicawyz/ip.git (master)... -Jan 30, 2024 2:09:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jessicawyz/ip.git (master)... -Jan 30, 2024 2:09:50 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jessicawyz/ip.git (master) completed! -Jan 30, 2024 2:09:50 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 6:33:01 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/macareonie/ip.git completed! +Jan 30, 2024 6:33:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jeremiahlzz/ip.git (master)... +Jan 30, 2024 6:33:01 AM reposense.report.ReportGenerator analyzeRepos INFO: [331/428] Analyzing https://github.com/macareonie/ip.git (master)... -Jan 30, 2024 2:09:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/STELLA-LYE/ip.git completed! -Jan 30, 2024 2:09:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/JonChong98/ip.git completed! -Jan 30, 2024 2:09:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/nyankoclaws/ip.git completed! -Jan 30, 2024 2:09:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/meowwtama/ip.git completed! -Jan 30, 2024 2:09:50 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/KohGuanZeh/ip.git... -Jan 30, 2024 2:09:50 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:33:01 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/radeon2525/ip.git... +Jan 30, 2024 6:33:02 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/radeon2525/ip.git to complete... +Jan 30, 2024 6:33:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jeremiahlzz/ip.git (master)... +Jan 30, 2024 6:33:02 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jeremiahlzz/ip.git (master) completed! +Jan 30, 2024 6:33:02 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/macareonie/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:33:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/macareonie/ip.git (master)... -Jan 30, 2024 2:09:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/casaarlai/ip.git (master)... -Jan 30, 2024 2:09:50 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/nuyer/ip.git... -Jan 30, 2024 2:09:50 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/SeaHogs/ip.git... -Jan 30, 2024 2:09:50 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/S-Aishvarya/ip.git... -Jan 30, 2024 2:09:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/S-Aishvarya/ip.git to complete... -Jan 30, 2024 2:09:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/SeaHogs/ip.git to complete... -Jan 30, 2024 2:09:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/nuyer/ip.git to complete... -Jan 30, 2024 2:09:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/KohGuanZeh/ip.git to complete... -Jan 30, 2024 2:09:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/casaarlai/ip.git (master)... -Jan 30, 2024 2:09:50 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/casaarlai/ip.git (master) completed! -Jan 30, 2024 2:09:50 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 6:33:02 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/chin-herng/ip.git completed! +Jan 30, 2024 6:33:02 AM reposense.report.ReportGenerator analyzeRepos INFO: [332/428] Analyzing https://github.com/chin-herng/ip.git (master)... -Jan 30, 2024 2:09:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jeremiahlzz/ip.git (master)... -Jan 30, 2024 2:09:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Ryo-Seah/ip.git (master)... -Jan 30, 2024 2:09:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jeremiahlzz/ip.git (master)... -Jan 30, 2024 2:09:50 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:33:02 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ejnan/ip.git... +Jan 30, 2024 6:33:02 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ejnan/ip.git to complete... +Jan 30, 2024 6:33:02 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/chin-herng/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:33:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/chin-herng/ip.git (master)... -Jan 30, 2024 2:09:50 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jeremiahlzz/ip.git (master) completed! -Jan 30, 2024 2:09:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Ryo-Seah/ip.git (master)... -Jan 30, 2024 2:09:50 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Ryo-Seah/ip.git (master) completed! -Jan 30, 2024 2:09:50 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 6:33:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/macareonie/ip.git (master)... +Jan 30, 2024 6:33:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/macareonie/ip.git (master)... +Jan 30, 2024 6:33:02 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/macareonie/ip.git (master) completed! +Jan 30, 2024 6:33:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/chin-herng/ip.git (master)... +Jan 30, 2024 6:33:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/chin-herng/ip.git (master)... +Jan 30, 2024 6:33:02 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/chin-herng/ip.git (master) completed! +Jan 30, 2024 6:33:02 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/gowthaman-01/ip.git completed! +Jan 30, 2024 6:33:02 AM reposense.report.ReportGenerator analyzeRepos INFO: [333/428] Analyzing https://github.com/gowthaman-01/ip.git (master)... -Jan 30, 2024 2:09:50 AM reposense.report.ReportGenerator analyzeRepos -INFO: [334/428] Analyzing https://github.com/Joseph31416/ip.git (master)... -Jan 30, 2024 2:09:50 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:33:02 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jskimdev/ip.git... +Jan 30, 2024 6:33:02 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jskimdev/ip.git to complete... +Jan 30, 2024 6:33:02 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/gowthaman-01/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:33:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/gowthaman-01/ip.git (master)... -Jan 30, 2024 2:09:50 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Joseph31416/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Joseph31416/ip.git (master)... -Jan 30, 2024 2:09:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/SeaHogs/ip.git completed! -Jan 30, 2024 2:09:50 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/tejas-1405/ip.git... -Jan 30, 2024 2:09:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/nuyer/ip.git completed! -Jan 30, 2024 2:09:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/KohGuanZeh/ip.git completed! -Jan 30, 2024 2:09:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/S-Aishvarya/ip.git completed! -Jan 30, 2024 2:09:50 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/youdonnnn/ip.git... -Jan 30, 2024 2:09:50 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/tcjazwei/ip.git... -Jan 30, 2024 2:09:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/tejas-1405/ip.git to complete... -Jan 30, 2024 2:09:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/tcjazwei/ip.git to complete... -Jan 30, 2024 2:09:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/youdonnnn/ip.git to complete... -Jan 30, 2024 2:09:50 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jieqiboh/ip.git... -Jan 30, 2024 2:09:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:33:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/gowthaman-01/ip.git (master)... -Jan 30, 2024 2:09:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jieqiboh/ip.git to complete... -Jan 30, 2024 2:09:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/chin-herng/ip.git (master)... -Jan 30, 2024 2:09:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/chin-herng/ip.git (master)... -Jan 30, 2024 2:09:50 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/chin-herng/ip.git (master) completed! -Jan 30, 2024 2:09:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/macareonie/ip.git (master)... -Jan 30, 2024 2:09:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:33:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/gowthaman-01/ip.git (master)... -Jan 30, 2024 2:09:50 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:33:02 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/gowthaman-01/ip.git (master) completed! -Jan 30, 2024 2:09:50 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 6:33:02 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Joseph31416/ip.git completed! +Jan 30, 2024 6:33:02 AM reposense.report.ReportGenerator analyzeRepos +INFO: [334/428] Analyzing https://github.com/Joseph31416/ip.git (master)... +Jan 30, 2024 6:33:02 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Chiarena/ip.git... +Jan 30, 2024 6:33:02 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Chiarena/ip.git to complete... +Jan 30, 2024 6:33:02 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Joseph31416/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:33:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Joseph31416/ip.git (master)... +Jan 30, 2024 6:33:02 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/radeon2525/ip.git completed! +Jan 30, 2024 6:33:02 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/chonghaoen/ip.git... +Jan 30, 2024 6:33:02 AM reposense.report.ReportGenerator analyzeRepos INFO: [335/428] Analyzing https://github.com/radeon2525/ip.git (master)... -Jan 30, 2024 2:09:50 AM reposense.report.ReportGenerator analyzeRepos -INFO: [336/428] Analyzing https://github.com/ejnan/ip.git (master)... -Jan 30, 2024 2:09:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:33:02 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/chonghaoen/ip.git to complete... +Jan 30, 2024 6:33:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Joseph31416/ip.git (master)... -Jan 30, 2024 2:09:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/macareonie/ip.git (master)... -Jan 30, 2024 2:09:50 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:33:02 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/radeon2525/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:33:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/radeon2525/ip.git (master)... -Jan 30, 2024 2:09:50 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/macareonie/ip.git (master) completed! -Jan 30, 2024 2:09:50 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'... -fatal: could not read Username for 'https://github.com': No such device or address - - at reposense.system.CommandRunnerProcess.waitForProcess(CommandRunnerProcess.java:46) - at reposense.report.RepoCloner.waitForCloneProcess(RepoCloner.java:323) - at reposense.report.RepoCloner.getClonedRepoLocation(RepoCloner.java:123) - at reposense.report.ReportGenerator.cloneRepo(ReportGenerator.java:263) - at reposense.report.ReportGenerator.lambda$cloneAndAnalyzeRepos$0(ReportGenerator.java:208) - at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1700) - at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) - at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) - at java.base/java.lang.Thread.run(Thread.java:829) - -Jan 30, 2024 2:09:50 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/wongkj12/ip.git... -Jan 30, 2024 2:09:50 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ejnan/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ejnan/ip.git (master)... -Jan 30, 2024 2:09:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:33:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Joseph31416/ip.git (master)... -Jan 30, 2024 2:09:50 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:33:02 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Joseph31416/ip.git (master) completed! -Jan 30, 2024 2:09:50 AM reposense.report.ReportGenerator analyzeRepos -INFO: [337/428] Analyzing https://github.com/Chiarena/ip.git (master)... -Jan 30, 2024 2:09:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/wongkj12/ip.git to complete... -Jan 30, 2024 2:09:50 AM reposense.report.ReportGenerator analyzeRepos -INFO: [338/428] Analyzing https://github.com/jskimdev/ip.git (master)... -Jan 30, 2024 2:09:50 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Chiarena/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Chiarena/ip.git (master)... -Jan 30, 2024 2:09:50 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:33:02 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ejnan/ip.git completed! +Jan 30, 2024 6:33:02 AM reposense.report.ReportGenerator analyzeRepos +INFO: [336/428] Analyzing https://github.com/ejnan/ip.git (master)... +Jan 30, 2024 6:33:02 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/CJerrong/ip.git... +Jan 30, 2024 6:33:02 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/CJerrong/ip.git to complete... +Jan 30, 2024 6:33:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/radeon2525/ip.git (master)... +Jan 30, 2024 6:33:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/radeon2525/ip.git (master)... +Jan 30, 2024 6:33:02 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ejnan/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:33:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ejnan/ip.git (master)... +Jan 30, 2024 6:33:02 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/radeon2525/ip.git (master) completed! +Jan 30, 2024 6:33:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ejnan/ip.git (master)... +Jan 30, 2024 6:33:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ejnan/ip.git (master)... +Jan 30, 2024 6:33:02 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ejnan/ip.git (master) completed! +Jan 30, 2024 6:33:03 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jskimdev/ip.git completed! +Jan 30, 2024 6:33:03 AM reposense.report.ReportGenerator analyzeRepos +INFO: [337/428] Analyzing https://github.com/jskimdev/ip.git (master)... +Jan 30, 2024 6:33:03 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/qinxutan/ip.git... +Jan 30, 2024 6:33:03 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/qinxutan/ip.git to complete... +Jan 30, 2024 6:33:03 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jskimdev/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:33:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jskimdev/ip.git (master)... -Jan 30, 2024 2:09:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:33:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jskimdev/ip.git (master)... +Jan 30, 2024 6:33:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jskimdev/ip.git (master)... +Jan 30, 2024 6:33:03 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jskimdev/ip.git (master) completed! +Jan 30, 2024 6:33:03 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Chiarena/ip.git completed! +Jan 30, 2024 6:33:03 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/billyhoce/ip.git... +Jan 30, 2024 6:33:03 AM reposense.report.ReportGenerator analyzeRepos +INFO: [338/428] Analyzing https://github.com/Chiarena/ip.git (master)... +Jan 30, 2024 6:33:03 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/billyhoce/ip.git to complete... +Jan 30, 2024 6:33:03 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Chiarena/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:33:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Chiarena/ip.git (master)... +Jan 30, 2024 6:33:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Chiarena/ip.git (master)... -Jan 30, 2024 2:09:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:33:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Chiarena/ip.git (master)... -Jan 30, 2024 2:09:50 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:33:03 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Chiarena/ip.git (master) completed! -Jan 30, 2024 2:09:50 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 6:33:03 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/chonghaoen/ip.git completed! +Jan 30, 2024 6:33:03 AM reposense.report.ReportGenerator analyzeRepos INFO: [339/428] Analyzing https://github.com/chonghaoen/ip.git (master)... -Jan 30, 2024 2:09:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/youdonnnn/ip.git completed! -Jan 30, 2024 2:09:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tejas-1405/ip.git completed! -Jan 30, 2024 2:09:50 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/GERARDJM018/ip.git... -Jan 30, 2024 2:09:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/radeon2525/ip.git (master)... -Jan 30, 2024 2:09:50 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/blaukc/ip.git... -Jan 30, 2024 2:09:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jieqiboh/ip.git completed! -Jan 30, 2024 2:09:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/blaukc/ip.git to complete... -Jan 30, 2024 2:09:50 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:33:03 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/4llysa/ip.git... +Jan 30, 2024 6:33:03 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/4llysa/ip.git to complete... +Jan 30, 2024 6:33:03 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/chonghaoen/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:33:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/chonghaoen/ip.git (master)... -Jan 30, 2024 2:09:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/GERARDJM018/ip.git to complete... -Jan 30, 2024 2:09:50 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/tohlh/ip.git... -Jan 30, 2024 2:09:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jskimdev/ip.git (master)... -Jan 30, 2024 2:09:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/radeon2525/ip.git (master)... -Jan 30, 2024 2:09:50 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/radeon2525/ip.git (master) completed! -Jan 30, 2024 2:09:50 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 6:33:03 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/CJerrong/ip.git completed! +Jan 30, 2024 6:33:03 AM reposense.report.ReportGenerator analyzeRepos INFO: [340/428] Analyzing https://github.com/CJerrong/ip.git (master)... -Jan 30, 2024 2:09:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/tohlh/ip.git to complete... -Jan 30, 2024 2:09:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jskimdev/ip.git (master)... -Jan 30, 2024 2:09:50 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jskimdev/ip.git (master) completed! -Jan 30, 2024 2:09:50 AM reposense.report.ReportGenerator analyzeRepos -INFO: [341/428] Analyzing https://github.com/qinxutan/ip.git (master)... -Jan 30, 2024 2:09:50 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:33:03 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/TopKec/ip.git... +Jan 30, 2024 6:33:03 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/TopKec/ip.git to complete... +Jan 30, 2024 6:33:03 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/CJerrong/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:33:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/CJerrong/ip.git (master)... -Jan 30, 2024 2:09:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ejnan/ip.git (master)... -Jan 30, 2024 2:09:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ejnan/ip.git (master)... -Jan 30, 2024 2:09:50 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/qinxutan/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/qinxutan/ip.git (master)... -Jan 30, 2024 2:09:50 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ejnan/ip.git (master) completed! -Jan 30, 2024 2:09:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/wongkj12/ip.git completed! -Jan 30, 2024 2:09:50 AM reposense.report.ReportGenerator analyzeRepos -INFO: [342/428] Analyzing https://github.com/4llysa/ip.git (master)... -Jan 30, 2024 2:09:50 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/hiivan/ip.git... -Jan 30, 2024 2:09:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/hiivan/ip.git to complete... -Jan 30, 2024 2:09:50 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/4llysa/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/4llysa/ip.git (master)... -Jan 30, 2024 2:09:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:33:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/chonghaoen/ip.git (master)... -Jan 30, 2024 2:09:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:33:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/chonghaoen/ip.git (master)... -Jan 30, 2024 2:09:51 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:33:03 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/chonghaoen/ip.git (master) completed! -Jan 30, 2024 2:09:51 AM reposense.report.ReportGenerator analyzeRepos -INFO: [343/428] Analyzing https://github.com/billyhoce/ip.git (master)... -Jan 30, 2024 2:09:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/GERARDJM018/ip.git completed! -Jan 30, 2024 2:09:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/blaukc/ip.git completed! -Jan 30, 2024 2:09:51 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/darkvoid32/ip.git... -Jan 30, 2024 2:09:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tohlh/ip.git completed! -Jan 30, 2024 2:09:51 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/yapxuanxuan/ip.git... -Jan 30, 2024 2:09:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/yapxuanxuan/ip.git to complete... -Jan 30, 2024 2:09:51 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/tanjiajiajun/ip.git... -Jan 30, 2024 2:09:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/tanjiajiajun/ip.git to complete... -Jan 30, 2024 2:09:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/4llysa/ip.git (master)... -Jan 30, 2024 2:09:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/darkvoid32/ip.git to complete... -Jan 30, 2024 2:09:51 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/billyhoce/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/billyhoce/ip.git (master)... -Jan 30, 2024 2:09:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:33:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/CJerrong/ip.git (master)... -Jan 30, 2024 2:09:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/4llysa/ip.git (master)... -Jan 30, 2024 2:09:51 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/4llysa/ip.git (master) completed! -Jan 30, 2024 2:09:51 AM reposense.report.ReportGenerator analyzeRepos -INFO: [344/428] Analyzing https://github.com/MarcusGitty/ip.git (master)... -Jan 30, 2024 2:09:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:33:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/CJerrong/ip.git (master)... -Jan 30, 2024 2:09:51 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:33:03 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/CJerrong/ip.git (master) completed! -Jan 30, 2024 2:09:51 AM reposense.report.ReportGenerator analyzeRepos -INFO: [345/428] Analyzing https://github.com/TopKec/ip.git (master)... -Jan 30, 2024 2:09:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:33:03 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/qinxutan/ip.git completed! +Jan 30, 2024 6:33:03 AM reposense.report.ReportGenerator analyzeRepos +INFO: [341/428] Analyzing https://github.com/qinxutan/ip.git (master)... +Jan 30, 2024 6:33:03 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/MarcusGitty/ip.git... +Jan 30, 2024 6:33:03 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/MarcusGitty/ip.git to complete... +Jan 30, 2024 6:33:03 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/qinxutan/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:33:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/qinxutan/ip.git (master)... +Jan 30, 2024 6:33:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/qinxutan/ip.git (master)... -Jan 30, 2024 2:09:51 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/MarcusGitty/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/MarcusGitty/ip.git (master)... -Jan 30, 2024 2:09:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/hiivan/ip.git completed! -Jan 30, 2024 2:09:51 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Greg-Tan/ip.git... -Jan 30, 2024 2:09:51 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/TopKec/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/TopKec/ip.git (master)... -Jan 30, 2024 2:09:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Greg-Tan/ip.git to complete... -Jan 30, 2024 2:09:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:33:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/qinxutan/ip.git (master)... -Jan 30, 2024 2:09:51 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:33:04 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/qinxutan/ip.git (master) completed! -Jan 30, 2024 2:09:51 AM reposense.report.ReportGenerator analyzeRepos -INFO: [346/428] Analyzing https://github.com/huekoh/ip.git (master)... -Jan 30, 2024 2:09:51 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/huekoh/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/huekoh/ip.git (master)... -Jan 30, 2024 2:09:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/MarcusGitty/ip.git (master)... -Jan 30, 2024 2:09:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/MarcusGitty/ip.git (master)... -Jan 30, 2024 2:09:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:33:04 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/billyhoce/ip.git completed! +Jan 30, 2024 6:33:04 AM reposense.report.ReportGenerator analyzeRepos +INFO: [342/428] Analyzing https://github.com/billyhoce/ip.git (master)... +Jan 30, 2024 6:33:04 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/shawnnlimm/ip.git... +Jan 30, 2024 6:33:04 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/shawnnlimm/ip.git to complete... +Jan 30, 2024 6:33:04 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/billyhoce/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:33:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/billyhoce/ip.git (master)... +Jan 30, 2024 6:33:04 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/4llysa/ip.git completed! +Jan 30, 2024 6:33:04 AM reposense.report.ReportGenerator analyzeRepos +INFO: [343/428] Analyzing https://github.com/4llysa/ip.git (master)... +Jan 30, 2024 6:33:04 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/huekoh/ip.git... +Jan 30, 2024 6:33:04 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/huekoh/ip.git to complete... +Jan 30, 2024 6:33:04 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/4llysa/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:33:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/4llysa/ip.git (master)... +Jan 30, 2024 6:33:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/billyhoce/ip.git (master)... -Jan 30, 2024 2:09:51 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/MarcusGitty/ip.git (master) completed! -Jan 30, 2024 2:09:51 AM reposense.report.ReportGenerator analyzeRepos -INFO: [347/428] Analyzing https://github.com/shawnnlimm/ip.git (master)... -Jan 30, 2024 2:09:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:33:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/billyhoce/ip.git (master)... -Jan 30, 2024 2:09:51 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:33:04 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/TopKec/ip.git completed! +Jan 30, 2024 6:33:04 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/billyhoce/ip.git (master) completed! -Jan 30, 2024 2:09:51 AM reposense.report.ReportGenerator analyzeRepos -INFO: [348/428] Analyzing https://github.com/nyankoclaws/ip.git (master)... -Jan 30, 2024 2:09:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/darkvoid32/ip.git completed! -Jan 30, 2024 2:09:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tanjiajiajun/ip.git completed! -Jan 30, 2024 2:09:51 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/shawnnlimm/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/shawnnlimm/ip.git (master)... -Jan 30, 2024 2:09:51 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/kervyntan/ip.git... -Jan 30, 2024 2:09:51 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AndrewOng2066/ip.git... -Jan 30, 2024 2:09:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/kervyntan/ip.git to complete... -Jan 30, 2024 2:09:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:33:04 AM reposense.report.ReportGenerator analyzeRepos +INFO: [344/428] Analyzing https://github.com/TopKec/ip.git (master)... +Jan 30, 2024 6:33:04 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/JonChong98/ip.git... +Jan 30, 2024 6:33:04 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/JonChong98/ip.git to complete... +Jan 30, 2024 6:33:04 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/TopKec/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:33:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/TopKec/ip.git (master)... +Jan 30, 2024 6:33:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/4llysa/ip.git (master)... +Jan 30, 2024 6:33:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/4llysa/ip.git (master)... +Jan 30, 2024 6:33:04 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/4llysa/ip.git (master) completed! +Jan 30, 2024 6:33:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/TopKec/ip.git (master)... -Jan 30, 2024 2:09:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/yapxuanxuan/ip.git completed! -Jan 30, 2024 2:09:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AndrewOng2066/ip.git to complete... -Jan 30, 2024 2:09:51 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/g-tejas/ip.git... -Jan 30, 2024 2:09:51 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/nyankoclaws/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/nyankoclaws/ip.git (master)... -Jan 30, 2024 2:09:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:33:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/TopKec/ip.git (master)... -Jan 30, 2024 2:09:51 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:33:04 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/TopKec/ip.git (master) completed! -Jan 30, 2024 2:09:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/g-tejas/ip.git to complete... -Jan 30, 2024 2:09:51 AM reposense.report.ReportGenerator analyzeRepos -INFO: [349/428] Analyzing https://github.com/STELLA-LYE/ip.git (master)... -Jan 30, 2024 2:09:51 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/STELLA-LYE/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/STELLA-LYE/ip.git (master)... -Jan 30, 2024 2:09:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/huekoh/ip.git (master)... -Jan 30, 2024 2:09:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Greg-Tan/ip.git completed! -Jan 30, 2024 2:09:51 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/RyanNgWH/ip.git... -Jan 30, 2024 2:09:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/huekoh/ip.git (master)... -Jan 30, 2024 2:09:51 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/huekoh/ip.git (master) completed! -Jan 30, 2024 2:09:51 AM reposense.report.ReportGenerator analyzeRepos -INFO: [350/428] Analyzing https://github.com/JonChong98/ip.git (master)... -Jan 30, 2024 2:09:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/RyanNgWH/ip.git to complete... -Jan 30, 2024 2:09:51 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:33:04 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/MarcusGitty/ip.git completed! +Jan 30, 2024 6:33:04 AM reposense.report.ReportGenerator analyzeRepos +INFO: [345/428] Analyzing https://github.com/MarcusGitty/ip.git (master)... +Jan 30, 2024 6:33:04 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/STELLA-LYE/ip.git... +Jan 30, 2024 6:33:04 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/STELLA-LYE/ip.git to complete... +Jan 30, 2024 6:33:04 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/MarcusGitty/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:33:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/MarcusGitty/ip.git (master)... +Jan 30, 2024 6:33:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/MarcusGitty/ip.git (master)... +Jan 30, 2024 6:33:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/MarcusGitty/ip.git (master)... +Jan 30, 2024 6:33:04 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/MarcusGitty/ip.git (master) completed! +Jan 30, 2024 6:33:05 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/shawnnlimm/ip.git completed! +Jan 30, 2024 6:33:05 AM reposense.report.ReportGenerator analyzeRepos +INFO: [346/428] Analyzing https://github.com/shawnnlimm/ip.git (master)... +Jan 30, 2024 6:33:05 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/nyankoclaws/ip.git... +Jan 30, 2024 6:33:05 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/nyankoclaws/ip.git to complete... +Jan 30, 2024 6:33:05 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/huekoh/ip.git completed! +Jan 30, 2024 6:33:05 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/shawnnlimm/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:33:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/shawnnlimm/ip.git (master)... +Jan 30, 2024 6:33:05 AM reposense.report.ReportGenerator analyzeRepos +INFO: [347/428] Analyzing https://github.com/huekoh/ip.git (master)... +Jan 30, 2024 6:33:05 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/meowwtama/ip.git... +Jan 30, 2024 6:33:05 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/meowwtama/ip.git to complete... +Jan 30, 2024 6:33:05 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/huekoh/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:33:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/huekoh/ip.git (master)... +Jan 30, 2024 6:33:05 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/JonChong98/ip.git completed! +Jan 30, 2024 6:33:05 AM reposense.report.ReportGenerator analyzeRepos +INFO: [348/428] Analyzing https://github.com/JonChong98/ip.git (master)... +Jan 30, 2024 6:33:05 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/KohGuanZeh/ip.git... +Jan 30, 2024 6:33:05 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/KohGuanZeh/ip.git to complete... +Jan 30, 2024 6:33:05 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/JonChong98/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:33:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/JonChong98/ip.git (master)... -Jan 30, 2024 2:09:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/nyankoclaws/ip.git (master)... -Jan 30, 2024 2:09:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/nyankoclaws/ip.git (master)... -Jan 30, 2024 2:09:51 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/nyankoclaws/ip.git (master) completed! -Jan 30, 2024 2:09:51 AM reposense.report.ReportGenerator analyzeRepos -INFO: [351/428] Analyzing https://github.com/meowwtama/ip.git (master)... -Jan 30, 2024 2:09:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/STELLA-LYE/ip.git (master)... -Jan 30, 2024 2:09:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:33:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/huekoh/ip.git (master)... +Jan 30, 2024 6:33:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/shawnnlimm/ip.git (master)... -Jan 30, 2024 2:09:51 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/meowwtama/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/meowwtama/ip.git (master)... -Jan 30, 2024 2:09:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/STELLA-LYE/ip.git (master)... -Jan 30, 2024 2:09:51 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/STELLA-LYE/ip.git (master) completed! -Jan 30, 2024 2:09:51 AM reposense.report.ReportGenerator analyzeRepos -INFO: [352/428] Analyzing https://github.com/SeaHogs/ip.git (master)... -Jan 30, 2024 2:09:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:33:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/huekoh/ip.git (master)... +Jan 30, 2024 6:33:05 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/huekoh/ip.git (master) completed! +Jan 30, 2024 6:33:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/shawnnlimm/ip.git (master)... -Jan 30, 2024 2:09:51 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:33:05 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/shawnnlimm/ip.git (master) completed! -Jan 30, 2024 2:09:51 AM reposense.report.ReportGenerator analyzeRepos -INFO: [353/428] Analyzing https://github.com/S-Aishvarya/ip.git (master)... -Jan 30, 2024 2:09:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/kervyntan/ip.git completed! -Jan 30, 2024 2:09:51 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/SeaHogs/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/SeaHogs/ip.git (master)... -Jan 30, 2024 2:09:51 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/S-Aishvarya/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/S-Aishvarya/ip.git (master)... -Jan 30, 2024 2:09:51 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/yeoshuheng/ip.git... -Jan 30, 2024 2:09:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/g-tejas/ip.git completed! -Jan 30, 2024 2:09:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AndrewOng2066/ip.git completed! -Jan 30, 2024 2:09:51 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jonpwk/ip.git... -Jan 30, 2024 2:09:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:33:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/JonChong98/ip.git (master)... -Jan 30, 2024 2:09:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/yeoshuheng/ip.git to complete... -Jan 30, 2024 2:09:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jonpwk/ip.git to complete... -Jan 30, 2024 2:09:51 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/xinen26/ip.git... -Jan 30, 2024 2:09:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:33:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/JonChong98/ip.git (master)... -Jan 30, 2024 2:09:51 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:33:05 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/JonChong98/ip.git (master) completed! -Jan 30, 2024 2:09:51 AM reposense.report.ReportGenerator analyzeRepos -INFO: [354/428] Analyzing https://github.com/nuyer/ip.git (master)... -Jan 30, 2024 2:09:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/xinen26/ip.git to complete... -Jan 30, 2024 2:09:51 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:33:05 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/STELLA-LYE/ip.git completed! +Jan 30, 2024 6:33:05 AM reposense.report.ReportGenerator analyzeRepos +INFO: [349/428] Analyzing https://github.com/STELLA-LYE/ip.git (master)... +Jan 30, 2024 6:33:05 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/nuyer/ip.git... +Jan 30, 2024 6:33:05 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/nuyer/ip.git to complete... +Jan 30, 2024 6:33:05 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/STELLA-LYE/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:33:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/STELLA-LYE/ip.git (master)... +Jan 30, 2024 6:33:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/STELLA-LYE/ip.git (master)... +Jan 30, 2024 6:33:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/STELLA-LYE/ip.git (master)... +Jan 30, 2024 6:33:05 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/STELLA-LYE/ip.git (master) completed! +Jan 30, 2024 6:33:05 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/nyankoclaws/ip.git completed! +Jan 30, 2024 6:33:05 AM reposense.report.ReportGenerator analyzeRepos +INFO: [350/428] Analyzing https://github.com/nyankoclaws/ip.git (master)... +Jan 30, 2024 6:33:05 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/SeaHogs/ip.git... +Jan 30, 2024 6:33:05 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/SeaHogs/ip.git to complete... +Jan 30, 2024 6:33:05 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/nyankoclaws/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:33:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/nyankoclaws/ip.git (master)... +Jan 30, 2024 6:33:05 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/meowwtama/ip.git completed! +Jan 30, 2024 6:33:05 AM reposense.report.ReportGenerator analyzeRepos +INFO: [351/428] Analyzing https://github.com/meowwtama/ip.git (master)... +Jan 30, 2024 6:33:05 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/S-Aishvarya/ip.git... +Jan 30, 2024 6:33:05 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/S-Aishvarya/ip.git to complete... +Jan 30, 2024 6:33:05 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/meowwtama/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:33:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/meowwtama/ip.git (master)... +Jan 30, 2024 6:33:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/nyankoclaws/ip.git (master)... +Jan 30, 2024 6:33:05 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/KohGuanZeh/ip.git completed! +Jan 30, 2024 6:33:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/nyankoclaws/ip.git (master)... +Jan 30, 2024 6:33:05 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/nyankoclaws/ip.git (master) completed! +Jan 30, 2024 6:33:05 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/tejas-1405/ip.git... +Jan 30, 2024 6:33:05 AM reposense.report.ReportGenerator analyzeRepos +INFO: [352/428] Analyzing https://github.com/KohGuanZeh/ip.git (master)... +Jan 30, 2024 6:33:05 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/tejas-1405/ip.git to complete... +Jan 30, 2024 6:33:05 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/KohGuanZeh/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:33:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/KohGuanZeh/ip.git (master)... +Jan 30, 2024 6:33:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/meowwtama/ip.git (master)... +Jan 30, 2024 6:33:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/meowwtama/ip.git (master)... +Jan 30, 2024 6:33:06 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/meowwtama/ip.git (master) completed! +Jan 30, 2024 6:33:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/KohGuanZeh/ip.git (master)... +Jan 30, 2024 6:33:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/KohGuanZeh/ip.git (master)... +Jan 30, 2024 6:33:06 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/KohGuanZeh/ip.git (master) completed! +Jan 30, 2024 6:33:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/nuyer/ip.git completed! +Jan 30, 2024 6:33:06 AM reposense.report.ReportGenerator analyzeRepos +INFO: [353/428] Analyzing https://github.com/nuyer/ip.git (master)... +Jan 30, 2024 6:33:06 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/youdonnnn/ip.git... +Jan 30, 2024 6:33:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/youdonnnn/ip.git to complete... +Jan 30, 2024 6:33:06 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/nuyer/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:33:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/nuyer/ip.git (master)... -Jan 30, 2024 2:09:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/RyanNgWH/ip.git completed! -Jan 30, 2024 2:09:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:33:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/nuyer/ip.git (master)... +Jan 30, 2024 6:33:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/nuyer/ip.git (master)... +Jan 30, 2024 6:33:06 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/nuyer/ip.git (master) completed! +Jan 30, 2024 6:33:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/SeaHogs/ip.git completed! +Jan 30, 2024 6:33:06 AM reposense.report.ReportGenerator analyzeRepos +INFO: [354/428] Analyzing https://github.com/SeaHogs/ip.git (master)... +Jan 30, 2024 6:33:06 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/tcjazwei/ip.git... +Jan 30, 2024 6:33:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/tcjazwei/ip.git to complete... +Jan 30, 2024 6:33:06 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/SeaHogs/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:33:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/SeaHogs/ip.git (master)... +Jan 30, 2024 6:33:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/SeaHogs/ip.git (master)... -Jan 30, 2024 2:09:51 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/gerteck/ip.git... -Jan 30, 2024 2:09:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/gerteck/ip.git to complete... -Jan 30, 2024 2:09:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/S-Aishvarya/ip.git (master)... -Jan 30, 2024 2:09:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:33:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/SeaHogs/ip.git (master)... -Jan 30, 2024 2:09:51 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:33:06 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/SeaHogs/ip.git (master) completed! -Jan 30, 2024 2:09:51 AM reposense.report.ReportGenerator analyzeRepos -INFO: [355/428] Analyzing https://github.com/KohGuanZeh/ip.git (master)... -Jan 30, 2024 2:09:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:33:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/S-Aishvarya/ip.git completed! +Jan 30, 2024 6:33:06 AM reposense.report.ReportGenerator analyzeRepos +INFO: [355/428] Analyzing https://github.com/S-Aishvarya/ip.git (master)... +Jan 30, 2024 6:33:06 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jieqiboh/ip.git... +Jan 30, 2024 6:33:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jieqiboh/ip.git to complete... +Jan 30, 2024 6:33:06 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/S-Aishvarya/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:33:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/S-Aishvarya/ip.git (master)... +Jan 30, 2024 6:33:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tejas-1405/ip.git completed! +Jan 30, 2024 6:33:06 AM reposense.report.ReportGenerator analyzeRepos +INFO: [356/428] Analyzing https://github.com/tejas-1405/ip.git (master)... +Jan 30, 2024 6:33:06 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/wongkj12/ip.git... +Jan 30, 2024 6:33:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/wongkj12/ip.git to complete... +Jan 30, 2024 6:33:06 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/tejas-1405/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:33:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/tejas-1405/ip.git (master)... +Jan 30, 2024 6:33:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/S-Aishvarya/ip.git (master)... +Jan 30, 2024 6:33:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/S-Aishvarya/ip.git (master)... -Jan 30, 2024 2:09:51 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:33:06 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/S-Aishvarya/ip.git (master) completed! -Jan 30, 2024 2:09:51 AM reposense.report.ReportGenerator analyzeRepos -INFO: [356/428] Analyzing https://github.com/youdonnnn/ip.git (master)... -Jan 30, 2024 2:09:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/meowwtama/ip.git (master)... -Jan 30, 2024 2:09:51 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/KohGuanZeh/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/KohGuanZeh/ip.git (master)... -Jan 30, 2024 2:09:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/nuyer/ip.git (master)... -Jan 30, 2024 2:09:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/meowwtama/ip.git (master)... -Jan 30, 2024 2:09:51 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/meowwtama/ip.git (master) completed! -Jan 30, 2024 2:09:51 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:33:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/tejas-1405/ip.git (master)... +Jan 30, 2024 6:33:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/tejas-1405/ip.git (master)... +Jan 30, 2024 6:33:06 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/tejas-1405/ip.git (master) completed! +Jan 30, 2024 6:33:06 AM reposense.report.RepoCloner waitForCloneProcess +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'... +fatal: could not read Username for 'https://github.com': No such device or address + + at reposense.system.CommandRunnerProcess.waitForProcess(CommandRunnerProcess.java:46) + at reposense.report.RepoCloner.waitForCloneProcess(RepoCloner.java:323) + at reposense.report.RepoCloner.getClonedRepoLocation(RepoCloner.java:123) + at reposense.report.ReportGenerator.cloneRepo(ReportGenerator.java:263) + at reposense.report.ReportGenerator.lambda$cloneAndAnalyzeRepos$0(ReportGenerator.java:208) + at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1700) + at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) + at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) + at java.base/java.lang.Thread.run(Thread.java:829) + +Jan 30, 2024 6:33:06 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/GERARDJM018/ip.git... +Jan 30, 2024 6:33:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/GERARDJM018/ip.git to complete... +Jan 30, 2024 6:33:07 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/youdonnnn/ip.git completed! +Jan 30, 2024 6:33:07 AM reposense.report.ReportGenerator analyzeRepos +INFO: [357/428] Analyzing https://github.com/youdonnnn/ip.git (master)... +Jan 30, 2024 6:33:07 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/blaukc/ip.git... +Jan 30, 2024 6:33:07 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/blaukc/ip.git to complete... +Jan 30, 2024 6:33:07 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/youdonnnn/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:33:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/youdonnnn/ip.git (master)... -Jan 30, 2024 2:09:51 AM reposense.report.ReportGenerator analyzeRepos -INFO: [357/428] Analyzing https://github.com/tejas-1405/ip.git (master)... -Jan 30, 2024 2:09:51 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/tejas-1405/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/tejas-1405/ip.git (master)... -Jan 30, 2024 2:09:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/nuyer/ip.git (master)... -Jan 30, 2024 2:09:51 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/nuyer/ip.git (master) completed! -Jan 30, 2024 2:09:51 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 6:33:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/youdonnnn/ip.git (master)... +Jan 30, 2024 6:33:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/youdonnnn/ip.git (master)... +Jan 30, 2024 6:33:07 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/youdonnnn/ip.git (master) completed! +Jan 30, 2024 6:33:07 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jieqiboh/ip.git completed! +Jan 30, 2024 6:33:07 AM reposense.report.ReportGenerator analyzeRepos INFO: [358/428] Analyzing https://github.com/jieqiboh/ip.git (master)... -Jan 30, 2024 2:09:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/yeoshuheng/ip.git completed! -Jan 30, 2024 2:09:51 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/drustanyjt/ip.git... -Jan 30, 2024 2:09:51 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:33:07 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/tohlh/ip.git... +Jan 30, 2024 6:33:07 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/tohlh/ip.git to complete... +Jan 30, 2024 6:33:07 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jieqiboh/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:33:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jieqiboh/ip.git (master)... -Jan 30, 2024 2:09:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jonpwk/ip.git completed! -Jan 30, 2024 2:09:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/xinen26/ip.git completed! -Jan 30, 2024 2:09:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/drustanyjt/ip.git to complete... -Jan 30, 2024 2:09:51 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/angsongyee/ip.git... -Jan 30, 2024 2:09:51 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/alfaloo/ip.git... -Jan 30, 2024 2:09:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/angsongyee/ip.git to complete... -Jan 30, 2024 2:09:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/alfaloo/ip.git to complete... -Jan 30, 2024 2:09:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/gerteck/ip.git completed! -Jan 30, 2024 2:09:52 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ivan24004/ip.git... -Jan 30, 2024 2:09:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ivan24004/ip.git to complete... -Jan 30, 2024 2:09:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/tejas-1405/ip.git (master)... -Jan 30, 2024 2:09:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/tejas-1405/ip.git (master)... -Jan 30, 2024 2:09:52 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/tejas-1405/ip.git (master) completed! -Jan 30, 2024 2:09:52 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 6:33:07 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/wongkj12/ip.git completed! +Jan 30, 2024 6:33:07 AM reposense.report.ReportGenerator analyzeRepos INFO: [359/428] Analyzing https://github.com/wongkj12/ip.git (master)... -Jan 30, 2024 2:09:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/youdonnnn/ip.git (master)... -Jan 30, 2024 2:09:52 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:33:07 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/hiivan/ip.git... +Jan 30, 2024 6:33:07 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/hiivan/ip.git to complete... +Jan 30, 2024 6:33:07 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/wongkj12/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:33:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/wongkj12/ip.git (master)... -Jan 30, 2024 2:09:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/youdonnnn/ip.git (master)... -Jan 30, 2024 2:09:52 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/youdonnnn/ip.git (master) completed! -Jan 30, 2024 2:09:52 AM reposense.report.ReportGenerator analyzeRepos -INFO: [360/428] Analyzing https://github.com/blaukc/ip.git (master)... -Jan 30, 2024 2:09:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/drustanyjt/ip.git completed! -Jan 30, 2024 2:09:52 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/cheahTJ/ip.git... -Jan 30, 2024 2:09:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/cheahTJ/ip.git to complete... -Jan 30, 2024 2:09:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/angsongyee/ip.git completed! -Jan 30, 2024 2:09:52 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/blaukc/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/blaukc/ip.git (master)... -Jan 30, 2024 2:09:52 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/bertrandong/ip.git... -Jan 30, 2024 2:09:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/bertrandong/ip.git to complete... -Jan 30, 2024 2:09:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/alfaloo/ip.git completed! -Jan 30, 2024 2:09:52 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/headcube1/ip.git... -Jan 30, 2024 2:09:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ivan24004/ip.git completed! -Jan 30, 2024 2:09:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/headcube1/ip.git to complete... -Jan 30, 2024 2:09:52 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/pjanthony2001/ip.git... -Jan 30, 2024 2:09:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/pjanthony2001/ip.git to complete... -Jan 30, 2024 2:09:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:33:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/wongkj12/ip.git (master)... -Jan 30, 2024 2:09:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/blaukc/ip.git (master)... -Jan 30, 2024 2:09:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:33:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/wongkj12/ip.git (master)... -Jan 30, 2024 2:09:52 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:33:07 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/wongkj12/ip.git (master) completed! -Jan 30, 2024 2:09:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/blaukc/ip.git (master)... -Jan 30, 2024 2:09:52 AM reposense.report.ReportGenerator analyzeRepos -INFO: [361/428] Analyzing https://github.com/GERARDJM018/ip.git (master)... -Jan 30, 2024 2:09:52 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/blaukc/ip.git (master) completed! -Jan 30, 2024 2:09:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/KohGuanZeh/ip.git (master)... -Jan 30, 2024 2:09:52 AM reposense.report.ReportGenerator analyzeRepos -INFO: [362/428] Analyzing https://github.com/tohlh/ip.git (master)... -Jan 30, 2024 2:09:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jieqiboh/ip.git (master)... -Jan 30, 2024 2:09:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/KohGuanZeh/ip.git (master)... -Jan 30, 2024 2:09:52 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:33:07 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/GERARDJM018/ip.git completed! +Jan 30, 2024 6:33:07 AM reposense.report.ReportGenerator analyzeRepos +INFO: [360/428] Analyzing https://github.com/GERARDJM018/ip.git (master)... +Jan 30, 2024 6:33:07 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/darkvoid32/ip.git... +Jan 30, 2024 6:33:07 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/darkvoid32/ip.git to complete... +Jan 30, 2024 6:33:07 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/GERARDJM018/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:33:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/GERARDJM018/ip.git (master)... -Jan 30, 2024 2:09:52 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/KohGuanZeh/ip.git (master) completed! -Jan 30, 2024 2:09:52 AM reposense.report.ReportGenerator analyzeRepos -INFO: [363/428] Analyzing https://github.com/hiivan/ip.git (master)... -Jan 30, 2024 2:09:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:33:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jieqiboh/ip.git (master)... +Jan 30, 2024 6:33:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/jieqiboh/ip.git (master)... -Jan 30, 2024 2:09:52 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:33:07 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/jieqiboh/ip.git (master) completed! -Jan 30, 2024 2:09:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/cheahTJ/ip.git completed! -Jan 30, 2024 2:09:52 AM reposense.report.ReportGenerator analyzeRepos -INFO: [364/428] Analyzing https://github.com/tanjiajiajun/ip.git (master)... -Jan 30, 2024 2:09:52 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:33:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/GERARDJM018/ip.git (master)... +Jan 30, 2024 6:33:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/GERARDJM018/ip.git (master)... +Jan 30, 2024 6:33:07 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/GERARDJM018/ip.git (master) completed! +Jan 30, 2024 6:33:07 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/blaukc/ip.git completed! +Jan 30, 2024 6:33:07 AM reposense.report.ReportGenerator analyzeRepos +INFO: [361/428] Analyzing https://github.com/blaukc/ip.git (master)... +Jan 30, 2024 6:33:07 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/yapxuanxuan/ip.git... +Jan 30, 2024 6:33:07 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/yapxuanxuan/ip.git to complete... +Jan 30, 2024 6:33:07 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/blaukc/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:33:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/blaukc/ip.git (master)... +Jan 30, 2024 6:33:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/blaukc/ip.git (master)... +Jan 30, 2024 6:33:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/blaukc/ip.git (master)... +Jan 30, 2024 6:33:07 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/blaukc/ip.git (master) completed! +Jan 30, 2024 6:33:08 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tohlh/ip.git completed! +Jan 30, 2024 6:33:08 AM reposense.report.ReportGenerator analyzeRepos +INFO: [362/428] Analyzing https://github.com/tohlh/ip.git (master)... +Jan 30, 2024 6:33:08 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/tanjiajiajun/ip.git... +Jan 30, 2024 6:33:08 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/tanjiajiajun/ip.git to complete... +Jan 30, 2024 6:33:08 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/tohlh/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:52 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ruijietay/ip.git... -Jan 30, 2024 2:09:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:33:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/tohlh/ip.git (master)... -Jan 30, 2024 2:09:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ruijietay/ip.git to complete... -Jan 30, 2024 2:09:52 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:33:08 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/hiivan/ip.git completed! +Jan 30, 2024 6:33:08 AM reposense.report.ReportGenerator analyzeRepos +INFO: [363/428] Analyzing https://github.com/hiivan/ip.git (master)... +Jan 30, 2024 6:33:08 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Greg-Tan/ip.git... +Jan 30, 2024 6:33:08 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Greg-Tan/ip.git to complete... +Jan 30, 2024 6:33:08 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/hiivan/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:33:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/hiivan/ip.git (master)... -Jan 30, 2024 2:09:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/bertrandong/ip.git completed! -Jan 30, 2024 2:09:52 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/tanjiajiajun/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/tanjiajiajun/ip.git (master)... -Jan 30, 2024 2:09:52 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/sindhurajain/ip.git... -Jan 30, 2024 2:09:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/sindhurajain/ip.git to complete... -Jan 30, 2024 2:09:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/headcube1/ip.git completed! -Jan 30, 2024 2:09:52 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Ragnapop/ip.git... -Jan 30, 2024 2:09:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/pjanthony2001/ip.git completed! -Jan 30, 2024 2:09:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Ragnapop/ip.git to complete... -Jan 30, 2024 2:09:52 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/nobodyishappy/ip.git... -Jan 30, 2024 2:09:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/nobodyishappy/ip.git to complete... -Jan 30, 2024 2:09:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/GERARDJM018/ip.git (master)... -Jan 30, 2024 2:09:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:33:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/tohlh/ip.git (master)... -Jan 30, 2024 2:09:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/GERARDJM018/ip.git (master)... -Jan 30, 2024 2:09:52 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/GERARDJM018/ip.git (master) completed! -Jan 30, 2024 2:09:52 AM reposense.report.ReportGenerator analyzeRepos -INFO: [365/428] Analyzing https://github.com/darkvoid32/ip.git (master)... -Jan 30, 2024 2:09:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:33:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/tohlh/ip.git (master)... -Jan 30, 2024 2:09:52 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:33:08 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/tohlh/ip.git (master) completed! -Jan 30, 2024 2:09:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/tanjiajiajun/ip.git (master)... -Jan 30, 2024 2:09:52 AM reposense.report.ReportGenerator analyzeRepos -INFO: [366/428] Analyzing https://github.com/yapxuanxuan/ip.git (master)... -Jan 30, 2024 2:09:52 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:33:08 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/darkvoid32/ip.git completed! +Jan 30, 2024 6:33:08 AM reposense.report.ReportGenerator analyzeRepos +INFO: [364/428] Analyzing https://github.com/darkvoid32/ip.git (master)... +Jan 30, 2024 6:33:08 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/kervyntan/ip.git... +Jan 30, 2024 6:33:08 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/kervyntan/ip.git to complete... +Jan 30, 2024 6:33:08 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/darkvoid32/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:33:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/darkvoid32/ip.git (master)... -Jan 30, 2024 2:09:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/tanjiajiajun/ip.git (master)... -Jan 30, 2024 2:09:52 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/tanjiajiajun/ip.git (master) completed! -Jan 30, 2024 2:09:52 AM reposense.report.ReportGenerator analyzeRepos -INFO: [367/428] Analyzing https://github.com/Greg-Tan/ip.git (master)... -Jan 30, 2024 2:09:52 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/yapxuanxuan/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/yapxuanxuan/ip.git (master)... -Jan 30, 2024 2:09:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:33:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/hiivan/ip.git (master)... -Jan 30, 2024 2:09:52 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Greg-Tan/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Greg-Tan/ip.git (master)... -Jan 30, 2024 2:09:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:33:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/hiivan/ip.git (master)... -Jan 30, 2024 2:09:52 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:33:08 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/hiivan/ip.git (master) completed! -Jan 30, 2024 2:09:52 AM reposense.report.ReportGenerator analyzeRepos -INFO: [368/428] Analyzing https://github.com/kervyntan/ip.git (master)... -Jan 30, 2024 2:09:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/sindhurajain/ip.git completed! -Jan 30, 2024 2:09:52 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Pughal77/ip.git... -Jan 30, 2024 2:09:52 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/kervyntan/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/kervyntan/ip.git (master)... -Jan 30, 2024 2:09:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Pughal77/ip.git to complete... -Jan 30, 2024 2:09:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/nobodyishappy/ip.git completed! -Jan 30, 2024 2:09:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Ragnapop/ip.git completed! -Jan 30, 2024 2:09:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:33:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/darkvoid32/ip.git (master)... -Jan 30, 2024 2:09:52 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/PateShin/ip.git... -Jan 30, 2024 2:09:52 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jayllo-c/ip.git... -Jan 30, 2024 2:09:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/yapxuanxuan/ip.git (master)... -Jan 30, 2024 2:09:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:33:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/darkvoid32/ip.git (master)... -Jan 30, 2024 2:09:52 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:33:08 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/darkvoid32/ip.git (master) completed! -Jan 30, 2024 2:09:52 AM reposense.report.ReportGenerator analyzeRepos -INFO: [369/428] Analyzing https://github.com/g-tejas/ip.git (master)... -Jan 30, 2024 2:09:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/PateShin/ip.git to complete... -Jan 30, 2024 2:09:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jayllo-c/ip.git to complete... -Jan 30, 2024 2:09:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Greg-Tan/ip.git (master)... -Jan 30, 2024 2:09:52 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/g-tejas/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/g-tejas/ip.git (master)... -Jan 30, 2024 2:09:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:33:08 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/yapxuanxuan/ip.git completed! +Jan 30, 2024 6:33:08 AM reposense.report.ReportGenerator analyzeRepos +INFO: [365/428] Analyzing https://github.com/yapxuanxuan/ip.git (master)... +Jan 30, 2024 6:33:08 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AndrewOng2066/ip.git... +Jan 30, 2024 6:33:08 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AndrewOng2066/ip.git to complete... +Jan 30, 2024 6:33:08 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/yapxuanxuan/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:33:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/yapxuanxuan/ip.git (master)... +Jan 30, 2024 6:33:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/yapxuanxuan/ip.git (master)... +Jan 30, 2024 6:33:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/yapxuanxuan/ip.git (master)... -Jan 30, 2024 2:09:52 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:33:08 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/yapxuanxuan/ip.git (master) completed! -Jan 30, 2024 2:09:52 AM reposense.report.ReportGenerator analyzeRepos -INFO: [370/428] Analyzing https://github.com/AndrewOng2066/ip.git (master)... -Jan 30, 2024 2:09:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:33:08 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tanjiajiajun/ip.git completed! +Jan 30, 2024 6:33:08 AM reposense.report.ReportGenerator analyzeRepos +INFO: [366/428] Analyzing https://github.com/tanjiajiajun/ip.git (master)... +Jan 30, 2024 6:33:08 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/g-tejas/ip.git... +Jan 30, 2024 6:33:08 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/g-tejas/ip.git to complete... +Jan 30, 2024 6:33:08 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/tanjiajiajun/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:33:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/tanjiajiajun/ip.git (master)... +Jan 30, 2024 6:33:09 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Greg-Tan/ip.git completed! +Jan 30, 2024 6:33:09 AM reposense.report.ReportGenerator analyzeRepos +INFO: [367/428] Analyzing https://github.com/Greg-Tan/ip.git (master)... +Jan 30, 2024 6:33:09 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/RyanNgWH/ip.git... +Jan 30, 2024 6:33:09 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/RyanNgWH/ip.git to complete... +Jan 30, 2024 6:33:09 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Greg-Tan/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:33:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Greg-Tan/ip.git (master)... +Jan 30, 2024 6:33:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/tanjiajiajun/ip.git (master)... +Jan 30, 2024 6:33:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/tanjiajiajun/ip.git (master)... +Jan 30, 2024 6:33:09 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/tanjiajiajun/ip.git (master) completed! +Jan 30, 2024 6:33:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Greg-Tan/ip.git (master)... +Jan 30, 2024 6:33:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Greg-Tan/ip.git (master)... -Jan 30, 2024 2:09:52 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:33:09 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/kervyntan/ip.git completed! +Jan 30, 2024 6:33:09 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Greg-Tan/ip.git (master) completed! -Jan 30, 2024 2:09:52 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:33:09 AM reposense.report.ReportGenerator analyzeRepos +INFO: [368/428] Analyzing https://github.com/kervyntan/ip.git (master)... +Jan 30, 2024 6:33:09 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/yeoshuheng/ip.git... +Jan 30, 2024 6:33:09 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/yeoshuheng/ip.git to complete... +Jan 30, 2024 6:33:09 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/kervyntan/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:33:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/kervyntan/ip.git (master)... +Jan 30, 2024 6:33:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/kervyntan/ip.git (master)... +Jan 30, 2024 6:33:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/kervyntan/ip.git (master)... +Jan 30, 2024 6:33:09 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/kervyntan/ip.git (master) completed! +Jan 30, 2024 6:33:09 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AndrewOng2066/ip.git completed! +Jan 30, 2024 6:33:09 AM reposense.report.ReportGenerator analyzeRepos +INFO: [369/428] Analyzing https://github.com/AndrewOng2066/ip.git (master)... +Jan 30, 2024 6:33:09 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jonpwk/ip.git... +Jan 30, 2024 6:33:09 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jonpwk/ip.git to complete... +Jan 30, 2024 6:33:09 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AndrewOng2066/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:33:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AndrewOng2066/ip.git (master)... -Jan 30, 2024 2:09:52 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 6:33:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AndrewOng2066/ip.git (master)... +Jan 30, 2024 6:33:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AndrewOng2066/ip.git (master)... +Jan 30, 2024 6:33:09 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AndrewOng2066/ip.git (master) completed! +Jan 30, 2024 6:33:09 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/g-tejas/ip.git completed! +Jan 30, 2024 6:33:09 AM reposense.report.ReportGenerator analyzeRepos +INFO: [370/428] Analyzing https://github.com/g-tejas/ip.git (master)... +Jan 30, 2024 6:33:09 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/xinen26/ip.git... +Jan 30, 2024 6:33:09 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/xinen26/ip.git to complete... +Jan 30, 2024 6:33:09 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/g-tejas/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:33:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/g-tejas/ip.git (master)... +Jan 30, 2024 6:33:09 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/RyanNgWH/ip.git completed! +Jan 30, 2024 6:33:09 AM reposense.report.ReportGenerator analyzeRepos INFO: [371/428] Analyzing https://github.com/RyanNgWH/ip.git (master)... -Jan 30, 2024 2:09:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ruijietay/ip.git completed! -Jan 30, 2024 2:09:53 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:33:09 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/gerteck/ip.git... +Jan 30, 2024 6:33:09 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/gerteck/ip.git to complete... +Jan 30, 2024 6:33:09 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/RyanNgWH/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:33:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/RyanNgWH/ip.git (master)... -Jan 30, 2024 2:09:53 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/gosongying/ip.git... -Jan 30, 2024 2:09:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/gosongying/ip.git to complete... -Jan 30, 2024 2:09:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AndrewOng2066/ip.git (master)... -Jan 30, 2024 2:09:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Pughal77/ip.git completed! -Jan 30, 2024 2:09:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AndrewOng2066/ip.git (master)... -Jan 30, 2024 2:09:53 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/biinnnggggg/ip.git... -Jan 30, 2024 2:09:53 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AndrewOng2066/ip.git (master) completed! -Jan 30, 2024 2:09:53 AM reposense.report.ReportGenerator analyzeRepos -INFO: [372/428] Analyzing https://github.com/yeoshuheng/ip.git (master)... -Jan 30, 2024 2:09:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/biinnnggggg/ip.git to complete... -Jan 30, 2024 2:09:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/PateShin/ip.git completed! -Jan 30, 2024 2:09:53 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ShanylOng/ip.git... -Jan 30, 2024 2:09:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ShanylOng/ip.git to complete... -Jan 30, 2024 2:09:53 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/yeoshuheng/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/yeoshuheng/ip.git (master)... -Jan 30, 2024 2:09:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jayllo-c/ip.git completed! -Jan 30, 2024 2:09:53 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/KinTatHo/ip.git... -Jan 30, 2024 2:09:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/KinTatHo/ip.git to complete... -Jan 30, 2024 2:09:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:33:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/g-tejas/ip.git (master)... -Jan 30, 2024 2:09:53 AM reposense.report.RepoCloner waitForCloneProcess -WARNING: Exception met while trying to clone the repo "ShanylOng/ip[master]", will skip this repo. -reposense.system.CommandRunnerProcessException: Error returned from command git clone --bare 'https://github.com/ShanylOng/ip.git' 'repos/ShanylOng_ip/ip_bare' on path . : -Cloning into bare repository 'repos/ShanylOng_ip/ip_bare'... -fatal: could not read Username for 'https://github.com': No such device or address - - at reposense.system.CommandRunnerProcess.waitForProcess(CommandRunnerProcess.java:46) - at reposense.report.RepoCloner.waitForCloneProcess(RepoCloner.java:323) - at reposense.report.RepoCloner.getClonedRepoLocation(RepoCloner.java:123) - at reposense.report.ReportGenerator.cloneRepo(ReportGenerator.java:263) - at reposense.report.ReportGenerator.lambda$cloneAndAnalyzeRepos$0(ReportGenerator.java:208) - at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1700) - at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) - at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) - at java.base/java.lang.Thread.run(Thread.java:829) - -Jan 30, 2024 2:09:53 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Rishit02/ip.git... -Jan 30, 2024 2:09:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:33:09 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/yeoshuheng/ip.git completed! +Jan 30, 2024 6:33:09 AM reposense.report.ReportGenerator analyzeRepos +INFO: [372/428] Analyzing https://github.com/yeoshuheng/ip.git (master)... +Jan 30, 2024 6:33:09 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/drustanyjt/ip.git... +Jan 30, 2024 6:33:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/g-tejas/ip.git (master)... -Jan 30, 2024 2:09:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Rishit02/ip.git to complete... -Jan 30, 2024 2:09:53 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:33:09 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/drustanyjt/ip.git to complete... +Jan 30, 2024 6:33:09 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/g-tejas/ip.git (master) completed! -Jan 30, 2024 2:09:53 AM reposense.report.ReportGenerator analyzeRepos -INFO: [373/428] Analyzing https://github.com/xinen26/ip.git (master)... -Jan 30, 2024 2:09:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/kervyntan/ip.git (master)... -Jan 30, 2024 2:09:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/gosongying/ip.git completed! -Jan 30, 2024 2:09:53 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/rahhulleee/ip.git... -Jan 30, 2024 2:09:53 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/xinen26/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/xinen26/ip.git (master)... -Jan 30, 2024 2:09:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/kervyntan/ip.git (master)... -Jan 30, 2024 2:09:53 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/kervyntan/ip.git (master) completed! -Jan 30, 2024 2:09:53 AM reposense.report.ReportGenerator analyzeRepos -INFO: [374/428] Analyzing https://github.com/jonpwk/ip.git (master)... -Jan 30, 2024 2:09:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/rahhulleee/ip.git to complete... -Jan 30, 2024 2:09:53 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:33:09 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/yeoshuheng/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:33:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/yeoshuheng/ip.git (master)... +Jan 30, 2024 6:33:10 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jonpwk/ip.git completed! +Jan 30, 2024 6:33:10 AM reposense.report.ReportGenerator analyzeRepos +INFO: [373/428] Analyzing https://github.com/jonpwk/ip.git (master)... +Jan 30, 2024 6:33:10 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/angsongyee/ip.git... +Jan 30, 2024 6:33:10 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/angsongyee/ip.git to complete... +Jan 30, 2024 6:33:10 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jonpwk/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:33:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jonpwk/ip.git (master)... -Jan 30, 2024 2:09:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/biinnnggggg/ip.git completed! -Jan 30, 2024 2:09:53 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/chaaaaun/ip.git... -Jan 30, 2024 2:09:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/chaaaaun/ip.git to complete... -Jan 30, 2024 2:09:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/KinTatHo/ip.git completed! -Jan 30, 2024 2:09:53 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/JerryO3/ip.git... -Jan 30, 2024 2:09:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/JerryO3/ip.git to complete... -Jan 30, 2024 2:09:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Rishit02/ip.git completed! -Jan 30, 2024 2:09:53 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/tzaph/ip.git... -Jan 30, 2024 2:09:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/tzaph/ip.git to complete... -Jan 30, 2024 2:09:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/rahhulleee/ip.git completed! -Jan 30, 2024 2:09:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:33:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/yeoshuheng/ip.git (master)... -Jan 30, 2024 2:09:53 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/RingoftheKing/ip.git... -Jan 30, 2024 2:09:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:33:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/yeoshuheng/ip.git (master)... +Jan 30, 2024 6:33:10 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/yeoshuheng/ip.git (master) completed! +Jan 30, 2024 6:33:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/RyanNgWH/ip.git (master)... +Jan 30, 2024 6:33:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/jonpwk/ip.git (master)... -Jan 30, 2024 2:09:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/RingoftheKing/ip.git to complete... -Jan 30, 2024 2:09:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:33:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/RyanNgWH/ip.git (master)... +Jan 30, 2024 6:33:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/jonpwk/ip.git (master)... -Jan 30, 2024 2:09:53 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:33:10 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/jonpwk/ip.git (master) completed! -Jan 30, 2024 2:09:53 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 6:33:10 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/RyanNgWH/ip.git (master) completed! +Jan 30, 2024 6:33:10 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/xinen26/ip.git completed! +Jan 30, 2024 6:33:10 AM reposense.report.ReportGenerator analyzeRepos +INFO: [374/428] Analyzing https://github.com/xinen26/ip.git (master)... +Jan 30, 2024 6:33:10 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/alfaloo/ip.git... +Jan 30, 2024 6:33:10 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/alfaloo/ip.git to complete... +Jan 30, 2024 6:33:10 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/xinen26/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:33:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/xinen26/ip.git (master)... +Jan 30, 2024 6:33:10 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/gerteck/ip.git completed! +Jan 30, 2024 6:33:10 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ivan24004/ip.git... +Jan 30, 2024 6:33:10 AM reposense.report.ReportGenerator analyzeRepos INFO: [375/428] Analyzing https://github.com/gerteck/ip.git (master)... -Jan 30, 2024 2:09:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/yeoshuheng/ip.git (master)... -Jan 30, 2024 2:09:53 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/yeoshuheng/ip.git (master) completed! -Jan 30, 2024 2:09:53 AM reposense.report.ReportGenerator analyzeRepos -INFO: [376/428] Analyzing https://github.com/drustanyjt/ip.git (master)... -Jan 30, 2024 2:09:53 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:33:10 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ivan24004/ip.git to complete... +Jan 30, 2024 6:33:10 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/gerteck/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:33:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/gerteck/ip.git (master)... -Jan 30, 2024 2:09:53 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/drustanyjt/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/drustanyjt/ip.git (master)... -Jan 30, 2024 2:09:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:33:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/xinen26/ip.git (master)... -Jan 30, 2024 2:09:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/chaaaaun/ip.git completed! -Jan 30, 2024 2:09:53 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ashleyclx/ip.git... -Jan 30, 2024 2:09:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/RyanNgWH/ip.git (master)... -Jan 30, 2024 2:09:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ashleyclx/ip.git to complete... -Jan 30, 2024 2:09:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:33:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/xinen26/ip.git (master)... -Jan 30, 2024 2:09:53 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:33:10 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/xinen26/ip.git (master) completed! -Jan 30, 2024 2:09:53 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 6:33:10 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/drustanyjt/ip.git completed! +Jan 30, 2024 6:33:10 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/cheahTJ/ip.git... +Jan 30, 2024 6:33:10 AM reposense.report.ReportGenerator analyzeRepos +INFO: [376/428] Analyzing https://github.com/drustanyjt/ip.git (master)... +Jan 30, 2024 6:33:10 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/cheahTJ/ip.git to complete... +Jan 30, 2024 6:33:10 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/drustanyjt/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:33:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/drustanyjt/ip.git (master)... +Jan 30, 2024 6:33:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/gerteck/ip.git (master)... +Jan 30, 2024 6:33:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/gerteck/ip.git (master)... +Jan 30, 2024 6:33:10 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/gerteck/ip.git (master) completed! +Jan 30, 2024 6:33:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/drustanyjt/ip.git (master)... +Jan 30, 2024 6:33:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/drustanyjt/ip.git (master)... +Jan 30, 2024 6:33:10 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/drustanyjt/ip.git (master) completed! +Jan 30, 2024 6:33:10 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/angsongyee/ip.git completed! +Jan 30, 2024 6:33:10 AM reposense.report.ReportGenerator analyzeRepos INFO: [377/428] Analyzing https://github.com/angsongyee/ip.git (master)... -Jan 30, 2024 2:09:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/JerryO3/ip.git completed! -Jan 30, 2024 2:09:53 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/laney0808/ip.git... -Jan 30, 2024 2:09:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/laney0808/ip.git to complete... -Jan 30, 2024 2:09:53 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:33:10 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/bertrandong/ip.git... +Jan 30, 2024 6:33:10 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/bertrandong/ip.git to complete... +Jan 30, 2024 6:33:10 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/angsongyee/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:33:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/angsongyee/ip.git (master)... -Jan 30, 2024 2:09:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/RyanNgWH/ip.git (master)... -Jan 30, 2024 2:09:53 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/RyanNgWH/ip.git (master) completed! -Jan 30, 2024 2:09:53 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 6:33:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/angsongyee/ip.git (master)... +Jan 30, 2024 6:33:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/angsongyee/ip.git (master)... +Jan 30, 2024 6:33:10 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/angsongyee/ip.git (master) completed! +Jan 30, 2024 6:33:11 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/alfaloo/ip.git completed! +Jan 30, 2024 6:33:11 AM reposense.report.ReportGenerator analyzeRepos INFO: [378/428] Analyzing https://github.com/alfaloo/ip.git (master)... -Jan 30, 2024 2:09:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/gerteck/ip.git (master)... -Jan 30, 2024 2:09:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tzaph/ip.git completed! -Jan 30, 2024 2:09:53 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/NatLeong/ip.git... -Jan 30, 2024 2:09:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/drustanyjt/ip.git (master)... -Jan 30, 2024 2:09:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/NatLeong/ip.git to complete... -Jan 30, 2024 2:09:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/RingoftheKing/ip.git completed! -Jan 30, 2024 2:09:53 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:33:11 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/headcube1/ip.git... +Jan 30, 2024 6:33:11 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/headcube1/ip.git to complete... +Jan 30, 2024 6:33:11 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/alfaloo/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:33:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/alfaloo/ip.git (master)... -Jan 30, 2024 2:09:53 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Jajared/ip.git... -Jan 30, 2024 2:09:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/gerteck/ip.git (master)... -Jan 30, 2024 2:09:53 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/gerteck/ip.git (master) completed! -Jan 30, 2024 2:09:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Jajared/ip.git to complete... -Jan 30, 2024 2:09:53 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 6:33:11 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ivan24004/ip.git completed! +Jan 30, 2024 6:33:11 AM reposense.report.ReportGenerator analyzeRepos INFO: [379/428] Analyzing https://github.com/ivan24004/ip.git (master)... -Jan 30, 2024 2:09:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/drustanyjt/ip.git (master)... -Jan 30, 2024 2:09:53 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/drustanyjt/ip.git (master) completed! -Jan 30, 2024 2:09:53 AM reposense.report.ReportGenerator analyzeRepos -INFO: [380/428] Analyzing https://github.com/cheahTJ/ip.git (master)... -Jan 30, 2024 2:09:53 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:33:11 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/pjanthony2001/ip.git... +Jan 30, 2024 6:33:11 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/pjanthony2001/ip.git to complete... +Jan 30, 2024 6:33:11 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ivan24004/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:33:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ivan24004/ip.git (master)... -Jan 30, 2024 2:09:53 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:33:11 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/cheahTJ/ip.git completed! +Jan 30, 2024 6:33:11 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ruijietay/ip.git... +Jan 30, 2024 6:33:11 AM reposense.report.ReportGenerator analyzeRepos +INFO: [380/428] Analyzing https://github.com/cheahTJ/ip.git (master)... +Jan 30, 2024 6:33:11 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ruijietay/ip.git to complete... +Jan 30, 2024 6:33:11 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/cheahTJ/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:33:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/cheahTJ/ip.git (master)... -Jan 30, 2024 2:09:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/angsongyee/ip.git (master)... -Jan 30, 2024 2:09:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/angsongyee/ip.git (master)... -Jan 30, 2024 2:09:53 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/angsongyee/ip.git (master) completed! -Jan 30, 2024 2:09:53 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 6:33:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/alfaloo/ip.git (master)... +Jan 30, 2024 6:33:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/alfaloo/ip.git (master)... +Jan 30, 2024 6:33:11 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/alfaloo/ip.git (master) completed! +Jan 30, 2024 6:33:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ivan24004/ip.git (master)... +Jan 30, 2024 6:33:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ivan24004/ip.git (master)... +Jan 30, 2024 6:33:11 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ivan24004/ip.git (master) completed! +Jan 30, 2024 6:33:11 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/bertrandong/ip.git completed! +Jan 30, 2024 6:33:11 AM reposense.report.ReportGenerator analyzeRepos INFO: [381/428] Analyzing https://github.com/bertrandong/ip.git (master)... -Jan 30, 2024 2:09:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ashleyclx/ip.git completed! -Jan 30, 2024 2:09:54 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/bertrandong/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/bertrandong/ip.git (master)... -Jan 30, 2024 2:09:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/laney0808/ip.git completed! -Jan 30, 2024 2:09:54 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/kailashgautham/ip.git... -Jan 30, 2024 2:09:54 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/J-wang-CSMA/ip.git... -Jan 30, 2024 2:09:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/kailashgautham/ip.git to complete... -Jan 30, 2024 2:09:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/J-wang-CSMA/ip.git to complete... -Jan 30, 2024 2:09:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:33:11 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/sindhurajain/ip.git... +Jan 30, 2024 6:33:11 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/sindhurajain/ip.git to complete... +Jan 30, 2024 6:33:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/cheahTJ/ip.git (master)... -Jan 30, 2024 2:09:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:33:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/cheahTJ/ip.git (master)... -Jan 30, 2024 2:09:54 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:33:11 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/cheahTJ/ip.git (master) completed! -Jan 30, 2024 2:09:54 AM reposense.report.ReportGenerator analyzeRepos -INFO: [382/428] Analyzing https://github.com/headcube1/ip.git (master)... -Jan 30, 2024 2:09:54 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/headcube1/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/headcube1/ip.git (master)... -Jan 30, 2024 2:09:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/NatLeong/ip.git completed! -Jan 30, 2024 2:09:54 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/kinjalagarwal1810/ip.git... -Jan 30, 2024 2:09:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Jajared/ip.git completed! -Jan 30, 2024 2:09:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/kinjalagarwal1810/ip.git to complete... -Jan 30, 2024 2:09:54 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/NewtonKoh/ip.git... -Jan 30, 2024 2:09:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:33:11 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/bertrandong/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:33:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/bertrandong/ip.git (master)... +Jan 30, 2024 6:33:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/bertrandong/ip.git (master)... -Jan 30, 2024 2:09:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/NewtonKoh/ip.git to complete... -Jan 30, 2024 2:09:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:33:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/bertrandong/ip.git (master)... -Jan 30, 2024 2:09:54 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:33:11 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/bertrandong/ip.git (master) completed! -Jan 30, 2024 2:09:54 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 6:33:12 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/headcube1/ip.git completed! +Jan 30, 2024 6:33:12 AM reposense.report.ReportGenerator analyzeRepos +INFO: [382/428] Analyzing https://github.com/headcube1/ip.git (master)... +Jan 30, 2024 6:33:12 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Ragnapop/ip.git... +Jan 30, 2024 6:33:12 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Ragnapop/ip.git to complete... +Jan 30, 2024 6:33:12 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/headcube1/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:33:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/headcube1/ip.git (master)... +Jan 30, 2024 6:33:12 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/pjanthony2001/ip.git completed! +Jan 30, 2024 6:33:12 AM reposense.report.ReportGenerator analyzeRepos INFO: [383/428] Analyzing https://github.com/pjanthony2001/ip.git (master)... -Jan 30, 2024 2:09:54 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:33:12 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/nobodyishappy/ip.git... +Jan 30, 2024 6:33:12 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/nobodyishappy/ip.git to complete... +Jan 30, 2024 6:33:12 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/pjanthony2001/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:33:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/pjanthony2001/ip.git (master)... -Jan 30, 2024 2:09:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ivan24004/ip.git (master)... -Jan 30, 2024 2:09:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/alfaloo/ip.git (master)... -Jan 30, 2024 2:09:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ivan24004/ip.git (master)... -Jan 30, 2024 2:09:54 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ivan24004/ip.git (master) completed! -Jan 30, 2024 2:09:54 AM reposense.report.ReportGenerator analyzeRepos -INFO: [384/428] Analyzing https://github.com/sindhurajain/ip.git (master)... -Jan 30, 2024 2:09:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:33:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/headcube1/ip.git (master)... -Jan 30, 2024 2:09:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/alfaloo/ip.git (master)... -Jan 30, 2024 2:09:54 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/alfaloo/ip.git (master) completed! -Jan 30, 2024 2:09:54 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/sindhurajain/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/sindhurajain/ip.git (master)... -Jan 30, 2024 2:09:54 AM reposense.report.ReportGenerator analyzeRepos -INFO: [385/428] Analyzing https://github.com/nobodyishappy/ip.git (master)... -Jan 30, 2024 2:09:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/J-wang-CSMA/ip.git completed! -Jan 30, 2024 2:09:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:33:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/headcube1/ip.git (master)... -Jan 30, 2024 2:09:54 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:33:12 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/headcube1/ip.git (master) completed! -Jan 30, 2024 2:09:54 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 6:33:12 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ruijietay/ip.git completed! +Jan 30, 2024 6:33:12 AM reposense.report.ReportGenerator analyzeRepos +INFO: [384/428] Analyzing https://github.com/ruijietay/ip.git (master)... +Jan 30, 2024 6:33:12 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Pughal77/ip.git... +Jan 30, 2024 6:33:12 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Pughal77/ip.git to complete... +Jan 30, 2024 6:33:12 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ruijietay/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:33:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ruijietay/ip.git (master)... +Jan 30, 2024 6:33:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ruijietay/ip.git (master)... +Jan 30, 2024 6:33:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ruijietay/ip.git (master)... +Jan 30, 2024 6:33:12 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ruijietay/ip.git (master) completed! +Jan 30, 2024 6:33:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/pjanthony2001/ip.git (master)... +Jan 30, 2024 6:33:12 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/sindhurajain/ip.git completed! +Jan 30, 2024 6:33:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/pjanthony2001/ip.git (master)... +Jan 30, 2024 6:33:12 AM reposense.report.ReportGenerator analyzeRepos +INFO: [385/428] Analyzing https://github.com/sindhurajain/ip.git (master)... +Jan 30, 2024 6:33:12 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/PateShin/ip.git... +Jan 30, 2024 6:33:12 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/pjanthony2001/ip.git (master) completed! +Jan 30, 2024 6:33:12 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/PateShin/ip.git to complete... +Jan 30, 2024 6:33:12 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/sindhurajain/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:33:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/sindhurajain/ip.git (master)... +Jan 30, 2024 6:33:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/sindhurajain/ip.git (master)... +Jan 30, 2024 6:33:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/sindhurajain/ip.git (master)... +Jan 30, 2024 6:33:12 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/sindhurajain/ip.git (master) completed! +Jan 30, 2024 6:33:12 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Ragnapop/ip.git completed! +Jan 30, 2024 6:33:12 AM reposense.report.ReportGenerator analyzeRepos INFO: [386/428] Analyzing https://github.com/Ragnapop/ip.git (master)... -Jan 30, 2024 2:09:54 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/UdhayaShan1/ip.git... -Jan 30, 2024 2:09:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/UdhayaShan1/ip.git to complete... -Jan 30, 2024 2:09:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/kailashgautham/ip.git completed! -Jan 30, 2024 2:09:54 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/tanqinyong/ip.git... -Jan 30, 2024 2:09:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/kinjalagarwal1810/ip.git completed! -Jan 30, 2024 2:09:54 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:33:12 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jayllo-c/ip.git... +Jan 30, 2024 6:33:12 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jayllo-c/ip.git to complete... +Jan 30, 2024 6:33:12 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Ragnapop/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:33:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Ragnapop/ip.git (master)... -Jan 30, 2024 2:09:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/tanqinyong/ip.git to complete... -Jan 30, 2024 2:09:54 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:33:12 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/nobodyishappy/ip.git completed! +Jan 30, 2024 6:33:12 AM reposense.report.ReportGenerator analyzeRepos +INFO: [387/428] Analyzing https://github.com/nobodyishappy/ip.git (master)... +Jan 30, 2024 6:33:12 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/gosongying/ip.git... +Jan 30, 2024 6:33:12 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/gosongying/ip.git to complete... +Jan 30, 2024 6:33:12 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/nobodyishappy/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:33:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/nobodyishappy/ip.git (master)... -Jan 30, 2024 2:09:54 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/theman-oj10/ip.git... -Jan 30, 2024 2:09:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/theman-oj10/ip.git to complete... -Jan 30, 2024 2:09:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/NewtonKoh/ip.git completed! -Jan 30, 2024 2:09:54 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/c-j-lh/ip.git... -Jan 30, 2024 2:09:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/c-j-lh/ip.git to complete... -Jan 30, 2024 2:09:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/sindhurajain/ip.git (master)... -Jan 30, 2024 2:09:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/sindhurajain/ip.git (master)... -Jan 30, 2024 2:09:54 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/sindhurajain/ip.git (master) completed! -Jan 30, 2024 2:09:54 AM reposense.report.ReportGenerator analyzeRepos -INFO: [387/428] Analyzing https://github.com/ruijietay/ip.git (master)... -Jan 30, 2024 2:09:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/nobodyishappy/ip.git (master)... -Jan 30, 2024 2:09:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:33:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Ragnapop/ip.git (master)... -Jan 30, 2024 2:09:54 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ruijietay/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ruijietay/ip.git (master)... -Jan 30, 2024 2:09:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:33:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Ragnapop/ip.git (master)... +Jan 30, 2024 6:33:13 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Ragnapop/ip.git (master) completed! +Jan 30, 2024 6:33:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/nobodyishappy/ip.git (master)... +Jan 30, 2024 6:33:13 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Pughal77/ip.git completed! +Jan 30, 2024 6:33:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/nobodyishappy/ip.git (master)... -Jan 30, 2024 2:09:54 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:33:13 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/nobodyishappy/ip.git (master) completed! -Jan 30, 2024 2:09:54 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 6:33:13 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/biinnnggggg/ip.git... +Jan 30, 2024 6:33:13 AM reposense.report.ReportGenerator analyzeRepos INFO: [388/428] Analyzing https://github.com/Pughal77/ip.git (master)... -Jan 30, 2024 2:09:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Ragnapop/ip.git (master)... -Jan 30, 2024 2:09:54 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Ragnapop/ip.git (master) completed! -Jan 30, 2024 2:09:54 AM reposense.report.ReportGenerator analyzeRepos -INFO: [389/428] Analyzing https://github.com/PateShin/ip.git (master)... -Jan 30, 2024 2:09:54 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:33:13 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/biinnnggggg/ip.git to complete... +Jan 30, 2024 6:33:13 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Pughal77/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:33:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Pughal77/ip.git (master)... -Jan 30, 2024 2:09:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/pjanthony2001/ip.git (master)... -Jan 30, 2024 2:09:54 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/PateShin/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/PateShin/ip.git (master)... -Jan 30, 2024 2:09:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/pjanthony2001/ip.git (master)... -Jan 30, 2024 2:09:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/UdhayaShan1/ip.git completed! -Jan 30, 2024 2:09:54 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/pjanthony2001/ip.git (master) completed! -Jan 30, 2024 2:09:54 AM reposense.report.ReportGenerator analyzeRepos -INFO: [390/428] Analyzing https://github.com/jayllo-c/ip.git (master)... -Jan 30, 2024 2:09:54 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jovantanyk/ip.git... -Jan 30, 2024 2:09:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jovantanyk/ip.git to complete... -Jan 30, 2024 2:09:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tanqinyong/ip.git completed! -Jan 30, 2024 2:09:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/theman-oj10/ip.git completed! -Jan 30, 2024 2:09:54 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Kappaccinoh/ip.git... -Jan 30, 2024 2:09:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/c-j-lh/ip.git completed! -Jan 30, 2024 2:09:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Kappaccinoh/ip.git to complete... -Jan 30, 2024 2:09:54 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/itstrueitstrueitsrealitsreal/ip.git... -Jan 30, 2024 2:09:54 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jayllo-c/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jayllo-c/ip.git (master)... -Jan 30, 2024 2:09:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/itstrueitstrueitsrealitsreal/ip.git to complete... -Jan 30, 2024 2:09:54 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/agreatdayy/ip.git... -Jan 30, 2024 2:09:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/agreatdayy/ip.git to complete... -Jan 30, 2024 2:09:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ruijietay/ip.git (master)... -Jan 30, 2024 2:09:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:33:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Pughal77/ip.git (master)... +Jan 30, 2024 6:33:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Pughal77/ip.git (master)... +Jan 30, 2024 6:33:13 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Pughal77/ip.git (master) completed! +Jan 30, 2024 6:33:13 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/PateShin/ip.git completed! +Jan 30, 2024 6:33:13 AM reposense.report.ReportGenerator analyzeRepos +INFO: [389/428] Analyzing https://github.com/PateShin/ip.git (master)... +Jan 30, 2024 6:33:13 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ShanylOng/ip.git... +Jan 30, 2024 6:33:13 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ShanylOng/ip.git to complete... +Jan 30, 2024 6:33:13 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/PateShin/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:33:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/PateShin/ip.git (master)... +Jan 30, 2024 6:33:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/PateShin/ip.git (master)... -Jan 30, 2024 2:09:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ruijietay/ip.git (master)... -Jan 30, 2024 2:09:54 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ruijietay/ip.git (master) completed! -Jan 30, 2024 2:09:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:33:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/PateShin/ip.git (master)... -Jan 30, 2024 2:09:54 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:33:13 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/PateShin/ip.git (master) completed! -Jan 30, 2024 2:09:54 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 6:33:13 AM reposense.report.RepoCloner waitForCloneProcess +WARNING: Exception met while trying to clone the repo "ShanylOng/ip[master]", will skip this repo. +reposense.system.CommandRunnerProcessException: Error returned from command git clone --bare 'https://github.com/ShanylOng/ip.git' 'repos/ShanylOng_ip/ip_bare' on path . : +Cloning into bare repository 'repos/ShanylOng_ip/ip_bare'... +fatal: could not read Username for 'https://github.com': No such device or address + + at reposense.system.CommandRunnerProcess.waitForProcess(CommandRunnerProcess.java:46) + at reposense.report.RepoCloner.waitForCloneProcess(RepoCloner.java:323) + at reposense.report.RepoCloner.getClonedRepoLocation(RepoCloner.java:123) + at reposense.report.ReportGenerator.cloneRepo(ReportGenerator.java:263) + at reposense.report.ReportGenerator.lambda$cloneAndAnalyzeRepos$0(ReportGenerator.java:208) + at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1700) + at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) + at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) + at java.base/java.lang.Thread.run(Thread.java:829) + +Jan 30, 2024 6:33:13 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/KinTatHo/ip.git... +Jan 30, 2024 6:33:13 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/KinTatHo/ip.git to complete... +Jan 30, 2024 6:33:13 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jayllo-c/ip.git completed! +Jan 30, 2024 6:33:13 AM reposense.report.ReportGenerator analyzeRepos +INFO: [390/428] Analyzing https://github.com/jayllo-c/ip.git (master)... +Jan 30, 2024 6:33:13 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Rishit02/ip.git... +Jan 30, 2024 6:33:13 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Rishit02/ip.git to complete... +Jan 30, 2024 6:33:13 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jayllo-c/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:33:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jayllo-c/ip.git (master)... +Jan 30, 2024 6:33:13 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/gosongying/ip.git completed! +Jan 30, 2024 6:33:13 AM reposense.report.ReportGenerator analyzeRepos INFO: [391/428] Analyzing https://github.com/gosongying/ip.git (master)... -Jan 30, 2024 2:09:54 AM reposense.report.ReportGenerator analyzeRepos -INFO: [392/428] Analyzing https://github.com/biinnnggggg/ip.git (master)... -Jan 30, 2024 2:09:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Pughal77/ip.git (master)... -Jan 30, 2024 2:09:54 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:33:13 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/rahhulleee/ip.git... +Jan 30, 2024 6:33:13 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/rahhulleee/ip.git to complete... +Jan 30, 2024 6:33:13 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/gosongying/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:33:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/gosongying/ip.git (master)... -Jan 30, 2024 2:09:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:33:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/jayllo-c/ip.git (master)... -Jan 30, 2024 2:09:54 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:33:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jayllo-c/ip.git (master)... +Jan 30, 2024 6:33:13 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jayllo-c/ip.git (master) completed! +Jan 30, 2024 6:33:13 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/biinnnggggg/ip.git completed! +Jan 30, 2024 6:33:13 AM reposense.report.ReportGenerator analyzeRepos +INFO: [392/428] Analyzing https://github.com/biinnnggggg/ip.git (master)... +Jan 30, 2024 6:33:13 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/chaaaaun/ip.git... +Jan 30, 2024 6:33:13 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/chaaaaun/ip.git to complete... +Jan 30, 2024 6:33:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/gosongying/ip.git (master)... +Jan 30, 2024 6:33:13 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/biinnnggggg/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:33:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/biinnnggggg/ip.git (master)... -Jan 30, 2024 2:09:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Pughal77/ip.git (master)... -Jan 30, 2024 2:09:54 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Pughal77/ip.git (master) completed! -Jan 30, 2024 2:09:54 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 6:33:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/gosongying/ip.git (master)... +Jan 30, 2024 6:33:13 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/gosongying/ip.git (master) completed! +Jan 30, 2024 6:33:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/biinnnggggg/ip.git (master)... +Jan 30, 2024 6:33:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/biinnnggggg/ip.git (master)... +Jan 30, 2024 6:33:13 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/biinnnggggg/ip.git (master) completed! +Jan 30, 2024 6:33:14 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/KinTatHo/ip.git completed! +Jan 30, 2024 6:33:14 AM reposense.report.ReportGenerator analyzeRepos INFO: [393/428] Analyzing https://github.com/KinTatHo/ip.git (master)... -Jan 30, 2024 2:09:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jayllo-c/ip.git (master)... -Jan 30, 2024 2:09:54 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jayllo-c/ip.git (master) completed! -Jan 30, 2024 2:09:54 AM reposense.report.ReportGenerator analyzeRepos -INFO: [394/428] Analyzing https://github.com/Rishit02/ip.git (master)... -Jan 30, 2024 2:09:54 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:33:14 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/JerryO3/ip.git... +Jan 30, 2024 6:33:14 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/JerryO3/ip.git to complete... +Jan 30, 2024 6:33:14 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/KinTatHo/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:33:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/KinTatHo/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:33:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/KinTatHo/ip.git (master)... +Jan 30, 2024 6:33:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/KinTatHo/ip.git (master)... +Jan 30, 2024 6:33:14 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/KinTatHo/ip.git (master) completed! +Jan 30, 2024 6:33:14 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Rishit02/ip.git completed! +Jan 30, 2024 6:33:14 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/rahhulleee/ip.git completed! +Jan 30, 2024 6:33:14 AM reposense.report.ReportGenerator analyzeRepos +INFO: [394/428] Analyzing https://github.com/Rishit02/ip.git (master)... +Jan 30, 2024 6:33:14 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/tzaph/ip.git... +Jan 30, 2024 6:33:14 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/tzaph/ip.git to complete... +Jan 30, 2024 6:33:14 AM reposense.report.ReportGenerator analyzeRepos +INFO: [395/428] Analyzing https://github.com/rahhulleee/ip.git (master)... +Jan 30, 2024 6:33:14 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/RingoftheKing/ip.git... +Jan 30, 2024 6:33:14 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/RingoftheKing/ip.git to complete... +Jan 30, 2024 6:33:14 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Rishit02/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:33:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Rishit02/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jovantanyk/ip.git completed! -Jan 30, 2024 2:09:55 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/SampsonYe1999/ip.git... -Jan 30, 2024 2:09:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/SampsonYe1999/ip.git to complete... -Jan 30, 2024 2:09:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Kappaccinoh/ip.git completed! -Jan 30, 2024 2:09:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/itstrueitstrueitsrealitsreal/ip.git completed! -Jan 30, 2024 2:09:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/agreatdayy/ip.git completed! -Jan 30, 2024 2:09:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/gosongying/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/gosongying/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/gosongying/ip.git (master) completed! -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator analyzeRepos -INFO: [395/428] Analyzing https://github.com/rahhulleee/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Rishit02/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:33:14 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/rahhulleee/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:33:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/rahhulleee/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:33:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Rishit02/ip.git (master)... +Jan 30, 2024 6:33:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/rahhulleee/ip.git (master)... +Jan 30, 2024 6:33:14 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/chaaaaun/ip.git completed! +Jan 30, 2024 6:33:14 AM reposense.report.ReportGenerator analyzeRepos +INFO: [396/428] Analyzing https://github.com/chaaaaun/ip.git (master)... +Jan 30, 2024 6:33:14 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ashleyclx/ip.git... +Jan 30, 2024 6:33:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Rishit02/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:33:14 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Rishit02/ip.git (master) completed! -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator analyzeRepos -INFO: [396/428] Analyzing https://github.com/chaaaaun/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:33:14 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ashleyclx/ip.git to complete... +Jan 30, 2024 6:33:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/rahhulleee/ip.git (master)... +Jan 30, 2024 6:33:14 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/rahhulleee/ip.git (master) completed! +Jan 30, 2024 6:33:14 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/chaaaaun/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:33:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/chaaaaun/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/KinTatHo/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/KinTatHo/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/KinTatHo/ip.git (master) completed! -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 6:33:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/chaaaaun/ip.git (master)... +Jan 30, 2024 6:33:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/chaaaaun/ip.git (master)... +Jan 30, 2024 6:33:14 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/chaaaaun/ip.git (master) completed! +Jan 30, 2024 6:33:14 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/JerryO3/ip.git completed! +Jan 30, 2024 6:33:14 AM reposense.report.ReportGenerator analyzeRepos INFO: [397/428] Analyzing https://github.com/JerryO3/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/biinnnggggg/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/biinnnggggg/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/biinnnggggg/ip.git (master) completed! -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator analyzeRepos -INFO: [398/428] Analyzing https://github.com/tzaph/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:33:14 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/laney0808/ip.git... +Jan 30, 2024 6:33:14 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/laney0808/ip.git to complete... +Jan 30, 2024 6:33:14 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/JerryO3/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:33:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/JerryO3/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/rahhulleee/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/rahhulleee/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/rahhulleee/ip.git (master) completed! -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:33:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/JerryO3/ip.git (master)... +Jan 30, 2024 6:33:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/JerryO3/ip.git (master)... +Jan 30, 2024 6:33:14 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/JerryO3/ip.git (master) completed! +Jan 30, 2024 6:33:15 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tzaph/ip.git completed! +Jan 30, 2024 6:33:15 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/RingoftheKing/ip.git completed! +Jan 30, 2024 6:33:15 AM reposense.report.ReportGenerator analyzeRepos +INFO: [398/428] Analyzing https://github.com/tzaph/ip.git (master)... +Jan 30, 2024 6:33:15 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/NatLeong/ip.git... +Jan 30, 2024 6:33:15 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/NatLeong/ip.git to complete... +Jan 30, 2024 6:33:15 AM reposense.report.ReportGenerator analyzeRepos +INFO: [399/428] Analyzing https://github.com/RingoftheKing/ip.git (master)... +Jan 30, 2024 6:33:15 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Jajared/ip.git... +Jan 30, 2024 6:33:15 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Jajared/ip.git to complete... +Jan 30, 2024 6:33:15 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/tzaph/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:33:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/tzaph/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator analyzeRepos -INFO: [399/428] Analyzing https://github.com/RingoftheKing/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/SampsonYe1999/ip.git completed! -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:33:15 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/RingoftheKing/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:33:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/RingoftheKing/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/chaaaaun/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/JerryO3/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/chaaaaun/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/chaaaaun/ip.git (master) completed! -Jan 30, 2024 2:09:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/JerryO3/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator analyzeRepos -INFO: [400/428] Analyzing https://github.com/laney0808/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/JerryO3/ip.git (master) completed! -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator analyzeRepos -INFO: [401/428] Analyzing https://github.com/ashleyclx/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:33:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/RingoftheKing/ip.git (master)... +Jan 30, 2024 6:33:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/tzaph/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/laney0808/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/laney0808/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:33:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/RingoftheKing/ip.git (master)... +Jan 30, 2024 6:33:15 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ashleyclx/ip.git completed! +Jan 30, 2024 6:33:15 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/RingoftheKing/ip.git (master) completed! +Jan 30, 2024 6:33:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/tzaph/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/RingoftheKing/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:33:15 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/tzaph/ip.git (master) completed! -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:33:15 AM reposense.report.ReportGenerator analyzeRepos +INFO: [400/428] Analyzing https://github.com/ashleyclx/ip.git (master)... +Jan 30, 2024 6:33:15 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/kailashgautham/ip.git... +Jan 30, 2024 6:33:15 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/kailashgautham/ip.git to complete... +Jan 30, 2024 6:33:15 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ashleyclx/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:33:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ashleyclx/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 6:33:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ashleyclx/ip.git (master)... +Jan 30, 2024 6:33:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ashleyclx/ip.git (master)... +Jan 30, 2024 6:33:15 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ashleyclx/ip.git (master) completed! +Jan 30, 2024 6:33:15 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/laney0808/ip.git completed! +Jan 30, 2024 6:33:15 AM reposense.report.ReportGenerator analyzeRepos +INFO: [401/428] Analyzing https://github.com/laney0808/ip.git (master)... +Jan 30, 2024 6:33:15 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/J-wang-CSMA/ip.git... +Jan 30, 2024 6:33:15 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/J-wang-CSMA/ip.git to complete... +Jan 30, 2024 6:33:15 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/laney0808/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:33:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/laney0808/ip.git (master)... +Jan 30, 2024 6:33:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/laney0808/ip.git (master)... +Jan 30, 2024 6:33:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/laney0808/ip.git (master)... +Jan 30, 2024 6:33:15 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/laney0808/ip.git (master) completed! +Jan 30, 2024 6:33:16 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/NatLeong/ip.git completed! +Jan 30, 2024 6:33:16 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Jajared/ip.git completed! +Jan 30, 2024 6:33:16 AM reposense.report.ReportGenerator analyzeRepos INFO: [402/428] Analyzing https://github.com/NatLeong/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/RingoftheKing/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/RingoftheKing/ip.git (master) completed! -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 6:33:16 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/kinjalagarwal1810/ip.git... +Jan 30, 2024 6:33:16 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/kinjalagarwal1810/ip.git to complete... +Jan 30, 2024 6:33:16 AM reposense.report.ReportGenerator analyzeRepos INFO: [403/428] Analyzing https://github.com/Jajared/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:33:16 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/NewtonKoh/ip.git... +Jan 30, 2024 6:33:16 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/NewtonKoh/ip.git to complete... +Jan 30, 2024 6:33:16 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/NatLeong/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:33:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/NatLeong/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:33:16 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Jajared/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:33:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Jajared/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:33:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/NatLeong/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/laney0808/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:33:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/NatLeong/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:33:16 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/NatLeong/ip.git (master) completed! -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator analyzeRepos -INFO: [404/428] Analyzing https://github.com/J-wang-CSMA/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/laney0808/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/laney0808/ip.git (master) completed! -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator analyzeRepos -INFO: [405/428] Analyzing https://github.com/kailashgautham/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ashleyclx/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/J-wang-CSMA/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/J-wang-CSMA/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:33:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Jajared/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/kailashgautham/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/kailashgautham/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ashleyclx/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ashleyclx/ip.git (master) completed! -Jan 30, 2024 2:09:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:33:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Jajared/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:33:16 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Jajared/ip.git (master) completed! -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator analyzeRepos -INFO: [406/428] Analyzing https://github.com/kinjalagarwal1810/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator analyzeRepos -INFO: [407/428] Analyzing https://github.com/NewtonKoh/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/kinjalagarwal1810/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/kinjalagarwal1810/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/NewtonKoh/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/NewtonKoh/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:33:16 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/kailashgautham/ip.git completed! +Jan 30, 2024 6:33:16 AM reposense.report.ReportGenerator analyzeRepos +INFO: [404/428] Analyzing https://github.com/kailashgautham/ip.git (master)... +Jan 30, 2024 6:33:16 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/UdhayaShan1/ip.git... +Jan 30, 2024 6:33:16 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/UdhayaShan1/ip.git to complete... +Jan 30, 2024 6:33:16 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/kailashgautham/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:33:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/kailashgautham/ip.git (master)... +Jan 30, 2024 6:33:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/kailashgautham/ip.git (master)... +Jan 30, 2024 6:33:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/kailashgautham/ip.git (master)... +Jan 30, 2024 6:33:16 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/kailashgautham/ip.git (master) completed! +Jan 30, 2024 6:33:16 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/J-wang-CSMA/ip.git completed! +Jan 30, 2024 6:33:16 AM reposense.report.ReportGenerator analyzeRepos +INFO: [405/428] Analyzing https://github.com/J-wang-CSMA/ip.git (master)... +Jan 30, 2024 6:33:16 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/tanqinyong/ip.git... +Jan 30, 2024 6:33:16 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/tanqinyong/ip.git to complete... +Jan 30, 2024 6:33:16 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/J-wang-CSMA/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:33:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/J-wang-CSMA/ip.git (master)... +Jan 30, 2024 6:33:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/J-wang-CSMA/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/kinjalagarwal1810/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:33:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/J-wang-CSMA/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:33:16 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/J-wang-CSMA/ip.git (master) completed! -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator analyzeRepos -INFO: [408/428] Analyzing https://github.com/UdhayaShan1/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:33:16 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/NewtonKoh/ip.git completed! +Jan 30, 2024 6:33:16 AM reposense.report.ReportGenerator analyzeRepos +INFO: [406/428] Analyzing https://github.com/NewtonKoh/ip.git (master)... +Jan 30, 2024 6:33:16 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/theman-oj10/ip.git... +Jan 30, 2024 6:33:16 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/theman-oj10/ip.git to complete... +Jan 30, 2024 6:33:16 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/kinjalagarwal1810/ip.git completed! +Jan 30, 2024 6:33:16 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/c-j-lh/ip.git... +Jan 30, 2024 6:33:16 AM reposense.report.ReportGenerator analyzeRepos +INFO: [407/428] Analyzing https://github.com/kinjalagarwal1810/ip.git (master)... +Jan 30, 2024 6:33:16 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/c-j-lh/ip.git to complete... +Jan 30, 2024 6:33:16 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/NewtonKoh/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:33:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/NewtonKoh/ip.git (master)... +Jan 30, 2024 6:33:16 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/kinjalagarwal1810/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:33:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/kinjalagarwal1810/ip.git (master)... +Jan 30, 2024 6:33:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/kinjalagarwal1810/ip.git (master)... +Jan 30, 2024 6:33:16 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/UdhayaShan1/ip.git completed! +Jan 30, 2024 6:33:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/kinjalagarwal1810/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:33:16 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jovantanyk/ip.git... +Jan 30, 2024 6:33:16 AM reposense.report.ReportGenerator analyzeRepos +INFO: [408/428] Analyzing https://github.com/UdhayaShan1/ip.git (master)... +Jan 30, 2024 6:33:16 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/kinjalagarwal1810/ip.git (master) completed! -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator analyzeRepos -INFO: [409/428] Analyzing https://github.com/tanqinyong/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:33:16 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jovantanyk/ip.git to complete... +Jan 30, 2024 6:33:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/NewtonKoh/ip.git (master)... +Jan 30, 2024 6:33:16 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/UdhayaShan1/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:33:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/UdhayaShan1/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/tanqinyong/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/tanqinyong/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/NewtonKoh/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:33:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/NewtonKoh/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:33:16 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/NewtonKoh/ip.git (master) completed! -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator analyzeRepos -INFO: [410/428] Analyzing https://github.com/theman-oj10/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/kailashgautham/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/theman-oj10/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/theman-oj10/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/kailashgautham/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/kailashgautham/ip.git (master) completed! -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator analyzeRepos -INFO: [411/428] Analyzing https://github.com/c-j-lh/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:33:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/UdhayaShan1/ip.git (master)... +Jan 30, 2024 6:33:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/UdhayaShan1/ip.git (master)... +Jan 30, 2024 6:33:17 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/UdhayaShan1/ip.git (master) completed! +Jan 30, 2024 6:33:17 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tanqinyong/ip.git completed! +Jan 30, 2024 6:33:17 AM reposense.report.ReportGenerator analyzeRepos +INFO: [409/428] Analyzing https://github.com/tanqinyong/ip.git (master)... +Jan 30, 2024 6:33:17 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Kappaccinoh/ip.git... +Jan 30, 2024 6:33:17 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Kappaccinoh/ip.git to complete... +Jan 30, 2024 6:33:17 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/tanqinyong/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:33:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/tanqinyong/ip.git (master)... +Jan 30, 2024 6:33:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/tanqinyong/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/c-j-lh/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/c-j-lh/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:33:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/tanqinyong/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:33:17 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/tanqinyong/ip.git (master) completed! -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 6:33:17 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/c-j-lh/ip.git completed! +Jan 30, 2024 6:33:17 AM reposense.report.ReportGenerator analyzeRepos +INFO: [410/428] Analyzing https://github.com/c-j-lh/ip.git (master)... +Jan 30, 2024 6:33:17 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/itstrueitstrueitsrealitsreal/ip.git... +Jan 30, 2024 6:33:17 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/itstrueitstrueitsrealitsreal/ip.git to complete... +Jan 30, 2024 6:33:17 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/c-j-lh/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:33:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/c-j-lh/ip.git (master)... +Jan 30, 2024 6:33:17 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/theman-oj10/ip.git completed! +Jan 30, 2024 6:33:17 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/agreatdayy/ip.git... +Jan 30, 2024 6:33:17 AM reposense.report.ReportGenerator analyzeRepos +INFO: [411/428] Analyzing https://github.com/theman-oj10/ip.git (master)... +Jan 30, 2024 6:33:17 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/agreatdayy/ip.git to complete... +Jan 30, 2024 6:33:17 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jovantanyk/ip.git completed! +Jan 30, 2024 6:33:17 AM reposense.report.ReportGenerator analyzeRepos INFO: [412/428] Analyzing https://github.com/jovantanyk/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:33:17 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/SampsonYe1999/ip.git... +Jan 30, 2024 6:33:17 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/theman-oj10/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 6:33:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/theman-oj10/ip.git (master)... +Jan 30, 2024 6:33:17 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/SampsonYe1999/ip.git to complete... +Jan 30, 2024 6:33:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/c-j-lh/ip.git (master)... +Jan 30, 2024 6:33:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/c-j-lh/ip.git (master)... +Jan 30, 2024 6:33:17 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/c-j-lh/ip.git (master) completed! +Jan 30, 2024 6:33:17 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jovantanyk/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:33:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jovantanyk/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:33:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jovantanyk/ip.git (master)... +Jan 30, 2024 6:33:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jovantanyk/ip.git (master)... +Jan 30, 2024 6:33:17 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jovantanyk/ip.git (master) completed! +Jan 30, 2024 6:33:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/theman-oj10/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:33:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/theman-oj10/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:33:17 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/theman-oj10/ip.git (master) completed! -Jan 30, 2024 2:09:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/c-j-lh/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 6:33:17 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Kappaccinoh/ip.git completed! +Jan 30, 2024 6:33:17 AM reposense.report.ReportGenerator analyzeRepos INFO: [413/428] Analyzing https://github.com/Kappaccinoh/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/c-j-lh/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/c-j-lh/ip.git (master) completed! -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator analyzeRepos -INFO: [414/428] Analyzing https://github.com/itstrueitstrueitsrealitsreal/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jovantanyk/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/UdhayaShan1/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:33:17 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Kappaccinoh/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:33:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Kappaccinoh/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jovantanyk/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jovantanyk/ip.git (master) completed! -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator analyzeRepos -INFO: [415/428] Analyzing https://github.com/agreatdayy/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:33:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Kappaccinoh/ip.git (master)... +Jan 30, 2024 6:33:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Kappaccinoh/ip.git (master)... +Jan 30, 2024 6:33:18 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Kappaccinoh/ip.git (master) completed! +Jan 30, 2024 6:33:18 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/itstrueitstrueitsrealitsreal/ip.git completed! +Jan 30, 2024 6:33:18 AM reposense.report.ReportGenerator analyzeRepos +INFO: [414/428] Analyzing https://github.com/itstrueitstrueitsrealitsreal/ip.git (master)... +Jan 30, 2024 6:33:18 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/itstrueitstrueitsrealitsreal/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:33:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/itstrueitstrueitsrealitsreal/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/UdhayaShan1/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/UdhayaShan1/ip.git (master) completed! -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 6:33:18 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/agreatdayy/ip.git completed! +Jan 30, 2024 6:33:18 AM reposense.report.ReportGenerator analyzeRepos +INFO: [415/428] Analyzing https://github.com/agreatdayy/ip.git (master)... +Jan 30, 2024 6:33:18 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/SampsonYe1999/ip.git completed! +Jan 30, 2024 6:33:18 AM reposense.report.ReportGenerator analyzeRepos INFO: [416/428] Analyzing https://github.com/SampsonYe1999/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:33:18 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/agreatdayy/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:33:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/agreatdayy/ip.git (master)... -Jan 30, 2024 2:09:55 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 6:33:18 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/SampsonYe1999/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 2:09:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 6:33:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/SampsonYe1999/ip.git (master)... -Jan 30, 2024 2:09:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:33:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/SampsonYe1999/ip.git (master)... -Jan 30, 2024 2:09:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:33:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/agreatdayy/ip.git (master)... -Jan 30, 2024 2:09:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:33:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/SampsonYe1999/ip.git (master)... -Jan 30, 2024 2:09:56 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:33:18 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/SampsonYe1999/ip.git (master) completed! -Jan 30, 2024 2:09:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:33:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/agreatdayy/ip.git (master)... -Jan 30, 2024 2:09:56 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:33:18 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/agreatdayy/ip.git (master) completed! -Jan 30, 2024 2:09:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Kappaccinoh/ip.git (master)... -Jan 30, 2024 2:09:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Kappaccinoh/ip.git (master)... -Jan 30, 2024 2:09:56 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Kappaccinoh/ip.git (master) completed! -Jan 30, 2024 2:09:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 6:33:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/itstrueitstrueitsrealitsreal/ip.git (master)... -Jan 30, 2024 2:09:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 6:33:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/itstrueitstrueitsrealitsreal/ip.git (master)... -Jan 30, 2024 2:09:56 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 6:33:18 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/itstrueitstrueitsrealitsreal/ip.git (master) completed! -Jan 30, 2024 2:09:56 AM reposense.report.ReportGenerator generateReposReport +Jan 30, 2024 6:33:18 AM reposense.report.ReportGenerator generateReposReport INFO: The report is generated at /home/runner/work/ip-dashboard/ip-dashboard/reposense-report -Jan 30, 2024 2:09:56 AM reposense.RepoSense main -INFO: Elapsed processing time: 35.32 second(s) +Jan 30, 2024 6:33:19 AM reposense.RepoSense main +INFO: Elapsed processing time: 1 minute(s) 23.91 second(s) diff --git a/summary.json b/summary.json index c87feb30..57144318 100644 --- a/summary.json +++ b/summary.json @@ -1 +1 @@ -{"repoSenseVersion":"6481806501","reportGeneratedTime":"Tue Jan 30 10:09:22 2024 UTC+08:00","reportGenerationTime":" 34.74 second(s)","zoneId":"UTC+08:00","reportTitle":"CS2103 iP Code Dashboard","repos":[{"location":{"location":"https://github.com/darryl-chan/ip.git","repoName":"ip","organization":"darryl-chan","domainName":"github"},"branch":"master","displayName":"darryl-chan/ip[master]","outputFolderName":"darryl-chan_ip_master"},{"location":{"location":"https://github.com/gowthaman-01/ip.git","repoName":"ip","organization":"gowthaman-01","domainName":"github"},"branch":"master","displayName":"gowthaman-01/ip[master]","outputFolderName":"gowthaman-01_ip_master"},{"location":{"location":"https://github.com/ChrisHo1341/ip.git","repoName":"ip","organization":"ChrisHo1341","domainName":"github"},"branch":"master","displayName":"ChrisHo1341/ip[master]","outputFolderName":"ChrisHo1341_ip_master"},{"location":{"location":"https://github.com/sebin0817/ip.git","repoName":"ip","organization":"sebin0817","domainName":"github"},"branch":"master","displayName":"sebin0817/ip[master]","outputFolderName":"sebin0817_ip_master"},{"location":{"location":"https://github.com/tanjiajiajun/ip.git","repoName":"ip","organization":"tanjiajiajun","domainName":"github"},"branch":"master","displayName":"tanjiajiajun/ip[master]","outputFolderName":"tanjiajiajun_ip_master"},{"location":{"location":"https://github.com/Arixeyeion/ip.git","repoName":"ip","organization":"Arixeyeion","domainName":"github"},"branch":"master","displayName":"Arixeyeion/ip[master]","outputFolderName":"Arixeyeion_ip_master"},{"location":{"location":"https://github.com/jeremiahlzz/ip.git","repoName":"ip","organization":"jeremiahlzz","domainName":"github"},"branch":"master","displayName":"jeremiahlzz/ip[master]","outputFolderName":"jeremiahlzz_ip_master"},{"location":{"location":"https://github.com/joenus/ip.git","repoName":"ip","organization":"joenus","domainName":"github"},"branch":"master","displayName":"joenus/ip[master]","outputFolderName":"joenus_ip_master"},{"location":{"location":"https://github.com/xinen26/ip.git","repoName":"ip","organization":"xinen26","domainName":"github"},"branch":"master","displayName":"xinen26/ip[master]","outputFolderName":"xinen26_ip_master"},{"location":{"location":"https://github.com/matthewken19/ip.git","repoName":"ip","organization":"matthewken19","domainName":"github"},"branch":"master","displayName":"matthewken19/ip[master]","outputFolderName":"matthewken19_ip_master"},{"location":{"location":"https://github.com/YuZizhen/ip.git","repoName":"ip","organization":"YuZizhen","domainName":"github"},"branch":"master","displayName":"YuZizhen/ip[master]","outputFolderName":"YuZizhen_ip_master"},{"location":{"location":"https://github.com/marclamp/ip.git","repoName":"ip","organization":"marclamp","domainName":"github"},"branch":"master","displayName":"marclamp/ip[master]","outputFolderName":"marclamp_ip_master"},{"location":{"location":"https://github.com/fy17ohhh/ip.git","repoName":"ip","organization":"fy17ohhh","domainName":"github"},"branch":"master","displayName":"fy17ohhh/ip[master]","outputFolderName":"fy17ohhh_ip_master"},{"location":{"location":"https://github.com/lihaoquan/ip.git","repoName":"ip","organization":"lihaoquan","domainName":"github"},"branch":"master","displayName":"lihaoquan/ip[master]","outputFolderName":"lihaoquan_ip_master"},{"location":{"location":"https://github.com/guohuang88/ip.git","repoName":"ip","organization":"guohuang88","domainName":"github"},"branch":"master","displayName":"guohuang88/ip[master]","outputFolderName":"guohuang88_ip_master"},{"location":{"location":"https://github.com/redcolorbicycle/ip.git","repoName":"ip","organization":"redcolorbicycle","domainName":"github"},"branch":"master","displayName":"redcolorbicycle/ip[master]","outputFolderName":"redcolorbicycle_ip_master"},{"location":{"location":"https://github.com/Jerome-j/ip.git","repoName":"ip","organization":"Jerome-j","domainName":"github"},"branch":"master","displayName":"Jerome-j/ip[master]","outputFolderName":"Jerome-j_ip_master"},{"location":{"location":"https://github.com/sethteo/ip.git","repoName":"ip","organization":"sethteo","domainName":"github"},"branch":"master","displayName":"sethteo/ip[master]","outputFolderName":"sethteo_ip_master"},{"location":{"location":"https://github.com/TopKec/ip.git","repoName":"ip","organization":"TopKec","domainName":"github"},"branch":"master","displayName":"TopKec/ip[master]","outputFolderName":"TopKec_ip_master"},{"location":{"location":"https://github.com/joelgoh1/ip.git","repoName":"ip","organization":"joelgoh1","domainName":"github"},"branch":"master","displayName":"joelgoh1/ip[master]","outputFolderName":"joelgoh1_ip_master"},{"location":{"location":"https://github.com/chewbum/ip.git","repoName":"ip","organization":"chewbum","domainName":"github"},"branch":"master","displayName":"chewbum/ip[master]","outputFolderName":"chewbum_ip_master"},{"location":{"location":"https://github.com/timothysashimi/ip.git","repoName":"ip","organization":"timothysashimi","domainName":"github"},"branch":"master","displayName":"timothysashimi/ip[master]","outputFolderName":"timothysashimi_ip_master"},{"location":{"location":"https://github.com/beefsausagee/ip.git","repoName":"ip","organization":"beefsausagee","domainName":"github"},"branch":"master","displayName":"beefsausagee/ip[master]","outputFolderName":"beefsausagee_ip_master"},{"location":{"location":"https://github.com/jaejayrome/ip.git","repoName":"ip","organization":"jaejayrome","domainName":"github"},"branch":"master","displayName":"jaejayrome/ip[master]","outputFolderName":"jaejayrome_ip_master"},{"location":{"location":"https://github.com/KhoonSun47/ip.git","repoName":"ip","organization":"KhoonSun47","domainName":"github"},"branch":"master","displayName":"KhoonSun47/ip[master]","outputFolderName":"KhoonSun47_ip_master"},{"location":{"location":"https://github.com/Dethada/ip.git","repoName":"ip","organization":"Dethada","domainName":"github"},"branch":"master","displayName":"Dethada/ip[master]","outputFolderName":"Dethada_ip_master"},{"location":{"location":"https://github.com/AL-ZT/ip.git","repoName":"ip","organization":"AL-ZT","domainName":"github"},"branch":"master","displayName":"AL-ZT/ip[master]","outputFolderName":"AL-ZT_ip_master"},{"location":{"location":"https://github.com/Javiery3889/ip.git","repoName":"ip","organization":"Javiery3889","domainName":"github"},"branch":"master","displayName":"Javiery3889/ip[master]","outputFolderName":"Javiery3889_ip_master"},{"location":{"location":"https://github.com/garywongkai/ip.git","repoName":"ip","organization":"garywongkai","domainName":"github"},"branch":"master","displayName":"garywongkai/ip[master]","outputFolderName":"garywongkai_ip_master"},{"location":{"location":"https://github.com/ys112/ip.git","repoName":"ip","organization":"ys112","domainName":"github"},"branch":"master","displayName":"ys112/ip[master]","outputFolderName":"ys112_ip_master"},{"location":{"location":"https://github.com/jmsandiegoo/ip.git","repoName":"ip","organization":"jmsandiegoo","domainName":"github"},"branch":"master","displayName":"jmsandiegoo/ip[master]","outputFolderName":"jmsandiegoo_ip_master"},{"location":{"location":"https://github.com/KohGuanZeh/ip.git","repoName":"ip","organization":"KohGuanZeh","domainName":"github"},"branch":"master","displayName":"KohGuanZeh/ip[master]","outputFolderName":"KohGuanZeh_ip_master"},{"location":{"location":"https://github.com/felixchanyy/ip.git","repoName":"ip","organization":"felixchanyy","domainName":"github"},"branch":"master","displayName":"felixchanyy/ip[master]","outputFolderName":"felixchanyy_ip_master"},{"location":{"location":"https://github.com/tanqinyong/ip.git","repoName":"ip","organization":"tanqinyong","domainName":"github"},"branch":"master","displayName":"tanqinyong/ip[master]","outputFolderName":"tanqinyong_ip_master"},{"location":{"location":"https://github.com/Hwww23/ip.git","repoName":"ip","organization":"Hwww23","domainName":"github"},"branch":"master","displayName":"Hwww23/ip[master]","outputFolderName":"Hwww23_ip_master"},{"location":{"location":"https://github.com/zengzihui/ip.git","repoName":"ip","organization":"zengzihui","domainName":"github"},"branch":"master","displayName":"zengzihui/ip[master]","outputFolderName":"zengzihui_ip_master"},{"location":{"location":"https://github.com/Pluiexo/ip.git","repoName":"ip","organization":"Pluiexo","domainName":"github"},"branch":"master","displayName":"Pluiexo/ip[master]","outputFolderName":"Pluiexo_ip_master"},{"location":{"location":"https://github.com/yap-zong-xin/ip.git","repoName":"ip","organization":"yap-zong-xin","domainName":"github"},"branch":"master","displayName":"yap-zong-xin/ip[master]","outputFolderName":"yap-zong-xin_ip_master"},{"location":{"location":"https://github.com/JonChong98/ip.git","repoName":"ip","organization":"JonChong98","domainName":"github"},"branch":"master","displayName":"JonChong98/ip[master]","outputFolderName":"JonChong98_ip_master"},{"location":{"location":"https://github.com/lokidoki102/ip.git","repoName":"ip","organization":"lokidoki102","domainName":"github"},"branch":"master","displayName":"lokidoki102/ip[master]","outputFolderName":"lokidoki102_ip_master"},{"location":{"location":"https://github.com/choowengyan/ip.git","repoName":"ip","organization":"choowengyan","domainName":"github"},"branch":"master","displayName":"choowengyan/ip[master]","outputFolderName":"choowengyan_ip_master"},{"location":{"location":"https://github.com/SherisseTJW/ip.git","repoName":"ip","organization":"SherisseTJW","domainName":"github"},"branch":"master","displayName":"SherisseTJW/ip[master]","outputFolderName":"SherisseTJW_ip_master"},{"location":{"location":"https://github.com/iynixil/ip.git","repoName":"ip","organization":"iynixil","domainName":"github"},"branch":"master","displayName":"iynixil/ip[master]","outputFolderName":"iynixil_ip_master"},{"location":{"location":"https://github.com/whitesnowx/ip.git","repoName":"ip","organization":"whitesnowx","domainName":"github"},"branch":"master","displayName":"whitesnowx/ip[master]","outputFolderName":"whitesnowx_ip_master"},{"location":{"location":"https://github.com/AwJoey/ip.git","repoName":"ip","organization":"AwJoey","domainName":"github"},"branch":"master","displayName":"AwJoey/ip[master]","outputFolderName":"AwJoey_ip_master"},{"location":{"location":"https://github.com/rickkoh/ip.git","repoName":"ip","organization":"rickkoh","domainName":"github"},"branch":"master","displayName":"rickkoh/ip[master]","outputFolderName":"rickkoh_ip_master"},{"location":{"location":"https://github.com/caitlyntang/ip.git","repoName":"ip","organization":"caitlyntang","domainName":"github"},"branch":"master","displayName":"caitlyntang/ip[master]","outputFolderName":"caitlyntang_ip_master"},{"location":{"location":"https://github.com/tsulim/ip.git","repoName":"ip","organization":"tsulim","domainName":"github"},"branch":"master","displayName":"tsulim/ip[master]","outputFolderName":"tsulim_ip_master"},{"location":{"location":"https://github.com/Darylgolden/ip.git","repoName":"ip","organization":"Darylgolden","domainName":"github"},"branch":"master","displayName":"Darylgolden/ip[master]","outputFolderName":"Darylgolden_ip_master"},{"location":{"location":"https://github.com/biinnnggggg/ip.git","repoName":"ip","organization":"biinnnggggg","domainName":"github"},"branch":"master","displayName":"biinnnggggg/ip[master]","outputFolderName":"biinnnggggg_ip_master"},{"location":{"location":"https://github.com/Ma-Yirui/ip.git","repoName":"ip","organization":"Ma-Yirui","domainName":"github"},"branch":"master","displayName":"Ma-Yirui/ip[master]","outputFolderName":"Ma-Yirui_ip_master"},{"location":{"location":"https://github.com/itstrueitstrueitsrealitsreal/ip.git","repoName":"ip","organization":"itstrueitstrueitsrealitsreal","domainName":"github"},"branch":"master","displayName":"itstrueitstrueitsrealitsreal/ip[master]","outputFolderName":"itstrueitstrueitsrealitsreal_ip_master"},{"location":{"location":"https://github.com/vnnamng/ip.git","repoName":"ip","organization":"vnnamng","domainName":"github"},"branch":"master","displayName":"vnnamng/ip[master]","outputFolderName":"vnnamng_ip_master"},{"location":{"location":"https://github.com/minwaiphyo/ip.git","repoName":"ip","organization":"minwaiphyo","domainName":"github"},"branch":"master","displayName":"minwaiphyo/ip[master]","outputFolderName":"minwaiphyo_ip_master"},{"location":{"location":"https://github.com/amanzainal/ip.git","repoName":"ip","organization":"amanzainal","domainName":"github"},"branch":"master","displayName":"amanzainal/ip[master]","outputFolderName":"amanzainal_ip_master"},{"location":{"location":"https://github.com/raysonchia/ip.git","repoName":"ip","organization":"raysonchia","domainName":"github"},"branch":"master","displayName":"raysonchia/ip[master]","outputFolderName":"raysonchia_ip_master"},{"location":{"location":"https://github.com/zoebelle-pang/ip.git","repoName":"ip","organization":"zoebelle-pang","domainName":"github"},"branch":"master","displayName":"zoebelle-pang/ip[master]","outputFolderName":"zoebelle-pang_ip_master"},{"location":{"location":"https://github.com/DominicFuMJ/ip.git","repoName":"ip","organization":"DominicFuMJ","domainName":"github"},"branch":"master","displayName":"DominicFuMJ/ip[master]","outputFolderName":"DominicFuMJ_ip_master"},{"location":{"location":"https://github.com/NeoHW/ip.git","repoName":"ip","organization":"NeoHW","domainName":"github"},"branch":"master","displayName":"NeoHW/ip[master]","outputFolderName":"NeoHW_ip_master"},{"location":{"location":"https://github.com/ZhiWei1010/ip.git","repoName":"ip","organization":"ZhiWei1010","domainName":"github"},"branch":"master","displayName":"ZhiWei1010/ip[master]","outputFolderName":"ZhiWei1010_ip_master"},{"location":{"location":"https://github.com/tankh99/ip.git","repoName":"ip","organization":"tankh99","domainName":"github"},"branch":"master","displayName":"tankh99/ip[master]","outputFolderName":"tankh99_ip_master"},{"location":{"location":"https://github.com/YuvBindal/ip.git","repoName":"ip","organization":"YuvBindal","domainName":"github"},"branch":"master","displayName":"YuvBindal/ip[master]","outputFolderName":"YuvBindal_ip_master"},{"location":{"location":"https://github.com/chiralcentre/ip.git","repoName":"ip","organization":"chiralcentre","domainName":"github"},"branch":"master","displayName":"chiralcentre/ip[master]","outputFolderName":"chiralcentre_ip_master"},{"location":{"location":"https://github.com/cocoanautz/ip.git","repoName":"ip","organization":"cocoanautz","domainName":"github"},"branch":"master","displayName":"cocoanautz/ip[master]","outputFolderName":"cocoanautz_ip_master"},{"location":{"location":"https://github.com/martinng01/ip.git","repoName":"ip","organization":"martinng01","domainName":"github"},"branch":"master","displayName":"martinng01/ip[master]","outputFolderName":"martinng01_ip_master"},{"location":{"location":"https://github.com/pjanthony2001/ip.git","repoName":"ip","organization":"pjanthony2001","domainName":"github"},"branch":"master","displayName":"pjanthony2001/ip[master]","outputFolderName":"pjanthony2001_ip_master"},{"location":{"location":"https://github.com/yuechen2001/ip.git","repoName":"ip","organization":"yuechen2001","domainName":"github"},"branch":"master","displayName":"yuechen2001/ip[master]","outputFolderName":"yuechen2001_ip_master"},{"location":{"location":"https://github.com/SampsonYe1999/ip.git","repoName":"ip","organization":"SampsonYe1999","domainName":"github"},"branch":"master","displayName":"SampsonYe1999/ip[master]","outputFolderName":"SampsonYe1999_ip_master"},{"location":{"location":"https://github.com/ejnan/ip.git","repoName":"ip","organization":"ejnan","domainName":"github"},"branch":"master","displayName":"ejnan/ip[master]","outputFolderName":"ejnan_ip_master"},{"location":{"location":"https://github.com/c-j-lh/ip.git","repoName":"ip","organization":"c-j-lh","domainName":"github"},"branch":"master","displayName":"c-j-lh/ip[master]","outputFolderName":"c-j-lh_ip_master"},{"location":{"location":"https://github.com/xiaorui-ui/ip.git","repoName":"ip","organization":"xiaorui-ui","domainName":"github"},"branch":"master","displayName":"xiaorui-ui/ip[master]","outputFolderName":"xiaorui-ui_ip_master"},{"location":{"location":"https://github.com/qinboan/ip.git","repoName":"ip","organization":"qinboan","domainName":"github"},"branch":"master","displayName":"qinboan/ip[master]","outputFolderName":"qinboan_ip_master"},{"location":{"location":"https://github.com/qinxutan/ip.git","repoName":"ip","organization":"qinxutan","domainName":"github"},"branch":"master","displayName":"qinxutan/ip[master]","outputFolderName":"qinxutan_ip_master"},{"location":{"location":"https://github.com/S-Aishvarya/ip.git","repoName":"ip","organization":"S-Aishvarya","domainName":"github"},"branch":"master","displayName":"S-Aishvarya/ip[master]","outputFolderName":"S-Aishvarya_ip_master"},{"location":{"location":"https://github.com/zhekaiii/ip.git","repoName":"ip","organization":"zhekaiii","domainName":"github"},"branch":"master","displayName":"zhekaiii/ip[master]","outputFolderName":"zhekaiii_ip_master"},{"location":{"location":"https://github.com/taeewonnn/ip.git","repoName":"ip","organization":"taeewonnn","domainName":"github"},"branch":"master","displayName":"taeewonnn/ip[master]","outputFolderName":"taeewonnn_ip_master"},{"location":{"location":"https://github.com/hjungwoo01/ip.git","repoName":"ip","organization":"hjungwoo01","domainName":"github"},"branch":"master","displayName":"hjungwoo01/ip[master]","outputFolderName":"hjungwoo01_ip_master"},{"location":{"location":"https://github.com/ForAeons/ip.git","repoName":"ip","organization":"ForAeons","domainName":"github"},"branch":"master","displayName":"ForAeons/ip[master]","outputFolderName":"ForAeons_ip_master"},{"location":{"location":"https://github.com/minghowC/ip.git","repoName":"ip","organization":"minghowC","domainName":"github"},"branch":"master","displayName":"minghowC/ip[master]","outputFolderName":"minghowC_ip_master"},{"location":{"location":"https://github.com/E0735389/ip.git","repoName":"ip","organization":"E0735389","domainName":"github"},"branch":"master","displayName":"E0735389/ip[master]","outputFolderName":"E0735389_ip_master"},{"location":{"location":"https://github.com/Ty-stan0417/ip.git","repoName":"ip","organization":"Ty-stan0417","domainName":"github"},"branch":"master","displayName":"Ty-stan0417/ip[master]","outputFolderName":"Ty-stan0417_ip_master"},{"location":{"location":"https://github.com/dabzpengu/ip.git","repoName":"ip","organization":"dabzpengu","domainName":"github"},"branch":"master","displayName":"dabzpengu/ip[master]","outputFolderName":"dabzpengu_ip_master"},{"location":{"location":"https://github.com/rizkidelta/ip.git","repoName":"ip","organization":"rizkidelta","domainName":"github"},"branch":"master","displayName":"rizkidelta/ip[master]","outputFolderName":"rizkidelta_ip_master"},{"location":{"location":"https://github.com/wilsonwid/ip.git","repoName":"ip","organization":"wilsonwid","domainName":"github"},"branch":"master","displayName":"wilsonwid/ip[master]","outputFolderName":"wilsonwid_ip_master"},{"location":{"location":"https://github.com/chiageng/ip.git","repoName":"ip","organization":"chiageng","domainName":"github"},"branch":"master","displayName":"chiageng/ip[master]","outputFolderName":"chiageng_ip_master"},{"location":{"location":"https://github.com/julia-cp/ip.git","repoName":"ip","organization":"julia-cp","domainName":"github"},"branch":"master","displayName":"julia-cp/ip[master]","outputFolderName":"julia-cp_ip_master"},{"location":{"location":"https://github.com/ZHANGTIANYAO1/ip.git","repoName":"ip","organization":"ZHANGTIANYAO1","domainName":"github"},"branch":"master","displayName":"ZHANGTIANYAO1/ip[master]","outputFolderName":"ZHANGTIANYAO1_ip_master"},{"location":{"location":"https://github.com/LifHoshi/ip.git","repoName":"ip","organization":"LifHoshi","domainName":"github"},"branch":"master","displayName":"LifHoshi/ip[master]","outputFolderName":"LifHoshi_ip_master"},{"location":{"location":"https://github.com/ananya21/ip.git","repoName":"ip","organization":"ananya21","domainName":"github"},"branch":"master","displayName":"ananya21/ip[master]","outputFolderName":"ananya21_ip_master"},{"location":{"location":"https://github.com/acekhoon/ip.git","repoName":"ip","organization":"acekhoon","domainName":"github"},"branch":"master","displayName":"acekhoon/ip[master]","outputFolderName":"acekhoon_ip_master"},{"location":{"location":"https://github.com/willowisp01/ip.git","repoName":"ip","organization":"willowisp01","domainName":"github"},"branch":"master","displayName":"willowisp01/ip[master]","outputFolderName":"willowisp01_ip_master"},{"location":{"location":"https://github.com/Jajared/ip.git","repoName":"ip","organization":"Jajared","domainName":"github"},"branch":"master","displayName":"Jajared/ip[master]","outputFolderName":"Jajared_ip_master"},{"location":{"location":"https://github.com/JerryO3/ip.git","repoName":"ip","organization":"JerryO3","domainName":"github"},"branch":"master","displayName":"JerryO3/ip[master]","outputFolderName":"JerryO3_ip_master"},{"location":{"location":"https://github.com/cyqjoseph/ip.git","repoName":"ip","organization":"cyqjoseph","domainName":"github"},"branch":"master","displayName":"cyqjoseph/ip[master]","outputFolderName":"cyqjoseph_ip_master"},{"location":{"location":"https://github.com/jieqiboh/ip.git","repoName":"ip","organization":"jieqiboh","domainName":"github"},"branch":"master","displayName":"jieqiboh/ip[master]","outputFolderName":"jieqiboh_ip_master"},{"location":{"location":"https://github.com/theman-oj10/ip.git","repoName":"ip","organization":"theman-oj10","domainName":"github"},"branch":"master","displayName":"theman-oj10/ip[master]","outputFolderName":"theman-oj10_ip_master"},{"location":{"location":"https://github.com/owenong1/ip.git","repoName":"ip","organization":"owenong1","domainName":"github"},"branch":"master","displayName":"owenong1/ip[master]","outputFolderName":"owenong1_ip_master"},{"location":{"location":"https://github.com/aureliony/ip.git","repoName":"ip","organization":"aureliony","domainName":"github"},"branch":"master","displayName":"aureliony/ip[master]","outputFolderName":"aureliony_ip_master"},{"location":{"location":"https://github.com/yisiox/ip.git","repoName":"ip","organization":"yisiox","domainName":"github"},"branch":"master","displayName":"yisiox/ip[master]","outputFolderName":"yisiox_ip_master"},{"location":{"location":"https://github.com/Darkarche3/ip.git","repoName":"ip","organization":"Darkarche3","domainName":"github"},"branch":"master","displayName":"Darkarche3/ip[master]","outputFolderName":"Darkarche3_ip_master"},{"location":{"location":"https://github.com/Jolonauh/ip.git","repoName":"ip","organization":"Jolonauh","domainName":"github"},"branch":"master","displayName":"Jolonauh/ip[master]","outputFolderName":"Jolonauh_ip_master"},{"location":{"location":"https://github.com/kervyntan/ip.git","repoName":"ip","organization":"kervyntan","domainName":"github"},"branch":"master","displayName":"kervyntan/ip[master]","outputFolderName":"kervyntan_ip_master"},{"location":{"location":"https://github.com/yashpola/ip.git","repoName":"ip","organization":"yashpola","domainName":"github"},"branch":"master","displayName":"yashpola/ip[master]","outputFolderName":"yashpola_ip_master"},{"location":{"location":"https://github.com/wongkj12/ip.git","repoName":"ip","organization":"wongkj12","domainName":"github"},"branch":"master","displayName":"wongkj12/ip[master]","outputFolderName":"wongkj12_ip_master"},{"location":{"location":"https://github.com/tituschewxj/ip.git","repoName":"ip","organization":"tituschewxj","domainName":"github"},"branch":"master","displayName":"tituschewxj/ip[master]","outputFolderName":"tituschewxj_ip_master"},{"location":{"location":"https://github.com/Zer0Legion/ip.git","repoName":"ip","organization":"Zer0Legion","domainName":"github"},"branch":"master","displayName":"Zer0Legion/ip[master]","outputFolderName":"Zer0Legion_ip_master"},{"location":{"location":"https://github.com/g-tejas/ip.git","repoName":"ip","organization":"g-tejas","domainName":"github"},"branch":"master","displayName":"g-tejas/ip[master]","outputFolderName":"g-tejas_ip_master"},{"location":{"location":"https://github.com/legionlegion/ip.git","repoName":"ip","organization":"legionlegion","domainName":"github"},"branch":"master","displayName":"legionlegion/ip[master]","outputFolderName":"legionlegion_ip_master"},{"location":{"location":"https://github.com/tanguoyang/ip.git","repoName":"ip","organization":"tanguoyang","domainName":"github"},"branch":"master","displayName":"tanguoyang/ip[master]","outputFolderName":"tanguoyang_ip_master"},{"location":{"location":"https://github.com/jovantanyk/ip.git","repoName":"ip","organization":"jovantanyk","domainName":"github"},"branch":"master","displayName":"jovantanyk/ip[master]","outputFolderName":"jovantanyk_ip_master"},{"location":{"location":"https://github.com/Xilef121/ip.git","repoName":"ip","organization":"Xilef121","domainName":"github"},"branch":"master","displayName":"Xilef121/ip[master]","outputFolderName":"Xilef121_ip_master"},{"location":{"location":"https://github.com/ziiqii/ip.git","repoName":"ip","organization":"ziiqii","domainName":"github"},"branch":"master","displayName":"ziiqii/ip[master]","outputFolderName":"ziiqii_ip_master"},{"location":{"location":"https://github.com/Bandov/ip.git","repoName":"ip","organization":"Bandov","domainName":"github"},"branch":"master","displayName":"Bandov/ip[master]","outputFolderName":"Bandov_ip_master"},{"location":{"location":"https://github.com/appleraincoat/ip.git","repoName":"ip","organization":"appleraincoat","domainName":"github"},"branch":"master","displayName":"appleraincoat/ip[master]","outputFolderName":"appleraincoat_ip_master"},{"location":{"location":"https://github.com/belligerentbeagle/ip.git","repoName":"ip","organization":"belligerentbeagle","domainName":"github"},"branch":"master","displayName":"belligerentbeagle/ip[master]","outputFolderName":"belligerentbeagle_ip_master"},{"location":{"location":"https://github.com/limrik/ip.git","repoName":"ip","organization":"limrik","domainName":"github"},"branch":"master","displayName":"limrik/ip[master]","outputFolderName":"limrik_ip_master"},{"location":{"location":"https://github.com/Tsenrae/ip.git","repoName":"ip","organization":"Tsenrae","domainName":"github"},"branch":"master","displayName":"Tsenrae/ip[master]","outputFolderName":"Tsenrae_ip_master"},{"location":{"location":"https://github.com/nichee/ip.git","repoName":"ip","organization":"nichee","domainName":"github"},"branch":"master","displayName":"nichee/ip[master]","outputFolderName":"nichee_ip_master"},{"location":{"location":"https://github.com/justincred/ip.git","repoName":"ip","organization":"justincred","domainName":"github"},"branch":"master","displayName":"justincred/ip[master]","outputFolderName":"justincred_ip_master"},{"location":{"location":"https://github.com/Tanzhiheng26/ip.git","repoName":"ip","organization":"Tanzhiheng26","domainName":"github"},"branch":"master","displayName":"Tanzhiheng26/ip[master]","outputFolderName":"Tanzhiheng26_ip_master"},{"location":{"location":"https://github.com/cliftonchee/ip.git","repoName":"ip","organization":"cliftonchee","domainName":"github"},"branch":"master","displayName":"cliftonchee/ip[master]","outputFolderName":"cliftonchee_ip_master"},{"location":{"location":"https://github.com/SimHanKiong/ip.git","repoName":"ip","organization":"SimHanKiong","domainName":"github"},"branch":"master","displayName":"SimHanKiong/ip[master]","outputFolderName":"SimHanKiong_ip_master"},{"location":{"location":"https://github.com/ChrysanthemumT/ip.git","repoName":"ip","organization":"ChrysanthemumT","domainName":"github"},"branch":"master","displayName":"ChrysanthemumT/ip[master]","outputFolderName":"ChrysanthemumT_ip_master"},{"location":{"location":"https://github.com/jyztintan/ip.git","repoName":"ip","organization":"jyztintan","domainName":"github"},"branch":"master","displayName":"jyztintan/ip[master]","outputFolderName":"jyztintan_ip_master"},{"location":{"location":"https://github.com/ondretann/ip.git","repoName":"ip","organization":"ondretann","domainName":"github"},"branch":"master","displayName":"ondretann/ip[master]","outputFolderName":"ondretann_ip_master"},{"location":{"location":"https://github.com/bryanyee33/ip.git","repoName":"ip","organization":"bryanyee33","domainName":"github"},"branch":"master","displayName":"bryanyee33/ip[master]","outputFolderName":"bryanyee33_ip_master"},{"location":{"location":"https://github.com/chonghaoen/ip.git","repoName":"ip","organization":"chonghaoen","domainName":"github"},"branch":"master","displayName":"chonghaoen/ip[master]","outputFolderName":"chonghaoen_ip_master"},{"location":{"location":"https://github.com/ronnnnnnnnn/ip.git","repoName":"ip","organization":"ronnnnnnnnn","domainName":"github"},"branch":"master","displayName":"ronnnnnnnnn/ip[master]","outputFolderName":"ronnnnnnnnn_ip_master"},{"location":{"location":"https://github.com/ChuaZenKhoon/ip.git","repoName":"ip","organization":"ChuaZenKhoon","domainName":"github"},"branch":"master","displayName":"ChuaZenKhoon/ip[master]","outputFolderName":"ChuaZenKhoon_ip_master"},{"location":{"location":"https://github.com/gerteck/ip.git","repoName":"ip","organization":"gerteck","domainName":"github"},"branch":"master","displayName":"gerteck/ip[master]","outputFolderName":"gerteck_ip_master"},{"location":{"location":"https://github.com/ReganChoy/ip.git","repoName":"ip","organization":"ReganChoy","domainName":"github"},"branch":"master","displayName":"ReganChoy/ip[master]","outputFolderName":"ReganChoy_ip_master"},{"location":{"location":"https://github.com/zhuuyicheng/ip.git","repoName":"ip","organization":"zhuuyicheng","domainName":"github"},"branch":"master","displayName":"zhuuyicheng/ip[master]","outputFolderName":"zhuuyicheng_ip_master"},{"location":{"location":"https://github.com/chaaaaun/ip.git","repoName":"ip","organization":"chaaaaun","domainName":"github"},"branch":"master","displayName":"chaaaaun/ip[master]","outputFolderName":"chaaaaun_ip_master"},{"location":{"location":"https://github.com/ChuaZiLong/ip.git","repoName":"ip","organization":"ChuaZiLong","domainName":"github"},"branch":"master","displayName":"ChuaZiLong/ip[master]","outputFolderName":"ChuaZiLong_ip_master"},{"location":{"location":"https://github.com/Benson15912/ip.git","repoName":"ip","organization":"Benson15912","domainName":"github"},"branch":"master","displayName":"Benson15912/ip[master]","outputFolderName":"Benson15912_ip_master"},{"location":{"location":"https://github.com/c-wenlong/ip.git","repoName":"ip","organization":"c-wenlong","domainName":"github"},"branch":"master","displayName":"c-wenlong/ip[master]","outputFolderName":"c-wenlong_ip_master"},{"location":{"location":"https://github.com/gavin331/ip.git","repoName":"ip","organization":"gavin331","domainName":"github"},"branch":"master","displayName":"gavin331/ip[master]","outputFolderName":"gavin331_ip_master"},{"location":{"location":"https://github.com/CJerrong/ip.git","repoName":"ip","organization":"CJerrong","domainName":"github"},"branch":"master","displayName":"CJerrong/ip[master]","outputFolderName":"CJerrong_ip_master"},{"location":{"location":"https://github.com/ibnu2651/ip.git","repoName":"ip","organization":"ibnu2651","domainName":"github"},"branch":"master","displayName":"ibnu2651/ip[master]","outputFolderName":"ibnu2651_ip_master"},{"location":{"location":"https://github.com/1rbg/ip.git","repoName":"ip","organization":"1rbg","domainName":"github"},"branch":"master","displayName":"1rbg/ip[master]","outputFolderName":"1rbg_ip_master"},{"location":{"location":"https://github.com/alvinnzz/ip.git","repoName":"ip","organization":"alvinnzz","domainName":"github"},"branch":"master","displayName":"alvinnzz/ip[master]","outputFolderName":"alvinnzz_ip_master"},{"location":{"location":"https://github.com/whelan-low/ip.git","repoName":"ip","organization":"whelan-low","domainName":"github"},"branch":"master","displayName":"whelan-low/ip[master]","outputFolderName":"whelan-low_ip_master"},{"location":{"location":"https://github.com/ReflectiveObsidian/ip.git","repoName":"ip","organization":"ReflectiveObsidian","domainName":"github"},"branch":"master","displayName":"ReflectiveObsidian/ip[master]","outputFolderName":"ReflectiveObsidian_ip_master"},{"location":{"location":"https://github.com/kwuunnn/ip.git","repoName":"ip","organization":"kwuunnn","domainName":"github"},"branch":"master","displayName":"kwuunnn/ip[master]","outputFolderName":"kwuunnn_ip_master"},{"location":{"location":"https://github.com/billyhoce/ip.git","repoName":"ip","organization":"billyhoce","domainName":"github"},"branch":"master","displayName":"billyhoce/ip[master]","outputFolderName":"billyhoce_ip_master"},{"location":{"location":"https://github.com/Ryo-Seah/ip.git","repoName":"ip","organization":"Ryo-Seah","domainName":"github"},"branch":"master","displayName":"Ryo-Seah/ip[master]","outputFolderName":"Ryo-Seah_ip_master"},{"location":{"location":"https://github.com/meowwtama/ip.git","repoName":"ip","organization":"meowwtama","domainName":"github"},"branch":"master","displayName":"meowwtama/ip[master]","outputFolderName":"meowwtama_ip_master"},{"location":{"location":"https://github.com/gingerbreaf/ip.git","repoName":"ip","organization":"gingerbreaf","domainName":"github"},"branch":"master","displayName":"gingerbreaf/ip[master]","outputFolderName":"gingerbreaf_ip_master"},{"location":{"location":"https://github.com/yeoshuheng/ip.git","repoName":"ip","organization":"yeoshuheng","domainName":"github"},"branch":"master","displayName":"yeoshuheng/ip[master]","outputFolderName":"yeoshuheng_ip_master"},{"location":{"location":"https://github.com/shaunlxw/ip.git","repoName":"ip","organization":"shaunlxw","domainName":"github"},"branch":"master","displayName":"shaunlxw/ip[master]","outputFolderName":"shaunlxw_ip_master"},{"location":{"location":"https://github.com/DingBao-sys/ip.git","repoName":"ip","organization":"DingBao-sys","domainName":"github"},"branch":"master","displayName":"DingBao-sys/ip[master]","outputFolderName":"DingBao-sys_ip_master"},{"location":{"location":"https://github.com/ashleyclx/ip.git","repoName":"ip","organization":"ashleyclx","domainName":"github"},"branch":"master","displayName":"ashleyclx/ip[master]","outputFolderName":"ashleyclx_ip_master"},{"location":{"location":"https://github.com/TheodoreKooo/ip.git","repoName":"ip","organization":"TheodoreKooo","domainName":"github"},"branch":"master","displayName":"TheodoreKooo/ip[master]","outputFolderName":"TheodoreKooo_ip_master"},{"location":{"location":"https://github.com/casaarlai/ip.git","repoName":"ip","organization":"casaarlai","domainName":"github"},"branch":"master","displayName":"casaarlai/ip[master]","outputFolderName":"casaarlai_ip_master"},{"location":{"location":"https://github.com/sun-ruiheng/ip.git","repoName":"ip","organization":"sun-ruiheng","domainName":"github"},"branch":"master","displayName":"sun-ruiheng/ip[master]","outputFolderName":"sun-ruiheng_ip_master"},{"location":{"location":"https://github.com/Fidget-Spinner/ip.git","repoName":"ip","organization":"Fidget-Spinner","domainName":"github"},"branch":"master","displayName":"Fidget-Spinner/ip[master]","outputFolderName":"Fidget-Spinner_ip_master"},{"location":{"location":"https://github.com/Cedricaca/ip.git","repoName":"ip","organization":"Cedricaca","domainName":"github"},"branch":"master","displayName":"Cedricaca/ip[master]","outputFolderName":"Cedricaca_ip_master"},{"location":{"location":"https://github.com/YowSiaoKang/ip.git","repoName":"ip","organization":"YowSiaoKang","domainName":"github"},"branch":"master","displayName":"YowSiaoKang/ip[master]","outputFolderName":"YowSiaoKang_ip_master"},{"location":{"location":"https://github.com/J-wang-CSMA/ip.git","repoName":"ip","organization":"J-wang-CSMA","domainName":"github"},"branch":"master","displayName":"J-wang-CSMA/ip[master]","outputFolderName":"J-wang-CSMA_ip_master"},{"location":{"location":"https://github.com/Ragnapop/ip.git","repoName":"ip","organization":"Ragnapop","domainName":"github"},"branch":"master","displayName":"Ragnapop/ip[master]","outputFolderName":"Ragnapop_ip_master"},{"location":{"location":"https://github.com/UdhayaShan1/ip.git","repoName":"ip","organization":"UdhayaShan1","domainName":"github"},"branch":"master","displayName":"UdhayaShan1/ip[master]","outputFolderName":"UdhayaShan1_ip_master"},{"location":{"location":"https://github.com/tayziyi/ip.git","repoName":"ip","organization":"tayziyi","domainName":"github"},"branch":"master","displayName":"tayziyi/ip[master]","outputFolderName":"tayziyi_ip_master"},{"location":{"location":"https://github.com/blaukc/ip.git","repoName":"ip","organization":"blaukc","domainName":"github"},"branch":"master","displayName":"blaukc/ip[master]","outputFolderName":"blaukc_ip_master"},{"location":{"location":"https://github.com/kokerinks/ip.git","repoName":"ip","organization":"kokerinks","domainName":"github"},"branch":"master","displayName":"kokerinks/ip[master]","outputFolderName":"kokerinks_ip_master"},{"location":{"location":"https://github.com/mahadhir247/ip.git","repoName":"ip","organization":"mahadhir247","domainName":"github"},"branch":"master","displayName":"mahadhir247/ip[master]","outputFolderName":"mahadhir247_ip_master"},{"location":{"location":"https://github.com/delishad21/ip.git","repoName":"ip","organization":"delishad21","domainName":"github"},"branch":"master","displayName":"delishad21/ip[master]","outputFolderName":"delishad21_ip_master"},{"location":{"location":"https://github.com/gavingoh99/ip.git","repoName":"ip","organization":"gavingoh99","domainName":"github"},"branch":"master","displayName":"gavingoh99/ip[master]","outputFolderName":"gavingoh99_ip_master"},{"location":{"location":"https://github.com/kjw142857/ip.git","repoName":"ip","organization":"kjw142857","domainName":"github"},"branch":"master","displayName":"kjw142857/ip[master]","outputFolderName":"kjw142857_ip_master"},{"location":{"location":"https://github.com/dayn-1/ip.git","repoName":"ip","organization":"dayn-1","domainName":"github"},"branch":"master","displayName":"dayn-1/ip[master]","outputFolderName":"dayn-1_ip_master"},{"location":{"location":"https://github.com/macareonie/ip.git","repoName":"ip","organization":"macareonie","domainName":"github"},"branch":"master","displayName":"macareonie/ip[master]","outputFolderName":"macareonie_ip_master"},{"location":{"location":"https://github.com/Rikko1204/ip.git","repoName":"ip","organization":"Rikko1204","domainName":"github"},"branch":"master","displayName":"Rikko1204/ip[master]","outputFolderName":"Rikko1204_ip_master"},{"location":{"location":"https://github.com/teojunda/ip.git","repoName":"ip","organization":"teojunda","domainName":"github"},"branch":"master","displayName":"teojunda/ip[master]","outputFolderName":"teojunda_ip_master"},{"location":{"location":"https://github.com/thewongdylan/ip.git","repoName":"ip","organization":"thewongdylan","domainName":"github"},"branch":"master","displayName":"thewongdylan/ip[master]","outputFolderName":"thewongdylan_ip_master"},{"location":{"location":"https://github.com/bertrandong/ip.git","repoName":"ip","organization":"bertrandong","domainName":"github"},"branch":"master","displayName":"bertrandong/ip[master]","outputFolderName":"bertrandong_ip_master"},{"location":{"location":"https://github.com/rertyy/ip.git","repoName":"ip","organization":"rertyy","domainName":"github"},"branch":"master","displayName":"rertyy/ip[master]","outputFolderName":"rertyy_ip_master"},{"location":{"location":"https://github.com/soons1/ip.git","repoName":"ip","organization":"soons1","domainName":"github"},"branch":"master","displayName":"soons1/ip[master]","outputFolderName":"soons1_ip_master"},{"location":{"location":"https://github.com/solomonng2001/ip.git","repoName":"ip","organization":"solomonng2001","domainName":"github"},"branch":"master","displayName":"solomonng2001/ip[master]","outputFolderName":"solomonng2001_ip_master"},{"location":{"location":"https://github.com/guanquann/ip.git","repoName":"ip","organization":"guanquann","domainName":"github"},"branch":"master","displayName":"guanquann/ip[master]","outputFolderName":"guanquann_ip_master"},{"location":{"location":"https://github.com/YuSoonZ/ip.git","repoName":"ip","organization":"YuSoonZ","domainName":"github"},"branch":"master","displayName":"YuSoonZ/ip[master]","outputFolderName":"YuSoonZ_ip_master"},{"location":{"location":"https://github.com/JuliaPoo/ip.git","repoName":"ip","organization":"JuliaPoo","domainName":"github"},"branch":"master","displayName":"JuliaPoo/ip[master]","outputFolderName":"JuliaPoo_ip_master"},{"location":{"location":"https://github.com/dillontkh/ip.git","repoName":"ip","organization":"dillontkh","domainName":"github"},"branch":"master","displayName":"dillontkh/ip[master]","outputFolderName":"dillontkh_ip_master"},{"location":{"location":"https://github.com/camille-readbean/ip.git","repoName":"ip","organization":"camille-readbean","domainName":"github"},"branch":"master","displayName":"camille-readbean/ip[master]","outputFolderName":"camille-readbean_ip_master"},{"location":{"location":"https://github.com/ruijietay/ip.git","repoName":"ip","organization":"ruijietay","domainName":"github"},"branch":"master","displayName":"ruijietay/ip[master]","outputFolderName":"ruijietay_ip_master"},{"location":{"location":"https://github.com/HM33-Stu/ip.git","repoName":"ip","organization":"HM33-Stu","domainName":"github"},"branch":"master","displayName":"HM33-Stu/ip[master]","outputFolderName":"HM33-Stu_ip_master"},{"location":{"location":"https://github.com/nobodyishappy/ip.git","repoName":"ip","organization":"nobodyishappy","domainName":"github"},"branch":"master","displayName":"nobodyishappy/ip[master]","outputFolderName":"nobodyishappy_ip_master"},{"location":{"location":"https://github.com/yadunut/ip.git","repoName":"ip","organization":"yadunut","domainName":"github"},"branch":"master","displayName":"yadunut/ip[master]","outputFolderName":"yadunut_ip_master"},{"location":{"location":"https://github.com/breezetall/ip.git","repoName":"ip","organization":"breezetall","domainName":"github"},"branch":"master","displayName":"breezetall/ip[master]","outputFolderName":"breezetall_ip_master"},{"location":{"location":"https://github.com/jjchee77/ip.git","repoName":"ip","organization":"jjchee77","domainName":"github"},"branch":"master","displayName":"jjchee77/ip[master]","outputFolderName":"jjchee77_ip_master"},{"location":{"location":"https://github.com/BryanL2303/ip.git","repoName":"ip","organization":"BryanL2303","domainName":"github"},"branch":"master","displayName":"BryanL2303/ip[master]","outputFolderName":"BryanL2303_ip_master"},{"location":{"location":"https://github.com/RyanNgWH/ip.git","repoName":"ip","organization":"RyanNgWH","domainName":"github"},"branch":"master","displayName":"RyanNgWH/ip[master]","outputFolderName":"RyanNgWH_ip_master"},{"location":{"location":"https://github.com/Jaspertzx/ip.git","repoName":"ip","organization":"Jaspertzx","domainName":"github"},"branch":"master","displayName":"Jaspertzx/ip[master]","outputFolderName":"Jaspertzx_ip_master"},{"location":{"location":"https://github.com/smolegz/ip.git","repoName":"ip","organization":"smolegz","domainName":"github"},"branch":"master","displayName":"smolegz/ip[master]","outputFolderName":"smolegz_ip_master"},{"location":{"location":"https://github.com/azumieflare/ip.git","repoName":"ip","organization":"azumieflare","domainName":"github"},"branch":"master","displayName":"azumieflare/ip[master]","outputFolderName":"azumieflare_ip_master"},{"location":{"location":"https://github.com/javierng2knus/ip.git","repoName":"ip","organization":"javierng2knus","domainName":"github"},"branch":"master","displayName":"javierng2knus/ip[master]","outputFolderName":"javierng2knus_ip_master"},{"location":{"location":"https://github.com/SimKianSeng/ip.git","repoName":"ip","organization":"SimKianSeng","domainName":"github"},"branch":"master","displayName":"SimKianSeng/ip[master]","outputFolderName":"SimKianSeng_ip_master"},{"location":{"location":"https://github.com/jasperng-nus/ip.git","repoName":"ip","organization":"jasperng-nus","domainName":"github"},"branch":"master","displayName":"jasperng-nus/ip[master]","outputFolderName":"jasperng-nus_ip_master"},{"location":{"location":"https://github.com/HongRay/ip.git","repoName":"ip","organization":"HongRay","domainName":"github"},"branch":"master","displayName":"HongRay/ip[master]","outputFolderName":"HongRay_ip_master"},{"location":{"location":"https://github.com/kailashgautham/ip.git","repoName":"ip","organization":"kailashgautham","domainName":"github"},"branch":"master","displayName":"kailashgautham/ip[master]","outputFolderName":"kailashgautham_ip_master"},{"location":{"location":"https://github.com/donwong2308/ip.git","repoName":"ip","organization":"donwong2308","domainName":"github"},"branch":"master","displayName":"donwong2308/ip[master]","outputFolderName":"donwong2308_ip_master"},{"location":{"location":"https://github.com/jayllo-c/ip.git","repoName":"ip","organization":"jayllo-c","domainName":"github"},"branch":"master","displayName":"jayllo-c/ip[master]","outputFolderName":"jayllo-c_ip_master"},{"location":{"location":"https://github.com/cheahTJ/ip.git","repoName":"ip","organization":"cheahTJ","domainName":"github"},"branch":"master","displayName":"cheahTJ/ip[master]","outputFolderName":"cheahTJ_ip_master"},{"location":{"location":"https://github.com/triciiaaa/ip.git","repoName":"ip","organization":"triciiaaa","domainName":"github"},"branch":"master","displayName":"triciiaaa/ip[master]","outputFolderName":"triciiaaa_ip_master"},{"location":{"location":"https://github.com/larainezo/ip.git","repoName":"ip","organization":"larainezo","domainName":"github"},"branch":"master","displayName":"larainezo/ip[master]","outputFolderName":"larainezo_ip_master"},{"location":{"location":"https://github.com/kailinteoo/ip.git","repoName":"ip","organization":"kailinteoo","domainName":"github"},"branch":"master","displayName":"kailinteoo/ip[master]","outputFolderName":"kailinteoo_ip_master"},{"location":{"location":"https://github.com/brennalaurentan/ip.git","repoName":"ip","organization":"brennalaurentan","domainName":"github"},"branch":"master","displayName":"brennalaurentan/ip[master]","outputFolderName":"brennalaurentan_ip_master"},{"location":{"location":"https://github.com/GiselleTan/ip.git","repoName":"ip","organization":"GiselleTan","domainName":"github"},"branch":"master","displayName":"GiselleTan/ip[master]","outputFolderName":"GiselleTan_ip_master"},{"location":{"location":"https://github.com/taufiq/ip.git","repoName":"ip","organization":"taufiq","domainName":"github"},"branch":"master","displayName":"taufiq/ip[master]","outputFolderName":"taufiq_ip_master"},{"location":{"location":"https://github.com/xuelinglow/ip.git","repoName":"ip","organization":"xuelinglow","domainName":"github"},"branch":"master","displayName":"xuelinglow/ip[master]","outputFolderName":"xuelinglow_ip_master"},{"location":{"location":"https://github.com/shunjieee/ip.git","repoName":"ip","organization":"shunjieee","domainName":"github"},"branch":"master","displayName":"shunjieee/ip[master]","outputFolderName":"shunjieee_ip_master"},{"location":{"location":"https://github.com/SherwynNg/ip.git","repoName":"ip","organization":"SherwynNg","domainName":"github"},"branch":"master","displayName":"SherwynNg/ip[master]","outputFolderName":"SherwynNg_ip_master"},{"location":{"location":"https://github.com/AndrewOng2066/ip.git","repoName":"ip","organization":"AndrewOng2066","domainName":"github"},"branch":"master","displayName":"AndrewOng2066/ip[master]","outputFolderName":"AndrewOng2066_ip_master"},{"location":{"location":"https://github.com/MarcusGitty/ip.git","repoName":"ip","organization":"MarcusGitty","domainName":"github"},"branch":"master","displayName":"MarcusGitty/ip[master]","outputFolderName":"MarcusGitty_ip_master"},{"location":{"location":"https://github.com/Anant1902/ip.git","repoName":"ip","organization":"Anant1902","domainName":"github"},"branch":"master","displayName":"Anant1902/ip[master]","outputFolderName":"Anant1902_ip_master"},{"location":{"location":"https://github.com/headcube1/ip.git","repoName":"ip","organization":"headcube1","domainName":"github"},"branch":"master","displayName":"headcube1/ip[master]","outputFolderName":"headcube1_ip_master"},{"location":{"location":"https://github.com/jimseah-0116/ip.git","repoName":"ip","organization":"jimseah-0116","domainName":"github"},"branch":"master","displayName":"jimseah-0116/ip[master]","outputFolderName":"jimseah-0116_ip_master"},{"location":{"location":"https://github.com/ararchch/ip.git","repoName":"ip","organization":"ararchch","domainName":"github"},"branch":"master","displayName":"ararchch/ip[master]","outputFolderName":"ararchch_ip_master"},{"location":{"location":"https://github.com/chiaryan/ip.git","repoName":"ip","organization":"chiaryan","domainName":"github"},"branch":"master","displayName":"chiaryan/ip[master]","outputFolderName":"chiaryan_ip_master"},{"location":{"location":"https://github.com/chengjunyuan/ip.git","repoName":"ip","organization":"chengjunyuan","domainName":"github"},"branch":"master","displayName":"chengjunyuan/ip[master]","outputFolderName":"chengjunyuan_ip_master"},{"location":{"location":"https://github.com/LimZiJia/ip.git","repoName":"ip","organization":"LimZiJia","domainName":"github"},"branch":"master","displayName":"LimZiJia/ip[master]","outputFolderName":"LimZiJia_ip_master"},{"location":{"location":"https://github.com/darkvoid32/ip.git","repoName":"ip","organization":"darkvoid32","domainName":"github"},"branch":"master","displayName":"darkvoid32/ip[master]","outputFolderName":"darkvoid32_ip_master"},{"location":{"location":"https://github.com/maze508/ip.git","repoName":"ip","organization":"maze508","domainName":"github"},"branch":"master","displayName":"maze508/ip[master]","outputFolderName":"maze508_ip_master"},{"location":{"location":"https://github.com/RingoftheKing/ip.git","repoName":"ip","organization":"RingoftheKing","domainName":"github"},"branch":"master","displayName":"RingoftheKing/ip[master]","outputFolderName":"RingoftheKing_ip_master"},{"location":{"location":"https://github.com/Rishit02/ip.git","repoName":"ip","organization":"Rishit02","domainName":"github"},"branch":"master","displayName":"Rishit02/ip[master]","outputFolderName":"Rishit02_ip_master"},{"location":{"location":"https://github.com/drustanyjt/ip.git","repoName":"ip","organization":"drustanyjt","domainName":"github"},"branch":"master","displayName":"drustanyjt/ip[master]","outputFolderName":"drustanyjt_ip_master"},{"location":{"location":"https://github.com/Dexter-Wong/ip.git","repoName":"ip","organization":"Dexter-Wong","domainName":"github"},"branch":"master","displayName":"Dexter-Wong/ip[master]","outputFolderName":"Dexter-Wong_ip_master"},{"location":{"location":"https://github.com/jxunze/ip.git","repoName":"ip","organization":"jxunze","domainName":"github"},"branch":"master","displayName":"jxunze/ip[master]","outputFolderName":"jxunze_ip_master"},{"location":{"location":"https://github.com/Vision-2000/ip.git","repoName":"ip","organization":"Vision-2000","domainName":"github"},"branch":"master","displayName":"Vision-2000/ip[master]","outputFolderName":"Vision-2000_ip_master"},{"location":{"location":"https://github.com/Derekljh/ip.git","repoName":"ip","organization":"Derekljh","domainName":"github"},"branch":"master","displayName":"Derekljh/ip[master]","outputFolderName":"Derekljh_ip_master"},{"location":{"location":"https://github.com/alphajae11/ip.git","repoName":"ip","organization":"alphajae11","domainName":"github"},"branch":"master","displayName":"alphajae11/ip[master]","outputFolderName":"alphajae11_ip_master"},{"location":{"location":"https://github.com/Kappaccinoh/ip.git","repoName":"ip","organization":"Kappaccinoh","domainName":"github"},"branch":"master","displayName":"Kappaccinoh/ip[master]","outputFolderName":"Kappaccinoh_ip_master"},{"location":{"location":"https://github.com/minreiseah/ip.git","repoName":"ip","organization":"minreiseah","domainName":"github"},"branch":"master","displayName":"minreiseah/ip[master]","outputFolderName":"minreiseah_ip_master"},{"location":{"location":"https://github.com/yuhinarita/ip.git","repoName":"ip","organization":"yuhinarita","domainName":"github"},"branch":"master","displayName":"yuhinarita/ip[master]","outputFolderName":"yuhinarita_ip_master"},{"location":{"location":"https://github.com/kab-dot/ip.git","repoName":"ip","organization":"kab-dot","domainName":"github"},"branch":"master","displayName":"kab-dot/ip[master]","outputFolderName":"kab-dot_ip_master"},{"location":{"location":"https://github.com/alfaloo/ip.git","repoName":"ip","organization":"alfaloo","domainName":"github"},"branch":"master","displayName":"alfaloo/ip[master]","outputFolderName":"alfaloo_ip_master"},{"location":{"location":"https://github.com/doyelee0313/ip.git","repoName":"ip","organization":"doyelee0313","domainName":"github"},"branch":"master","displayName":"doyelee0313/ip[master]","outputFolderName":"doyelee0313_ip_master"},{"location":{"location":"https://github.com/sdevih/ip.git","repoName":"ip","organization":"sdevih","domainName":"github"},"branch":"master","displayName":"sdevih/ip[master]","outputFolderName":"sdevih_ip_master"},{"location":{"location":"https://github.com/Emberlynn-Loo/ip.git","repoName":"ip","organization":"Emberlynn-Loo","domainName":"github"},"branch":"master","displayName":"Emberlynn-Loo/ip[master]","outputFolderName":"Emberlynn-Loo_ip_master"},{"location":{"location":"https://github.com/tejas-1405/ip.git","repoName":"ip","organization":"tejas-1405","domainName":"github"},"branch":"master","displayName":"tejas-1405/ip[master]","outputFolderName":"tejas-1405_ip_master"},{"location":{"location":"https://github.com/H4mes/ip.git","repoName":"ip","organization":"H4mes","domainName":"github"},"branch":"master","displayName":"H4mes/ip[master]","outputFolderName":"H4mes_ip_master"},{"location":{"location":"https://github.com/ChocoRagdoll/ip.git","repoName":"ip","organization":"ChocoRagdoll","domainName":"github"},"branch":"master","displayName":"ChocoRagdoll/ip[master]","outputFolderName":"ChocoRagdoll_ip_master"},{"location":{"location":"https://github.com/dwangwk/ip.git","repoName":"ip","organization":"dwangwk","domainName":"github"},"branch":"master","displayName":"dwangwk/ip[master]","outputFolderName":"dwangwk_ip_master"},{"location":{"location":"https://github.com/leeweiming3/ip.git","repoName":"ip","organization":"leeweiming3","domainName":"github"},"branch":"master","displayName":"leeweiming3/ip[master]","outputFolderName":"leeweiming3_ip_master"},{"location":{"location":"https://github.com/Wyrkx/ip.git","repoName":"ip","organization":"Wyrkx","domainName":"github"},"branch":"master","displayName":"Wyrkx/ip[master]","outputFolderName":"Wyrkx_ip_master"},{"location":{"location":"https://github.com/jeong-jaeho/ip.git","repoName":"ip","organization":"jeong-jaeho","domainName":"github"},"branch":"master","displayName":"jeong-jaeho/ip[master]","outputFolderName":"jeong-jaeho_ip_master"},{"location":{"location":"https://github.com/tohlh/ip.git","repoName":"ip","organization":"tohlh","domainName":"github"},"branch":"master","displayName":"tohlh/ip[master]","outputFolderName":"tohlh_ip_master"},{"location":{"location":"https://github.com/tzaph/ip.git","repoName":"ip","organization":"tzaph","domainName":"github"},"branch":"master","displayName":"tzaph/ip[master]","outputFolderName":"tzaph_ip_master"},{"location":{"location":"https://github.com/PateShin/ip.git","repoName":"ip","organization":"PateShin","domainName":"github"},"branch":"master","displayName":"PateShin/ip[master]","outputFolderName":"PateShin_ip_master"},{"location":{"location":"https://github.com/PallonCX/ip.git","repoName":"ip","organization":"PallonCX","domainName":"github"},"branch":"master","displayName":"PallonCX/ip[master]","outputFolderName":"PallonCX_ip_master"},{"location":{"location":"https://github.com/benson1029/ip.git","repoName":"ip","organization":"benson1029","domainName":"github"},"branch":"master","displayName":"benson1029/ip[master]","outputFolderName":"benson1029_ip_master"},{"location":{"location":"https://github.com/Kaya3842/ip.git","repoName":"ip","organization":"Kaya3842","domainName":"github"},"branch":"master","displayName":"Kaya3842/ip[master]","outputFolderName":"Kaya3842_ip_master"},{"location":{"location":"https://github.com/JustWeiHao/ip.git","repoName":"ip","organization":"JustWeiHao","domainName":"github"},"branch":"master","displayName":"JustWeiHao/ip[master]","outputFolderName":"JustWeiHao_ip_master"},{"location":{"location":"https://github.com/chin-herng/ip.git","repoName":"ip","organization":"chin-herng","domainName":"github"},"branch":"master","displayName":"chin-herng/ip[master]","outputFolderName":"chin-herng_ip_master"},{"location":{"location":"https://github.com/swtan346/ip.git","repoName":"ip","organization":"swtan346","domainName":"github"},"branch":"master","displayName":"swtan346/ip[master]","outputFolderName":"swtan346_ip_master"},{"location":{"location":"https://github.com/gosongying/ip.git","repoName":"ip","organization":"gosongying","domainName":"github"},"branch":"master","displayName":"gosongying/ip[master]","outputFolderName":"gosongying_ip_master"},{"location":{"location":"https://github.com/ivan24004/ip.git","repoName":"ip","organization":"ivan24004","domainName":"github"},"branch":"master","displayName":"ivan24004/ip[master]","outputFolderName":"ivan24004_ip_master"},{"location":{"location":"https://github.com/sarjinius/ip.git","repoName":"ip","organization":"sarjinius","domainName":"github"},"branch":"master","displayName":"sarjinius/ip[master]","outputFolderName":"sarjinius_ip_master"},{"location":{"location":"https://github.com/shavonneg/ip.git","repoName":"ip","organization":"shavonneg","domainName":"github"},"branch":"master","displayName":"shavonneg/ip[master]","outputFolderName":"shavonneg_ip_master"},{"location":{"location":"https://github.com/STELLA-LYE/ip.git","repoName":"ip","organization":"STELLA-LYE","domainName":"github"},"branch":"master","displayName":"STELLA-LYE/ip[master]","outputFolderName":"STELLA-LYE_ip_master"},{"location":{"location":"https://github.com/Lalelulilulela/ip.git","repoName":"ip","organization":"Lalelulilulela","domainName":"github"},"branch":"master","displayName":"Lalelulilulela/ip[master]","outputFolderName":"Lalelulilulela_ip_master"},{"location":{"location":"https://github.com/eunrcn/ip.git","repoName":"ip","organization":"eunrcn","domainName":"github"},"branch":"master","displayName":"eunrcn/ip[master]","outputFolderName":"eunrcn_ip_master"},{"location":{"location":"https://github.com/jocelyn-soh/ip.git","repoName":"ip","organization":"jocelyn-soh","domainName":"github"},"branch":"master","displayName":"jocelyn-soh/ip[master]","outputFolderName":"jocelyn-soh_ip_master"},{"location":{"location":"https://github.com/lynnetteeee/ip.git","repoName":"ip","organization":"lynnetteeee","domainName":"github"},"branch":"master","displayName":"lynnetteeee/ip[master]","outputFolderName":"lynnetteeee_ip_master"},{"location":{"location":"https://github.com/chenyixin0/ip.git","repoName":"ip","organization":"chenyixin0","domainName":"github"},"branch":"master","displayName":"chenyixin0/ip[master]","outputFolderName":"chenyixin0_ip_master"},{"location":{"location":"https://github.com/tanjieling0/ip.git","repoName":"ip","organization":"tanjieling0","domainName":"github"},"branch":"master","displayName":"tanjieling0/ip[master]","outputFolderName":"tanjieling0_ip_master"},{"location":{"location":"https://github.com/alex-setyawan/ip.git","repoName":"ip","organization":"alex-setyawan","domainName":"github"},"branch":"master","displayName":"alex-setyawan/ip[master]","outputFolderName":"alex-setyawan_ip_master"},{"location":{"location":"https://github.com/peienlim/ip.git","repoName":"ip","organization":"peienlim","domainName":"github"},"branch":"master","displayName":"peienlim/ip[master]","outputFolderName":"peienlim_ip_master"},{"location":{"location":"https://github.com/danielleloh/ip.git","repoName":"ip","organization":"danielleloh","domainName":"github"},"branch":"master","displayName":"danielleloh/ip[master]","outputFolderName":"danielleloh_ip_master"},{"location":{"location":"https://github.com/jannaleong/ip.git","repoName":"ip","organization":"jannaleong","domainName":"github"},"branch":"master","displayName":"jannaleong/ip[master]","outputFolderName":"jannaleong_ip_master"},{"location":{"location":"https://github.com/huekoh/ip.git","repoName":"ip","organization":"huekoh","domainName":"github"},"branch":"master","displayName":"huekoh/ip[master]","outputFolderName":"huekoh_ip_master"},{"location":{"location":"https://github.com/wapisai/ip.git","repoName":"ip","organization":"wapisai","domainName":"github"},"branch":"master","displayName":"wapisai/ip[master]","outputFolderName":"wapisai_ip_master"},{"location":{"location":"https://github.com/NatLeong/ip.git","repoName":"ip","organization":"NatLeong","domainName":"github"},"branch":"master","displayName":"NatLeong/ip[master]","outputFolderName":"NatLeong_ip_master"},{"location":{"location":"https://github.com/Pughal77/ip.git","repoName":"ip","organization":"Pughal77","domainName":"github"},"branch":"master","displayName":"Pughal77/ip[master]","outputFolderName":"Pughal77_ip_master"},{"location":{"location":"https://github.com/tahnya/ip.git","repoName":"ip","organization":"tahnya","domainName":"github"},"branch":"master","displayName":"tahnya/ip[master]","outputFolderName":"tahnya_ip_master"},{"location":{"location":"https://github.com/rahhulleee/ip.git","repoName":"ip","organization":"rahhulleee","domainName":"github"},"branch":"master","displayName":"rahhulleee/ip[master]","outputFolderName":"rahhulleee_ip_master"},{"location":{"location":"https://github.com/tamagochuuu/ip.git","repoName":"ip","organization":"tamagochuuu","domainName":"github"},"branch":"master","displayName":"tamagochuuu/ip[master]","outputFolderName":"tamagochuuu_ip_master"},{"location":{"location":"https://github.com/Chiarena/ip.git","repoName":"ip","organization":"Chiarena","domainName":"github"},"branch":"master","displayName":"Chiarena/ip[master]","outputFolderName":"Chiarena_ip_master"},{"location":{"location":"https://github.com/agreatdayy/ip.git","repoName":"ip","organization":"agreatdayy","domainName":"github"},"branch":"master","displayName":"agreatdayy/ip[master]","outputFolderName":"agreatdayy_ip_master"},{"location":{"location":"https://github.com/CaptainKeqing/ip.git","repoName":"ip","organization":"CaptainKeqing","domainName":"github"},"branch":"master","displayName":"CaptainKeqing/ip[master]","outputFolderName":"CaptainKeqing_ip_master"},{"location":{"location":"https://github.com/evedaktyl/ip.git","repoName":"ip","organization":"evedaktyl","domainName":"github"},"branch":"master","displayName":"evedaktyl/ip[master]","outputFolderName":"evedaktyl_ip_master"},{"location":{"location":"https://github.com/zhikaiong2001/ip.git","repoName":"ip","organization":"zhikaiong2001","domainName":"github"},"branch":"master","displayName":"zhikaiong2001/ip[master]","outputFolderName":"zhikaiong2001_ip_master"},{"location":{"location":"https://github.com/johnyoozhengxian/ip.git","repoName":"ip","organization":"johnyoozhengxian","domainName":"github"},"branch":"master","displayName":"johnyoozhengxian/ip[master]","outputFolderName":"johnyoozhengxian_ip_master"},{"location":{"location":"https://github.com/KinTatHo/ip.git","repoName":"ip","organization":"KinTatHo","domainName":"github"},"branch":"master","displayName":"KinTatHo/ip[master]","outputFolderName":"KinTatHo_ip_master"},{"location":{"location":"https://github.com/Joseph31416/ip.git","repoName":"ip","organization":"Joseph31416","domainName":"github"},"branch":"master","displayName":"Joseph31416/ip[master]","outputFolderName":"Joseph31416_ip_master"},{"location":{"location":"https://github.com/Murugan-Maniish/ip.git","repoName":"ip","organization":"Murugan-Maniish","domainName":"github"},"branch":"master","displayName":"Murugan-Maniish/ip[master]","outputFolderName":"Murugan-Maniish_ip_master"},{"location":{"location":"https://github.com/Joshy837/ip.git","repoName":"ip","organization":"Joshy837","domainName":"github"},"branch":"master","displayName":"Joshy837/ip[master]","outputFolderName":"Joshy837_ip_master"},{"location":{"location":"https://github.com/ChenXy128/ip.git","repoName":"ip","organization":"ChenXy128","domainName":"github"},"branch":"master","displayName":"ChenXy128/ip[master]","outputFolderName":"ChenXy128_ip_master"},{"location":{"location":"https://github.com/jamessinmaojun/ip.git","repoName":"ip","organization":"jamessinmaojun","domainName":"github"},"branch":"master","displayName":"jamessinmaojun/ip[master]","outputFolderName":"jamessinmaojun_ip_master"},{"location":{"location":"https://github.com/Joelwang22/ip.git","repoName":"ip","organization":"Joelwang22","domainName":"github"},"branch":"master","displayName":"Joelwang22/ip[master]","outputFolderName":"Joelwang22_ip_master"},{"location":{"location":"https://github.com/shawnnlimm/ip.git","repoName":"ip","organization":"shawnnlimm","domainName":"github"},"branch":"master","displayName":"shawnnlimm/ip[master]","outputFolderName":"shawnnlimm_ip_master"},{"location":{"location":"https://github.com/erv-teo/ip.git","repoName":"ip","organization":"erv-teo","domainName":"github"},"branch":"master","displayName":"erv-teo/ip[master]","outputFolderName":"erv-teo_ip_master"},{"location":{"location":"https://github.com/h4ow3i/ip.git","repoName":"ip","organization":"h4ow3i","domainName":"github"},"branch":"master","displayName":"h4ow3i/ip[master]","outputFolderName":"h4ow3i_ip_master"},{"location":{"location":"https://github.com/ziyang27/ip.git","repoName":"ip","organization":"ziyang27","domainName":"github"},"branch":"master","displayName":"ziyang27/ip[master]","outputFolderName":"ziyang27_ip_master"},{"location":{"location":"https://github.com/FangRuoqing/ip.git","repoName":"ip","organization":"FangRuoqing","domainName":"github"},"branch":"master","displayName":"FangRuoqing/ip[master]","outputFolderName":"FangRuoqing_ip_master"},{"location":{"location":"https://github.com/0nesheep/ip.git","repoName":"ip","organization":"0nesheep","domainName":"github"},"branch":"master","displayName":"0nesheep/ip[master]","outputFolderName":"0nesheep_ip_master"},{"location":{"location":"https://github.com/0-yibai/ip.git","repoName":"ip","organization":"0-yibai","domainName":"github"},"branch":"master","displayName":"0-yibai/ip[master]","outputFolderName":"0-yibai_ip_master"},{"location":{"location":"https://github.com/jerremyng/ip.git","repoName":"ip","organization":"jerremyng","domainName":"github"},"branch":"master","displayName":"jerremyng/ip[master]","outputFolderName":"jerremyng_ip_master"},{"location":{"location":"https://github.com/irwynliong/ip.git","repoName":"ip","organization":"irwynliong","domainName":"github"},"branch":"master","displayName":"irwynliong/ip[master]","outputFolderName":"irwynliong_ip_master"},{"location":{"location":"https://github.com/yorklim/ip.git","repoName":"ip","organization":"yorklim","domainName":"github"},"branch":"master","displayName":"yorklim/ip[master]","outputFolderName":"yorklim_ip_master"},{"location":{"location":"https://github.com/vannykin/ip.git","repoName":"ip","organization":"vannykin","domainName":"github"},"branch":"master","displayName":"vannykin/ip[master]","outputFolderName":"vannykin_ip_master"},{"location":{"location":"https://github.com/laney0808/ip.git","repoName":"ip","organization":"laney0808","domainName":"github"},"branch":"master","displayName":"laney0808/ip[master]","outputFolderName":"laney0808_ip_master"},{"location":{"location":"https://github.com/yapxuanxuan/ip.git","repoName":"ip","organization":"yapxuanxuan","domainName":"github"},"branch":"master","displayName":"yapxuanxuan/ip[master]","outputFolderName":"yapxuanxuan_ip_master"},{"location":{"location":"https://github.com/Greg-Tan/ip.git","repoName":"ip","organization":"Greg-Tan","domainName":"github"},"branch":"master","displayName":"Greg-Tan/ip[master]","outputFolderName":"Greg-Tan_ip_master"},{"location":{"location":"https://github.com/taniatsq/ip.git","repoName":"ip","organization":"taniatsq","domainName":"github"},"branch":"master","displayName":"taniatsq/ip[master]","outputFolderName":"taniatsq_ip_master"},{"location":{"location":"https://github.com/yongkotaro/ip.git","repoName":"ip","organization":"yongkotaro","domainName":"github"},"branch":"master","displayName":"yongkotaro/ip[master]","outputFolderName":"yongkotaro_ip_master"},{"location":{"location":"https://github.com/tanyunchao/ip.git","repoName":"ip","organization":"tanyunchao","domainName":"github"},"branch":"master","displayName":"tanyunchao/ip[master]","outputFolderName":"tanyunchao_ip_master"},{"location":{"location":"https://github.com/KiatLun/ip.git","repoName":"ip","organization":"KiatLun","domainName":"github"},"branch":"master","displayName":"KiatLun/ip[master]","outputFolderName":"KiatLun_ip_master"},{"location":{"location":"https://github.com/Xuyan0518/ip.git","repoName":"ip","organization":"Xuyan0518","domainName":"github"},"branch":"master","displayName":"Xuyan0518/ip[master]","outputFolderName":"Xuyan0518_ip_master"},{"location":{"location":"https://github.com/cleowenxuan/ip.git","repoName":"ip","organization":"cleowenxuan","domainName":"github"},"branch":"master","displayName":"cleowenxuan/ip[master]","outputFolderName":"cleowenxuan_ip_master"},{"location":{"location":"https://github.com/logical-1985516/ip.git","repoName":"ip","organization":"logical-1985516","domainName":"github"},"branch":"master","displayName":"logical-1985516/ip[master]","outputFolderName":"logical-1985516_ip_master"},{"location":{"location":"https://github.com/jessicawyz/ip.git","repoName":"ip","organization":"jessicawyz","domainName":"github"},"branch":"master","displayName":"jessicawyz/ip[master]","outputFolderName":"jessicawyz_ip_master"},{"location":{"location":"https://github.com/ashleyy2444/ip.git","repoName":"ip","organization":"ashleyy2444","domainName":"github"},"branch":"master","displayName":"ashleyy2444/ip[master]","outputFolderName":"ashleyy2444_ip_master"},{"location":{"location":"https://github.com/tengcharmaine/ip.git","repoName":"ip","organization":"tengcharmaine","domainName":"github"},"branch":"master","displayName":"tengcharmaine/ip[master]","outputFolderName":"tengcharmaine_ip_master"},{"location":{"location":"https://github.com/Jawad280/ip.git","repoName":"ip","organization":"Jawad280","domainName":"github"},"branch":"master","displayName":"Jawad280/ip[master]","outputFolderName":"Jawad280_ip_master"},{"location":{"location":"https://github.com/ThatGirlJam/ip.git","repoName":"ip","organization":"ThatGirlJam","domainName":"github"},"branch":"master","displayName":"ThatGirlJam/ip[master]","outputFolderName":"ThatGirlJam_ip_master"},{"location":{"location":"https://github.com/saiutkarsh33/ip.git","repoName":"ip","organization":"saiutkarsh33","domainName":"github"},"branch":"master","displayName":"saiutkarsh33/ip[master]","outputFolderName":"saiutkarsh33_ip_master"},{"location":{"location":"https://github.com/meenulekha/ip.git","repoName":"ip","organization":"meenulekha","domainName":"github"},"branch":"master","displayName":"meenulekha/ip[master]","outputFolderName":"meenulekha_ip_master"},{"location":{"location":"https://github.com/LargeCrowd/ip.git","repoName":"ip","organization":"LargeCrowd","domainName":"github"},"branch":"master","displayName":"LargeCrowd/ip[master]","outputFolderName":"LargeCrowd_ip_master"},{"location":{"location":"https://github.com/linnn-7/ip.git","repoName":"ip","organization":"linnn-7","domainName":"github"},"branch":"master","displayName":"linnn-7/ip[master]","outputFolderName":"linnn-7_ip_master"},{"location":{"location":"https://github.com/maiyasaliha/ip.git","repoName":"ip","organization":"maiyasaliha","domainName":"github"},"branch":"master","displayName":"maiyasaliha/ip[master]","outputFolderName":"maiyasaliha_ip_master"},{"location":{"location":"https://github.com/jonpwk/ip.git","repoName":"ip","organization":"jonpwk","domainName":"github"},"branch":"master","displayName":"jonpwk/ip[master]","outputFolderName":"jonpwk_ip_master"},{"location":{"location":"https://github.com/ChillinRage/ip.git","repoName":"ip","organization":"ChillinRage","domainName":"github"},"branch":"master","displayName":"ChillinRage/ip[master]","outputFolderName":"ChillinRage_ip_master"},{"location":{"location":"https://github.com/moguries/ip.git","repoName":"ip","organization":"moguries","domainName":"github"},"branch":"master","displayName":"moguries/ip[master]","outputFolderName":"moguries_ip_master"},{"location":{"location":"https://github.com/Alteqa/ip.git","repoName":"ip","organization":"Alteqa","domainName":"github"},"branch":"master","displayName":"Alteqa/ip[master]","outputFolderName":"Alteqa_ip_master"},{"location":{"location":"https://github.com/Zack-Tay/ip.git","repoName":"ip","organization":"Zack-Tay","domainName":"github"},"branch":"master","displayName":"Zack-Tay/ip[master]","outputFolderName":"Zack-Tay_ip_master"},{"location":{"location":"https://github.com/marcus-ny/ip.git","repoName":"ip","organization":"marcus-ny","domainName":"github"},"branch":"master","displayName":"marcus-ny/ip[master]","outputFolderName":"marcus-ny_ip_master"},{"location":{"location":"https://github.com/bennyLCK/ip.git","repoName":"ip","organization":"bennyLCK","domainName":"github"},"branch":"master","displayName":"bennyLCK/ip[master]","outputFolderName":"bennyLCK_ip_master"},{"location":{"location":"https://github.com/kinjalagarwal1810/ip.git","repoName":"ip","organization":"kinjalagarwal1810","domainName":"github"},"branch":"master","displayName":"kinjalagarwal1810/ip[master]","outputFolderName":"kinjalagarwal1810_ip_master"},{"location":{"location":"https://github.com/R-Laksh/ip.git","repoName":"ip","organization":"R-Laksh","domainName":"github"},"branch":"master","displayName":"R-Laksh/ip[master]","outputFolderName":"R-Laksh_ip_master"},{"location":{"location":"https://github.com/Colex2000/ip.git","repoName":"ip","organization":"Colex2000","domainName":"github"},"branch":"master","displayName":"Colex2000/ip[master]","outputFolderName":"Colex2000_ip_master"},{"location":{"location":"https://github.com/DhiraPT/ip.git","repoName":"ip","organization":"DhiraPT","domainName":"github"},"branch":"master","displayName":"DhiraPT/ip[master]","outputFolderName":"DhiraPT_ip_master"},{"location":{"location":"https://github.com/yyccbb/ip.git","repoName":"ip","organization":"yyccbb","domainName":"github"},"branch":"master","displayName":"yyccbb/ip[master]","outputFolderName":"yyccbb_ip_master"},{"location":{"location":"https://github.com/nigel27022001/ip.git","repoName":"ip","organization":"nigel27022001","domainName":"github"},"branch":"master","displayName":"nigel27022001/ip[master]","outputFolderName":"nigel27022001_ip_master"},{"location":{"location":"https://github.com/shamesjen/ip.git","repoName":"ip","organization":"shamesjen","domainName":"github"},"branch":"master","displayName":"shamesjen/ip[master]","outputFolderName":"shamesjen_ip_master"},{"location":{"location":"https://github.com/sindhurajain/ip.git","repoName":"ip","organization":"sindhurajain","domainName":"github"},"branch":"master","displayName":"sindhurajain/ip[master]","outputFolderName":"sindhurajain_ip_master"},{"location":{"location":"https://github.com/ryanlimdx/ip.git","repoName":"ip","organization":"ryanlimdx","domainName":"github"},"branch":"master","displayName":"ryanlimdx/ip[master]","outputFolderName":"ryanlimdx_ip_master"},{"location":{"location":"https://github.com/hiivan/ip.git","repoName":"ip","organization":"hiivan","domainName":"github"},"branch":"master","displayName":"hiivan/ip[master]","outputFolderName":"hiivan_ip_master"},{"location":{"location":"https://github.com/Apzure/ip.git","repoName":"ip","organization":"Apzure","domainName":"github"},"branch":"master","displayName":"Apzure/ip[master]","outputFolderName":"Apzure_ip_master"},{"location":{"location":"https://github.com/bgopi23/ip.git","repoName":"ip","organization":"bgopi23","domainName":"github"},"branch":"master","displayName":"bgopi23/ip[master]","outputFolderName":"bgopi23_ip_master"},{"location":{"location":"https://github.com/LWS49/ip.git","repoName":"ip","organization":"LWS49","domainName":"github"},"branch":"master","displayName":"LWS49/ip[master]","outputFolderName":"LWS49_ip_master"},{"location":{"location":"https://github.com/wang-xinrong/ip.git","repoName":"ip","organization":"wang-xinrong","domainName":"github"},"branch":"master","displayName":"wang-xinrong/ip[master]","outputFolderName":"wang-xinrong_ip_master"},{"location":{"location":"https://github.com/HusseinSafwan02/ip.git","repoName":"ip","organization":"HusseinSafwan02","domainName":"github"},"branch":"master","displayName":"HusseinSafwan02/ip[master]","outputFolderName":"HusseinSafwan02_ip_master"},{"location":{"location":"https://github.com/Ko-Khan/ip.git","repoName":"ip","organization":"Ko-Khan","domainName":"github"},"branch":"master","displayName":"Ko-Khan/ip[master]","outputFolderName":"Ko-Khan_ip_master"},{"location":{"location":"https://github.com/yleeyilin/ip.git","repoName":"ip","organization":"yleeyilin","domainName":"github"},"branch":"master","displayName":"yleeyilin/ip[master]","outputFolderName":"yleeyilin_ip_master"},{"location":{"location":"https://github.com/jiahui0309/ip.git","repoName":"ip","organization":"jiahui0309","domainName":"github"},"branch":"master","displayName":"jiahui0309/ip[master]","outputFolderName":"jiahui0309_ip_master"},{"location":{"location":"https://github.com/Jayne1010/ip.git","repoName":"ip","organization":"Jayne1010","domainName":"github"},"branch":"master","displayName":"Jayne1010/ip[master]","outputFolderName":"Jayne1010_ip_master"},{"location":{"location":"https://github.com/getsquared/ip.git","repoName":"ip","organization":"getsquared","domainName":"github"},"branch":"master","displayName":"getsquared/ip[master]","outputFolderName":"getsquared_ip_master"},{"location":{"location":"https://github.com/kaitinghh/ip.git","repoName":"ip","organization":"kaitinghh","domainName":"github"},"branch":"master","displayName":"kaitinghh/ip[master]","outputFolderName":"kaitinghh_ip_master"},{"location":{"location":"https://github.com/4llysa/ip.git","repoName":"ip","organization":"4llysa","domainName":"github"},"branch":"master","displayName":"4llysa/ip[master]","outputFolderName":"4llysa_ip_master"},{"location":{"location":"https://github.com/Lin-Shuang-Shuang/ip.git","repoName":"ip","organization":"Lin-Shuang-Shuang","domainName":"github"},"branch":"master","displayName":"Lin-Shuang-Shuang/ip[master]","outputFolderName":"Lin-Shuang-Shuang_ip_master"},{"location":{"location":"https://github.com/youdonnnn/ip.git","repoName":"ip","organization":"youdonnnn","domainName":"github"},"branch":"master","displayName":"youdonnnn/ip[master]","outputFolderName":"youdonnnn_ip_master"},{"location":{"location":"https://github.com/xuwen-ho/ip.git","repoName":"ip","organization":"xuwen-ho","domainName":"github"},"branch":"master","displayName":"xuwen-ho/ip[master]","outputFolderName":"xuwen-ho_ip_master"},{"location":{"location":"https://github.com/ongzhili/ip.git","repoName":"ip","organization":"ongzhili","domainName":"github"},"branch":"master","displayName":"ongzhili/ip[master]","outputFolderName":"ongzhili_ip_master"},{"location":{"location":"https://github.com/miffi/ip.git","repoName":"ip","organization":"miffi","domainName":"github"},"branch":"master","displayName":"miffi/ip[master]","outputFolderName":"miffi_ip_master"},{"location":{"location":"https://github.com/wallacexuhanxiao/ip.git","repoName":"ip","organization":"wallacexuhanxiao","domainName":"github"},"branch":"master","displayName":"wallacexuhanxiao/ip[master]","outputFolderName":"wallacexuhanxiao_ip_master"},{"location":{"location":"https://github.com/Teee728/ip.git","repoName":"ip","organization":"Teee728","domainName":"github"},"branch":"master","displayName":"Teee728/ip[master]","outputFolderName":"Teee728_ip_master"},{"location":{"location":"https://github.com/wolffe88/ip.git","repoName":"ip","organization":"wolffe88","domainName":"github"},"branch":"master","displayName":"wolffe88/ip[master]","outputFolderName":"wolffe88_ip_master"},{"location":{"location":"https://github.com/jskimdev/ip.git","repoName":"ip","organization":"jskimdev","domainName":"github"},"branch":"master","displayName":"jskimdev/ip[master]","outputFolderName":"jskimdev_ip_master"},{"location":{"location":"https://github.com/reetmitra/ip.git","repoName":"ip","organization":"reetmitra","domainName":"github"},"branch":"master","displayName":"reetmitra/ip[master]","outputFolderName":"reetmitra_ip_master"},{"location":{"location":"https://github.com/iamtr/ip.git","repoName":"ip","organization":"iamtr","domainName":"github"},"branch":"master","displayName":"iamtr/ip[master]","outputFolderName":"iamtr_ip_master"},{"location":{"location":"https://github.com/officialchengyud/ip.git","repoName":"ip","organization":"officialchengyud","domainName":"github"},"branch":"master","displayName":"officialchengyud/ip[master]","outputFolderName":"officialchengyud_ip_master"},{"location":{"location":"https://github.com/GERARDJM018/ip.git","repoName":"ip","organization":"GERARDJM018","domainName":"github"},"branch":"master","displayName":"GERARDJM018/ip[master]","outputFolderName":"GERARDJM018_ip_master"},{"location":{"location":"https://github.com/howen02/ip.git","repoName":"ip","organization":"howen02","domainName":"github"},"branch":"master","displayName":"howen02/ip[master]","outputFolderName":"howen02_ip_master"},{"location":{"location":"https://github.com/NusMinato/ip.git","repoName":"ip","organization":"NusMinato","domainName":"github"},"branch":"master","displayName":"NusMinato/ip[master]","outputFolderName":"NusMinato_ip_master"},{"location":{"location":"https://github.com/hjuntan/ip.git","repoName":"ip","organization":"hjuntan","domainName":"github"},"branch":"master","displayName":"hjuntan/ip[master]","outputFolderName":"hjuntan_ip_master"},{"location":{"location":"https://github.com/gauravuj/ip.git","repoName":"ip","organization":"gauravuj","domainName":"github"},"branch":"master","displayName":"gauravuj/ip[master]","outputFolderName":"gauravuj_ip_master"},{"location":{"location":"https://github.com/yespiggy/ip.git","repoName":"ip","organization":"yespiggy","domainName":"github"},"branch":"master","displayName":"yespiggy/ip[master]","outputFolderName":"yespiggy_ip_master"},{"location":{"location":"https://github.com/Windofbitter/ip.git","repoName":"ip","organization":"Windofbitter","domainName":"github"},"branch":"master","displayName":"Windofbitter/ip[master]","outputFolderName":"Windofbitter_ip_master"},{"location":{"location":"https://github.com/NewtonKoh/ip.git","repoName":"ip","organization":"NewtonKoh","domainName":"github"},"branch":"master","displayName":"NewtonKoh/ip[master]","outputFolderName":"NewtonKoh_ip_master"},{"location":{"location":"https://github.com/narwhalsilent/ip.git","repoName":"ip","organization":"narwhalsilent","domainName":"github"},"branch":"master","displayName":"narwhalsilent/ip[master]","outputFolderName":"narwhalsilent_ip_master"},{"location":{"location":"https://github.com/starsia/ip.git","repoName":"ip","organization":"starsia","domainName":"github"},"branch":"master","displayName":"starsia/ip[master]","outputFolderName":"starsia_ip_master"},{"location":{"location":"https://github.com/AidenLYT/ip.git","repoName":"ip","organization":"AidenLYT","domainName":"github"},"branch":"master","displayName":"AidenLYT/ip[master]","outputFolderName":"AidenLYT_ip_master"},{"location":{"location":"https://github.com/nyankoclaws/ip.git","repoName":"ip","organization":"nyankoclaws","domainName":"github"},"branch":"master","displayName":"nyankoclaws/ip[master]","outputFolderName":"nyankoclaws_ip_master"},{"location":{"location":"https://github.com/angsongyee/ip.git","repoName":"ip","organization":"angsongyee","domainName":"github"},"branch":"master","displayName":"angsongyee/ip[master]","outputFolderName":"angsongyee_ip_master"},{"location":{"location":"https://github.com/eliotlee68/ip.git","repoName":"ip","organization":"eliotlee68","domainName":"github"},"branch":"master","displayName":"eliotlee68/ip[master]","outputFolderName":"eliotlee68_ip_master"},{"location":{"location":"https://github.com/Yskie/ip.git","repoName":"ip","organization":"Yskie","domainName":"github"},"branch":"master","displayName":"Yskie/ip[master]","outputFolderName":"Yskie_ip_master"},{"location":{"location":"https://github.com/faaheem13/ip.git","repoName":"ip","organization":"faaheem13","domainName":"github"},"branch":"master","displayName":"faaheem13/ip[master]","outputFolderName":"faaheem13_ip_master"},{"location":{"location":"https://github.com/Shauryan123/ip.git","repoName":"ip","organization":"Shauryan123","domainName":"github"},"branch":"master","displayName":"Shauryan123/ip[master]","outputFolderName":"Shauryan123_ip_master"},{"location":{"location":"https://github.com/MaYuehan/ip.git","repoName":"ip","organization":"MaYuehan","domainName":"github"},"branch":"master","displayName":"MaYuehan/ip[master]","outputFolderName":"MaYuehan_ip_master"},{"location":{"location":"https://github.com/kaiyi27/ip.git","repoName":"ip","organization":"kaiyi27","domainName":"github"},"branch":"master","displayName":"kaiyi27/ip[master]","outputFolderName":"kaiyi27_ip_master"},{"location":{"location":"https://github.com/radeon2525/ip.git","repoName":"ip","organization":"radeon2525","domainName":"github"},"branch":"master","displayName":"radeon2525/ip[master]","outputFolderName":"radeon2525_ip_master"},{"location":{"location":"https://github.com/dedsecrattle/ip.git","repoName":"ip","organization":"dedsecrattle","domainName":"github"},"branch":"master","displayName":"dedsecrattle/ip[master]","outputFolderName":"dedsecrattle_ip_master"},{"location":{"location":"https://github.com/AdityaB4/ip.git","repoName":"ip","organization":"AdityaB4","domainName":"github"},"branch":"master","displayName":"AdityaB4/ip[master]","outputFolderName":"AdityaB4_ip_master"},{"location":{"location":"https://github.com/PyromancerBoom/ip.git","repoName":"ip","organization":"PyromancerBoom","domainName":"github"},"branch":"master","displayName":"PyromancerBoom/ip[master]","outputFolderName":"PyromancerBoom_ip_master"},{"location":{"location":"https://github.com/JiaXinEu/ip.git","repoName":"ip","organization":"JiaXinEu","domainName":"github"},"branch":"master","displayName":"JiaXinEu/ip[master]","outputFolderName":"JiaXinEu_ip_master"},{"location":{"location":"https://github.com/Ella-e/ip.git","repoName":"ip","organization":"Ella-e","domainName":"github"},"branch":"master","displayName":"Ella-e/ip[master]","outputFolderName":"Ella-e_ip_master"},{"location":{"location":"https://github.com/yiwern5/ip.git","repoName":"ip","organization":"yiwern5","domainName":"github"},"branch":"master","displayName":"yiwern5/ip[master]","outputFolderName":"yiwern5_ip_master"},{"location":{"location":"https://github.com/SamuelZero1/ip.git","repoName":"ip","organization":"SamuelZero1","domainName":"github"},"branch":"master","displayName":"SamuelZero1/ip[master]","outputFolderName":"SamuelZero1_ip_master"},{"location":{"location":"https://github.com/nuyer/ip.git","repoName":"ip","organization":"nuyer","domainName":"github"},"branch":"master","displayName":"nuyer/ip[master]","outputFolderName":"nuyer_ip_master"},{"location":{"location":"https://github.com/SeaHogs/ip.git","repoName":"ip","organization":"SeaHogs","domainName":"github"},"branch":"master","displayName":"SeaHogs/ip[master]","outputFolderName":"SeaHogs_ip_master"},{"location":{"location":"https://github.com/TarinPairor/ip.git","repoName":"ip","organization":"TarinPairor","domainName":"github"},"branch":"master","displayName":"TarinPairor/ip[master]","outputFolderName":"TarinPairor_ip_master"},{"location":{"location":"https://github.com/KSSWSept20/ip.git","repoName":"ip","organization":"KSSWSept20","domainName":"github"},"branch":"master","displayName":"KSSWSept20/ip[master]","outputFolderName":"KSSWSept20_ip_master"},{"location":{"location":"https://github.com/myang2020/ip.git","repoName":"ip","organization":"myang2020","domainName":"github"},"branch":"master","displayName":"myang2020/ip[master]","outputFolderName":"myang2020_ip_master"},{"location":{"location":"https://github.com/leepoeaik/ip.git","repoName":"ip","organization":"leepoeaik","domainName":"github"},"branch":"master","displayName":"leepoeaik/ip[master]","outputFolderName":"leepoeaik_ip_master"},{"location":{"location":"https://github.com/justinlengch/ip.git","repoName":"ip","organization":"justinlengch","domainName":"github"},"branch":"master","displayName":"justinlengch/ip[master]","outputFolderName":"justinlengch_ip_master"},{"location":{"location":"https://github.com/Li-Zizhen/ip.git","repoName":"ip","organization":"Li-Zizhen","domainName":"github"},"branch":"master","displayName":"Li-Zizhen/ip[master]","outputFolderName":"Li-Zizhen_ip_master"},{"location":{"location":"https://github.com/ashleygoh1/ip.git","repoName":"ip","organization":"ashleygoh1","domainName":"github"},"branch":"master","displayName":"ashleygoh1/ip[master]","outputFolderName":"ashleygoh1_ip_master"},{"location":{"location":"https://github.com/Wongqingyee/ip.git","repoName":"ip","organization":"Wongqingyee","domainName":"github"},"branch":"master","displayName":"Wongqingyee/ip[master]","outputFolderName":"Wongqingyee_ip_master"},{"location":{"location":"https://github.com/AjayArvind2207/ip.git","repoName":"ip","organization":"AjayArvind2207","domainName":"github"},"branch":"master","displayName":"AjayArvind2207/ip[master]","outputFolderName":"AjayArvind2207_ip_master"},{"location":{"location":"https://github.com/Austintjh19/ip.git","repoName":"ip","organization":"Austintjh19","domainName":"github"},"branch":"master","displayName":"Austintjh19/ip[master]","outputFolderName":"Austintjh19_ip_master"},{"location":{"location":"https://github.com/jinhanfromNUS/ip.git","repoName":"ip","organization":"jinhanfromNUS","domainName":"github"},"branch":"master","displayName":"jinhanfromNUS/ip[master]","outputFolderName":"jinhanfromNUS_ip_master"},{"location":{"location":"https://github.com/ziyi22/ip.git","repoName":"ip","organization":"ziyi22","domainName":"github"},"branch":"master","displayName":"ziyi22/ip[master]","outputFolderName":"ziyi22_ip_master"},{"location":{"location":"https://github.com/menatahari/ip.git","repoName":"ip","organization":"menatahari","domainName":"github"},"branch":"master","displayName":"menatahari/ip[master]","outputFolderName":"menatahari_ip_master"},{"location":{"location":"https://github.com/ThitipatC/ip.git","repoName":"ip","organization":"ThitipatC","domainName":"github"},"branch":"master","displayName":"ThitipatC/ip[master]","outputFolderName":"ThitipatC_ip_master"},{"location":{"location":"https://github.com/purivirakarin/ip.git","repoName":"ip","organization":"purivirakarin","domainName":"github"},"branch":"master","displayName":"purivirakarin/ip[master]","outputFolderName":"purivirakarin_ip_master"},{"location":{"location":"https://github.com/modembcc/ip.git","repoName":"ip","organization":"modembcc","domainName":"github"},"branch":"master","displayName":"modembcc/ip[master]","outputFolderName":"modembcc_ip_master"},{"location":{"location":"https://github.com/yashma-sonara/ip.git","repoName":"ip","organization":"yashma-sonara","domainName":"github"},"branch":"master","displayName":"yashma-sonara/ip[master]","outputFolderName":"yashma-sonara_ip_master"},{"location":{"location":"https://github.com/0liverkong/ip.git","repoName":"ip","organization":"0liverkong","domainName":"github"},"branch":"master","displayName":"0liverkong/ip[master]","outputFolderName":"0liverkong_ip_master"},{"location":{"location":"https://github.com/dhlee03/ip.git","repoName":"ip","organization":"dhlee03","domainName":"github"},"branch":"master","displayName":"dhlee03/ip[master]","outputFolderName":"dhlee03_ip_master"},{"location":{"location":"https://github.com/shayaansultan/ip.git","repoName":"ip","organization":"shayaansultan","domainName":"github"},"branch":"master","displayName":"shayaansultan/ip[master]","outputFolderName":"shayaansultan_ip_master"},{"location":{"location":"https://github.com/ljy0422/ip.git","repoName":"ip","organization":"ljy0422","domainName":"github"},"branch":"master","displayName":"ljy0422/ip[master]","outputFolderName":"ljy0422_ip_master"},{"location":{"location":"https://github.com/JukeBoxK/ip.git","repoName":"ip","organization":"JukeBoxK","domainName":"github"},"branch":"master","displayName":"JukeBoxK/ip[master]","outputFolderName":"JukeBoxK_ip_master"},{"location":{"location":"https://github.com/Howlong11/ip.git","repoName":"ip","organization":"Howlong11","domainName":"github"},"branch":"master","displayName":"Howlong11/ip[master]","outputFolderName":"Howlong11_ip_master"},{"location":{"location":"https://github.com/Hibeom0929/ip.git","repoName":"ip","organization":"Hibeom0929","domainName":"github"},"branch":"master","displayName":"Hibeom0929/ip[master]","outputFolderName":"Hibeom0929_ip_master"},{"location":{"location":"https://github.com/VatsalVitosh/ip.git","repoName":"ip","organization":"VatsalVitosh","domainName":"github"},"branch":"master","displayName":"VatsalVitosh/ip[master]","outputFolderName":"VatsalVitosh_ip_master"},{"location":{"location":"https://github.com/bachletuankhai/ip.git","repoName":"ip","organization":"bachletuankhai","domainName":"github"},"branch":"master","displayName":"bachletuankhai/ip[master]","outputFolderName":"bachletuankhai_ip_master"},{"location":{"location":"https://github.com/RunjiaChen/ip.git","repoName":"ip","organization":"RunjiaChen","domainName":"github"},"branch":"master","displayName":"RunjiaChen/ip[master]","outputFolderName":"RunjiaChen_ip_master"}],"errorSet":[{"repoName":"JerryWang0000/ip[master]","errorMessage":"Failed to clone from https://github.com/JerryWang0000/ip.git"},{"repoName":"ShanylOng/ip[master]","errorMessage":"Failed to clone from https://github.com/ShanylOng/ip.git"},{"repoName":"chuahjiajie/ip[master]","errorMessage":"Failed to clone from https://github.com/chuahjiajie/ip.git"},{"repoName":"Ryan-Reno/ip[master]","errorMessage":"Failed to clone from https://github.com/Ryan-Reno/ip.git"},{"repoName":"tcjazwei/ip[master]","errorMessage":"Failed to clone from https://github.com/tcjazwei/ip.git"},{"repoName":"Morninggloryyy/ip[master]","errorMessage":"Failed to clone from https://github.com/Morninggloryyy/ip.git"},{"repoName":"quelinxiao/ip[master]","errorMessage":"Failed to clone from https://github.com/quelinxiao/ip.git"},{"repoName":"ValenciaLim/ip[master]","errorMessage":"Failed to clone from https://github.com/ValenciaLim/ip.git"},{"repoName":"nusliuyifan/ip[master]","errorMessage":"Failed to clone from https://github.com/nusliuyifan/ip.git"},{"repoName":"peterXGD/ip[master]","errorMessage":"Failed to clone from https://github.com/peterXGD/ip.git"},{"repoName":"IamZhenHong/ip[master]","errorMessage":"Failed to clone from https://github.com/IamZhenHong/ip.git"},{"repoName":"zhenghuil/ip[master]","errorMessage":"Failed to clone from https://github.com/zhenghuil/ip.git"}],"sinceDate":"2024-01-19","untilDate":"2024-01-30","isSinceDateProvided":true,"isUntilDateProvided":false,"supportedDomainUrlMap":{"NOT_RECOGNIZED":{"BRANCH":"","REPO_URL":"UNSUPPORTED","BASE_URL":"UNSUPPORTED","HISTORY_PATH":"","COMMIT_PATH":"","BLAME_PATH":""},"github":{"BRANCH":"tree/$BRANCH","REPO_URL":"https://github.com/$ORGANIZATION/$REPO_NAME/","BASE_URL":"https://github.com/","HISTORY_PATH":"commits/$BRANCH/$FILE_PATH","COMMIT_PATH":"commit/$COMMIT_HASH","BLAME_PATH":"blame/$BRANCH/$FILE_PATH"}}} +{"repoSenseVersion":"6481806501","reportGeneratedTime":"Tue Jan 30 14:31:56 2024 UTC+08:00","reportGenerationTime":" 1 minute(s) 23.30 second(s)","zoneId":"UTC+08:00","reportTitle":"CS2103 iP Code Dashboard","repos":[{"location":{"location":"https://github.com/darryl-chan/ip.git","repoName":"ip","organization":"darryl-chan","domainName":"github"},"branch":"master","displayName":"darryl-chan/ip[master]","outputFolderName":"darryl-chan_ip_master"},{"location":{"location":"https://github.com/gowthaman-01/ip.git","repoName":"ip","organization":"gowthaman-01","domainName":"github"},"branch":"master","displayName":"gowthaman-01/ip[master]","outputFolderName":"gowthaman-01_ip_master"},{"location":{"location":"https://github.com/ChrisHo1341/ip.git","repoName":"ip","organization":"ChrisHo1341","domainName":"github"},"branch":"master","displayName":"ChrisHo1341/ip[master]","outputFolderName":"ChrisHo1341_ip_master"},{"location":{"location":"https://github.com/sebin0817/ip.git","repoName":"ip","organization":"sebin0817","domainName":"github"},"branch":"master","displayName":"sebin0817/ip[master]","outputFolderName":"sebin0817_ip_master"},{"location":{"location":"https://github.com/tanjiajiajun/ip.git","repoName":"ip","organization":"tanjiajiajun","domainName":"github"},"branch":"master","displayName":"tanjiajiajun/ip[master]","outputFolderName":"tanjiajiajun_ip_master"},{"location":{"location":"https://github.com/Arixeyeion/ip.git","repoName":"ip","organization":"Arixeyeion","domainName":"github"},"branch":"master","displayName":"Arixeyeion/ip[master]","outputFolderName":"Arixeyeion_ip_master"},{"location":{"location":"https://github.com/jeremiahlzz/ip.git","repoName":"ip","organization":"jeremiahlzz","domainName":"github"},"branch":"master","displayName":"jeremiahlzz/ip[master]","outputFolderName":"jeremiahlzz_ip_master"},{"location":{"location":"https://github.com/joenus/ip.git","repoName":"ip","organization":"joenus","domainName":"github"},"branch":"master","displayName":"joenus/ip[master]","outputFolderName":"joenus_ip_master"},{"location":{"location":"https://github.com/xinen26/ip.git","repoName":"ip","organization":"xinen26","domainName":"github"},"branch":"master","displayName":"xinen26/ip[master]","outputFolderName":"xinen26_ip_master"},{"location":{"location":"https://github.com/matthewken19/ip.git","repoName":"ip","organization":"matthewken19","domainName":"github"},"branch":"master","displayName":"matthewken19/ip[master]","outputFolderName":"matthewken19_ip_master"},{"location":{"location":"https://github.com/YuZizhen/ip.git","repoName":"ip","organization":"YuZizhen","domainName":"github"},"branch":"master","displayName":"YuZizhen/ip[master]","outputFolderName":"YuZizhen_ip_master"},{"location":{"location":"https://github.com/marclamp/ip.git","repoName":"ip","organization":"marclamp","domainName":"github"},"branch":"master","displayName":"marclamp/ip[master]","outputFolderName":"marclamp_ip_master"},{"location":{"location":"https://github.com/fy17ohhh/ip.git","repoName":"ip","organization":"fy17ohhh","domainName":"github"},"branch":"master","displayName":"fy17ohhh/ip[master]","outputFolderName":"fy17ohhh_ip_master"},{"location":{"location":"https://github.com/lihaoquan/ip.git","repoName":"ip","organization":"lihaoquan","domainName":"github"},"branch":"master","displayName":"lihaoquan/ip[master]","outputFolderName":"lihaoquan_ip_master"},{"location":{"location":"https://github.com/guohuang88/ip.git","repoName":"ip","organization":"guohuang88","domainName":"github"},"branch":"master","displayName":"guohuang88/ip[master]","outputFolderName":"guohuang88_ip_master"},{"location":{"location":"https://github.com/redcolorbicycle/ip.git","repoName":"ip","organization":"redcolorbicycle","domainName":"github"},"branch":"master","displayName":"redcolorbicycle/ip[master]","outputFolderName":"redcolorbicycle_ip_master"},{"location":{"location":"https://github.com/Jerome-j/ip.git","repoName":"ip","organization":"Jerome-j","domainName":"github"},"branch":"master","displayName":"Jerome-j/ip[master]","outputFolderName":"Jerome-j_ip_master"},{"location":{"location":"https://github.com/sethteo/ip.git","repoName":"ip","organization":"sethteo","domainName":"github"},"branch":"master","displayName":"sethteo/ip[master]","outputFolderName":"sethteo_ip_master"},{"location":{"location":"https://github.com/TopKec/ip.git","repoName":"ip","organization":"TopKec","domainName":"github"},"branch":"master","displayName":"TopKec/ip[master]","outputFolderName":"TopKec_ip_master"},{"location":{"location":"https://github.com/joelgoh1/ip.git","repoName":"ip","organization":"joelgoh1","domainName":"github"},"branch":"master","displayName":"joelgoh1/ip[master]","outputFolderName":"joelgoh1_ip_master"},{"location":{"location":"https://github.com/chewbum/ip.git","repoName":"ip","organization":"chewbum","domainName":"github"},"branch":"master","displayName":"chewbum/ip[master]","outputFolderName":"chewbum_ip_master"},{"location":{"location":"https://github.com/timothysashimi/ip.git","repoName":"ip","organization":"timothysashimi","domainName":"github"},"branch":"master","displayName":"timothysashimi/ip[master]","outputFolderName":"timothysashimi_ip_master"},{"location":{"location":"https://github.com/beefsausagee/ip.git","repoName":"ip","organization":"beefsausagee","domainName":"github"},"branch":"master","displayName":"beefsausagee/ip[master]","outputFolderName":"beefsausagee_ip_master"},{"location":{"location":"https://github.com/jaejayrome/ip.git","repoName":"ip","organization":"jaejayrome","domainName":"github"},"branch":"master","displayName":"jaejayrome/ip[master]","outputFolderName":"jaejayrome_ip_master"},{"location":{"location":"https://github.com/KhoonSun47/ip.git","repoName":"ip","organization":"KhoonSun47","domainName":"github"},"branch":"master","displayName":"KhoonSun47/ip[master]","outputFolderName":"KhoonSun47_ip_master"},{"location":{"location":"https://github.com/Dethada/ip.git","repoName":"ip","organization":"Dethada","domainName":"github"},"branch":"master","displayName":"Dethada/ip[master]","outputFolderName":"Dethada_ip_master"},{"location":{"location":"https://github.com/AL-ZT/ip.git","repoName":"ip","organization":"AL-ZT","domainName":"github"},"branch":"master","displayName":"AL-ZT/ip[master]","outputFolderName":"AL-ZT_ip_master"},{"location":{"location":"https://github.com/Javiery3889/ip.git","repoName":"ip","organization":"Javiery3889","domainName":"github"},"branch":"master","displayName":"Javiery3889/ip[master]","outputFolderName":"Javiery3889_ip_master"},{"location":{"location":"https://github.com/garywongkai/ip.git","repoName":"ip","organization":"garywongkai","domainName":"github"},"branch":"master","displayName":"garywongkai/ip[master]","outputFolderName":"garywongkai_ip_master"},{"location":{"location":"https://github.com/ys112/ip.git","repoName":"ip","organization":"ys112","domainName":"github"},"branch":"master","displayName":"ys112/ip[master]","outputFolderName":"ys112_ip_master"},{"location":{"location":"https://github.com/jmsandiegoo/ip.git","repoName":"ip","organization":"jmsandiegoo","domainName":"github"},"branch":"master","displayName":"jmsandiegoo/ip[master]","outputFolderName":"jmsandiegoo_ip_master"},{"location":{"location":"https://github.com/KohGuanZeh/ip.git","repoName":"ip","organization":"KohGuanZeh","domainName":"github"},"branch":"master","displayName":"KohGuanZeh/ip[master]","outputFolderName":"KohGuanZeh_ip_master"},{"location":{"location":"https://github.com/felixchanyy/ip.git","repoName":"ip","organization":"felixchanyy","domainName":"github"},"branch":"master","displayName":"felixchanyy/ip[master]","outputFolderName":"felixchanyy_ip_master"},{"location":{"location":"https://github.com/tanqinyong/ip.git","repoName":"ip","organization":"tanqinyong","domainName":"github"},"branch":"master","displayName":"tanqinyong/ip[master]","outputFolderName":"tanqinyong_ip_master"},{"location":{"location":"https://github.com/Hwww23/ip.git","repoName":"ip","organization":"Hwww23","domainName":"github"},"branch":"master","displayName":"Hwww23/ip[master]","outputFolderName":"Hwww23_ip_master"},{"location":{"location":"https://github.com/zengzihui/ip.git","repoName":"ip","organization":"zengzihui","domainName":"github"},"branch":"master","displayName":"zengzihui/ip[master]","outputFolderName":"zengzihui_ip_master"},{"location":{"location":"https://github.com/Pluiexo/ip.git","repoName":"ip","organization":"Pluiexo","domainName":"github"},"branch":"master","displayName":"Pluiexo/ip[master]","outputFolderName":"Pluiexo_ip_master"},{"location":{"location":"https://github.com/yap-zong-xin/ip.git","repoName":"ip","organization":"yap-zong-xin","domainName":"github"},"branch":"master","displayName":"yap-zong-xin/ip[master]","outputFolderName":"yap-zong-xin_ip_master"},{"location":{"location":"https://github.com/JonChong98/ip.git","repoName":"ip","organization":"JonChong98","domainName":"github"},"branch":"master","displayName":"JonChong98/ip[master]","outputFolderName":"JonChong98_ip_master"},{"location":{"location":"https://github.com/lokidoki102/ip.git","repoName":"ip","organization":"lokidoki102","domainName":"github"},"branch":"master","displayName":"lokidoki102/ip[master]","outputFolderName":"lokidoki102_ip_master"},{"location":{"location":"https://github.com/choowengyan/ip.git","repoName":"ip","organization":"choowengyan","domainName":"github"},"branch":"master","displayName":"choowengyan/ip[master]","outputFolderName":"choowengyan_ip_master"},{"location":{"location":"https://github.com/SherisseTJW/ip.git","repoName":"ip","organization":"SherisseTJW","domainName":"github"},"branch":"master","displayName":"SherisseTJW/ip[master]","outputFolderName":"SherisseTJW_ip_master"},{"location":{"location":"https://github.com/iynixil/ip.git","repoName":"ip","organization":"iynixil","domainName":"github"},"branch":"master","displayName":"iynixil/ip[master]","outputFolderName":"iynixil_ip_master"},{"location":{"location":"https://github.com/whitesnowx/ip.git","repoName":"ip","organization":"whitesnowx","domainName":"github"},"branch":"master","displayName":"whitesnowx/ip[master]","outputFolderName":"whitesnowx_ip_master"},{"location":{"location":"https://github.com/AwJoey/ip.git","repoName":"ip","organization":"AwJoey","domainName":"github"},"branch":"master","displayName":"AwJoey/ip[master]","outputFolderName":"AwJoey_ip_master"},{"location":{"location":"https://github.com/rickkoh/ip.git","repoName":"ip","organization":"rickkoh","domainName":"github"},"branch":"master","displayName":"rickkoh/ip[master]","outputFolderName":"rickkoh_ip_master"},{"location":{"location":"https://github.com/caitlyntang/ip.git","repoName":"ip","organization":"caitlyntang","domainName":"github"},"branch":"master","displayName":"caitlyntang/ip[master]","outputFolderName":"caitlyntang_ip_master"},{"location":{"location":"https://github.com/tsulim/ip.git","repoName":"ip","organization":"tsulim","domainName":"github"},"branch":"master","displayName":"tsulim/ip[master]","outputFolderName":"tsulim_ip_master"},{"location":{"location":"https://github.com/Darylgolden/ip.git","repoName":"ip","organization":"Darylgolden","domainName":"github"},"branch":"master","displayName":"Darylgolden/ip[master]","outputFolderName":"Darylgolden_ip_master"},{"location":{"location":"https://github.com/biinnnggggg/ip.git","repoName":"ip","organization":"biinnnggggg","domainName":"github"},"branch":"master","displayName":"biinnnggggg/ip[master]","outputFolderName":"biinnnggggg_ip_master"},{"location":{"location":"https://github.com/Ma-Yirui/ip.git","repoName":"ip","organization":"Ma-Yirui","domainName":"github"},"branch":"master","displayName":"Ma-Yirui/ip[master]","outputFolderName":"Ma-Yirui_ip_master"},{"location":{"location":"https://github.com/itstrueitstrueitsrealitsreal/ip.git","repoName":"ip","organization":"itstrueitstrueitsrealitsreal","domainName":"github"},"branch":"master","displayName":"itstrueitstrueitsrealitsreal/ip[master]","outputFolderName":"itstrueitstrueitsrealitsreal_ip_master"},{"location":{"location":"https://github.com/vnnamng/ip.git","repoName":"ip","organization":"vnnamng","domainName":"github"},"branch":"master","displayName":"vnnamng/ip[master]","outputFolderName":"vnnamng_ip_master"},{"location":{"location":"https://github.com/minwaiphyo/ip.git","repoName":"ip","organization":"minwaiphyo","domainName":"github"},"branch":"master","displayName":"minwaiphyo/ip[master]","outputFolderName":"minwaiphyo_ip_master"},{"location":{"location":"https://github.com/amanzainal/ip.git","repoName":"ip","organization":"amanzainal","domainName":"github"},"branch":"master","displayName":"amanzainal/ip[master]","outputFolderName":"amanzainal_ip_master"},{"location":{"location":"https://github.com/raysonchia/ip.git","repoName":"ip","organization":"raysonchia","domainName":"github"},"branch":"master","displayName":"raysonchia/ip[master]","outputFolderName":"raysonchia_ip_master"},{"location":{"location":"https://github.com/zoebelle-pang/ip.git","repoName":"ip","organization":"zoebelle-pang","domainName":"github"},"branch":"master","displayName":"zoebelle-pang/ip[master]","outputFolderName":"zoebelle-pang_ip_master"},{"location":{"location":"https://github.com/DominicFuMJ/ip.git","repoName":"ip","organization":"DominicFuMJ","domainName":"github"},"branch":"master","displayName":"DominicFuMJ/ip[master]","outputFolderName":"DominicFuMJ_ip_master"},{"location":{"location":"https://github.com/NeoHW/ip.git","repoName":"ip","organization":"NeoHW","domainName":"github"},"branch":"master","displayName":"NeoHW/ip[master]","outputFolderName":"NeoHW_ip_master"},{"location":{"location":"https://github.com/ZhiWei1010/ip.git","repoName":"ip","organization":"ZhiWei1010","domainName":"github"},"branch":"master","displayName":"ZhiWei1010/ip[master]","outputFolderName":"ZhiWei1010_ip_master"},{"location":{"location":"https://github.com/tankh99/ip.git","repoName":"ip","organization":"tankh99","domainName":"github"},"branch":"master","displayName":"tankh99/ip[master]","outputFolderName":"tankh99_ip_master"},{"location":{"location":"https://github.com/YuvBindal/ip.git","repoName":"ip","organization":"YuvBindal","domainName":"github"},"branch":"master","displayName":"YuvBindal/ip[master]","outputFolderName":"YuvBindal_ip_master"},{"location":{"location":"https://github.com/chiralcentre/ip.git","repoName":"ip","organization":"chiralcentre","domainName":"github"},"branch":"master","displayName":"chiralcentre/ip[master]","outputFolderName":"chiralcentre_ip_master"},{"location":{"location":"https://github.com/cocoanautz/ip.git","repoName":"ip","organization":"cocoanautz","domainName":"github"},"branch":"master","displayName":"cocoanautz/ip[master]","outputFolderName":"cocoanautz_ip_master"},{"location":{"location":"https://github.com/martinng01/ip.git","repoName":"ip","organization":"martinng01","domainName":"github"},"branch":"master","displayName":"martinng01/ip[master]","outputFolderName":"martinng01_ip_master"},{"location":{"location":"https://github.com/pjanthony2001/ip.git","repoName":"ip","organization":"pjanthony2001","domainName":"github"},"branch":"master","displayName":"pjanthony2001/ip[master]","outputFolderName":"pjanthony2001_ip_master"},{"location":{"location":"https://github.com/yuechen2001/ip.git","repoName":"ip","organization":"yuechen2001","domainName":"github"},"branch":"master","displayName":"yuechen2001/ip[master]","outputFolderName":"yuechen2001_ip_master"},{"location":{"location":"https://github.com/SampsonYe1999/ip.git","repoName":"ip","organization":"SampsonYe1999","domainName":"github"},"branch":"master","displayName":"SampsonYe1999/ip[master]","outputFolderName":"SampsonYe1999_ip_master"},{"location":{"location":"https://github.com/ejnan/ip.git","repoName":"ip","organization":"ejnan","domainName":"github"},"branch":"master","displayName":"ejnan/ip[master]","outputFolderName":"ejnan_ip_master"},{"location":{"location":"https://github.com/c-j-lh/ip.git","repoName":"ip","organization":"c-j-lh","domainName":"github"},"branch":"master","displayName":"c-j-lh/ip[master]","outputFolderName":"c-j-lh_ip_master"},{"location":{"location":"https://github.com/xiaorui-ui/ip.git","repoName":"ip","organization":"xiaorui-ui","domainName":"github"},"branch":"master","displayName":"xiaorui-ui/ip[master]","outputFolderName":"xiaorui-ui_ip_master"},{"location":{"location":"https://github.com/qinboan/ip.git","repoName":"ip","organization":"qinboan","domainName":"github"},"branch":"master","displayName":"qinboan/ip[master]","outputFolderName":"qinboan_ip_master"},{"location":{"location":"https://github.com/qinxutan/ip.git","repoName":"ip","organization":"qinxutan","domainName":"github"},"branch":"master","displayName":"qinxutan/ip[master]","outputFolderName":"qinxutan_ip_master"},{"location":{"location":"https://github.com/S-Aishvarya/ip.git","repoName":"ip","organization":"S-Aishvarya","domainName":"github"},"branch":"master","displayName":"S-Aishvarya/ip[master]","outputFolderName":"S-Aishvarya_ip_master"},{"location":{"location":"https://github.com/zhekaiii/ip.git","repoName":"ip","organization":"zhekaiii","domainName":"github"},"branch":"master","displayName":"zhekaiii/ip[master]","outputFolderName":"zhekaiii_ip_master"},{"location":{"location":"https://github.com/taeewonnn/ip.git","repoName":"ip","organization":"taeewonnn","domainName":"github"},"branch":"master","displayName":"taeewonnn/ip[master]","outputFolderName":"taeewonnn_ip_master"},{"location":{"location":"https://github.com/hjungwoo01/ip.git","repoName":"ip","organization":"hjungwoo01","domainName":"github"},"branch":"master","displayName":"hjungwoo01/ip[master]","outputFolderName":"hjungwoo01_ip_master"},{"location":{"location":"https://github.com/ForAeons/ip.git","repoName":"ip","organization":"ForAeons","domainName":"github"},"branch":"master","displayName":"ForAeons/ip[master]","outputFolderName":"ForAeons_ip_master"},{"location":{"location":"https://github.com/minghowC/ip.git","repoName":"ip","organization":"minghowC","domainName":"github"},"branch":"master","displayName":"minghowC/ip[master]","outputFolderName":"minghowC_ip_master"},{"location":{"location":"https://github.com/E0735389/ip.git","repoName":"ip","organization":"E0735389","domainName":"github"},"branch":"master","displayName":"E0735389/ip[master]","outputFolderName":"E0735389_ip_master"},{"location":{"location":"https://github.com/Ty-stan0417/ip.git","repoName":"ip","organization":"Ty-stan0417","domainName":"github"},"branch":"master","displayName":"Ty-stan0417/ip[master]","outputFolderName":"Ty-stan0417_ip_master"},{"location":{"location":"https://github.com/dabzpengu/ip.git","repoName":"ip","organization":"dabzpengu","domainName":"github"},"branch":"master","displayName":"dabzpengu/ip[master]","outputFolderName":"dabzpengu_ip_master"},{"location":{"location":"https://github.com/rizkidelta/ip.git","repoName":"ip","organization":"rizkidelta","domainName":"github"},"branch":"master","displayName":"rizkidelta/ip[master]","outputFolderName":"rizkidelta_ip_master"},{"location":{"location":"https://github.com/wilsonwid/ip.git","repoName":"ip","organization":"wilsonwid","domainName":"github"},"branch":"master","displayName":"wilsonwid/ip[master]","outputFolderName":"wilsonwid_ip_master"},{"location":{"location":"https://github.com/chiageng/ip.git","repoName":"ip","organization":"chiageng","domainName":"github"},"branch":"master","displayName":"chiageng/ip[master]","outputFolderName":"chiageng_ip_master"},{"location":{"location":"https://github.com/julia-cp/ip.git","repoName":"ip","organization":"julia-cp","domainName":"github"},"branch":"master","displayName":"julia-cp/ip[master]","outputFolderName":"julia-cp_ip_master"},{"location":{"location":"https://github.com/ZHANGTIANYAO1/ip.git","repoName":"ip","organization":"ZHANGTIANYAO1","domainName":"github"},"branch":"master","displayName":"ZHANGTIANYAO1/ip[master]","outputFolderName":"ZHANGTIANYAO1_ip_master"},{"location":{"location":"https://github.com/LifHoshi/ip.git","repoName":"ip","organization":"LifHoshi","domainName":"github"},"branch":"master","displayName":"LifHoshi/ip[master]","outputFolderName":"LifHoshi_ip_master"},{"location":{"location":"https://github.com/ananya21/ip.git","repoName":"ip","organization":"ananya21","domainName":"github"},"branch":"master","displayName":"ananya21/ip[master]","outputFolderName":"ananya21_ip_master"},{"location":{"location":"https://github.com/acekhoon/ip.git","repoName":"ip","organization":"acekhoon","domainName":"github"},"branch":"master","displayName":"acekhoon/ip[master]","outputFolderName":"acekhoon_ip_master"},{"location":{"location":"https://github.com/willowisp01/ip.git","repoName":"ip","organization":"willowisp01","domainName":"github"},"branch":"master","displayName":"willowisp01/ip[master]","outputFolderName":"willowisp01_ip_master"},{"location":{"location":"https://github.com/Jajared/ip.git","repoName":"ip","organization":"Jajared","domainName":"github"},"branch":"master","displayName":"Jajared/ip[master]","outputFolderName":"Jajared_ip_master"},{"location":{"location":"https://github.com/JerryO3/ip.git","repoName":"ip","organization":"JerryO3","domainName":"github"},"branch":"master","displayName":"JerryO3/ip[master]","outputFolderName":"JerryO3_ip_master"},{"location":{"location":"https://github.com/cyqjoseph/ip.git","repoName":"ip","organization":"cyqjoseph","domainName":"github"},"branch":"master","displayName":"cyqjoseph/ip[master]","outputFolderName":"cyqjoseph_ip_master"},{"location":{"location":"https://github.com/jieqiboh/ip.git","repoName":"ip","organization":"jieqiboh","domainName":"github"},"branch":"master","displayName":"jieqiboh/ip[master]","outputFolderName":"jieqiboh_ip_master"},{"location":{"location":"https://github.com/theman-oj10/ip.git","repoName":"ip","organization":"theman-oj10","domainName":"github"},"branch":"master","displayName":"theman-oj10/ip[master]","outputFolderName":"theman-oj10_ip_master"},{"location":{"location":"https://github.com/owenong1/ip.git","repoName":"ip","organization":"owenong1","domainName":"github"},"branch":"master","displayName":"owenong1/ip[master]","outputFolderName":"owenong1_ip_master"},{"location":{"location":"https://github.com/aureliony/ip.git","repoName":"ip","organization":"aureliony","domainName":"github"},"branch":"master","displayName":"aureliony/ip[master]","outputFolderName":"aureliony_ip_master"},{"location":{"location":"https://github.com/yisiox/ip.git","repoName":"ip","organization":"yisiox","domainName":"github"},"branch":"master","displayName":"yisiox/ip[master]","outputFolderName":"yisiox_ip_master"},{"location":{"location":"https://github.com/Darkarche3/ip.git","repoName":"ip","organization":"Darkarche3","domainName":"github"},"branch":"master","displayName":"Darkarche3/ip[master]","outputFolderName":"Darkarche3_ip_master"},{"location":{"location":"https://github.com/Jolonauh/ip.git","repoName":"ip","organization":"Jolonauh","domainName":"github"},"branch":"master","displayName":"Jolonauh/ip[master]","outputFolderName":"Jolonauh_ip_master"},{"location":{"location":"https://github.com/kervyntan/ip.git","repoName":"ip","organization":"kervyntan","domainName":"github"},"branch":"master","displayName":"kervyntan/ip[master]","outputFolderName":"kervyntan_ip_master"},{"location":{"location":"https://github.com/yashpola/ip.git","repoName":"ip","organization":"yashpola","domainName":"github"},"branch":"master","displayName":"yashpola/ip[master]","outputFolderName":"yashpola_ip_master"},{"location":{"location":"https://github.com/wongkj12/ip.git","repoName":"ip","organization":"wongkj12","domainName":"github"},"branch":"master","displayName":"wongkj12/ip[master]","outputFolderName":"wongkj12_ip_master"},{"location":{"location":"https://github.com/tituschewxj/ip.git","repoName":"ip","organization":"tituschewxj","domainName":"github"},"branch":"master","displayName":"tituschewxj/ip[master]","outputFolderName":"tituschewxj_ip_master"},{"location":{"location":"https://github.com/Zer0Legion/ip.git","repoName":"ip","organization":"Zer0Legion","domainName":"github"},"branch":"master","displayName":"Zer0Legion/ip[master]","outputFolderName":"Zer0Legion_ip_master"},{"location":{"location":"https://github.com/g-tejas/ip.git","repoName":"ip","organization":"g-tejas","domainName":"github"},"branch":"master","displayName":"g-tejas/ip[master]","outputFolderName":"g-tejas_ip_master"},{"location":{"location":"https://github.com/legionlegion/ip.git","repoName":"ip","organization":"legionlegion","domainName":"github"},"branch":"master","displayName":"legionlegion/ip[master]","outputFolderName":"legionlegion_ip_master"},{"location":{"location":"https://github.com/tanguoyang/ip.git","repoName":"ip","organization":"tanguoyang","domainName":"github"},"branch":"master","displayName":"tanguoyang/ip[master]","outputFolderName":"tanguoyang_ip_master"},{"location":{"location":"https://github.com/jovantanyk/ip.git","repoName":"ip","organization":"jovantanyk","domainName":"github"},"branch":"master","displayName":"jovantanyk/ip[master]","outputFolderName":"jovantanyk_ip_master"},{"location":{"location":"https://github.com/Xilef121/ip.git","repoName":"ip","organization":"Xilef121","domainName":"github"},"branch":"master","displayName":"Xilef121/ip[master]","outputFolderName":"Xilef121_ip_master"},{"location":{"location":"https://github.com/ziiqii/ip.git","repoName":"ip","organization":"ziiqii","domainName":"github"},"branch":"master","displayName":"ziiqii/ip[master]","outputFolderName":"ziiqii_ip_master"},{"location":{"location":"https://github.com/Bandov/ip.git","repoName":"ip","organization":"Bandov","domainName":"github"},"branch":"master","displayName":"Bandov/ip[master]","outputFolderName":"Bandov_ip_master"},{"location":{"location":"https://github.com/appleraincoat/ip.git","repoName":"ip","organization":"appleraincoat","domainName":"github"},"branch":"master","displayName":"appleraincoat/ip[master]","outputFolderName":"appleraincoat_ip_master"},{"location":{"location":"https://github.com/belligerentbeagle/ip.git","repoName":"ip","organization":"belligerentbeagle","domainName":"github"},"branch":"master","displayName":"belligerentbeagle/ip[master]","outputFolderName":"belligerentbeagle_ip_master"},{"location":{"location":"https://github.com/limrik/ip.git","repoName":"ip","organization":"limrik","domainName":"github"},"branch":"master","displayName":"limrik/ip[master]","outputFolderName":"limrik_ip_master"},{"location":{"location":"https://github.com/Tsenrae/ip.git","repoName":"ip","organization":"Tsenrae","domainName":"github"},"branch":"master","displayName":"Tsenrae/ip[master]","outputFolderName":"Tsenrae_ip_master"},{"location":{"location":"https://github.com/nichee/ip.git","repoName":"ip","organization":"nichee","domainName":"github"},"branch":"master","displayName":"nichee/ip[master]","outputFolderName":"nichee_ip_master"},{"location":{"location":"https://github.com/justincred/ip.git","repoName":"ip","organization":"justincred","domainName":"github"},"branch":"master","displayName":"justincred/ip[master]","outputFolderName":"justincred_ip_master"},{"location":{"location":"https://github.com/Tanzhiheng26/ip.git","repoName":"ip","organization":"Tanzhiheng26","domainName":"github"},"branch":"master","displayName":"Tanzhiheng26/ip[master]","outputFolderName":"Tanzhiheng26_ip_master"},{"location":{"location":"https://github.com/cliftonchee/ip.git","repoName":"ip","organization":"cliftonchee","domainName":"github"},"branch":"master","displayName":"cliftonchee/ip[master]","outputFolderName":"cliftonchee_ip_master"},{"location":{"location":"https://github.com/SimHanKiong/ip.git","repoName":"ip","organization":"SimHanKiong","domainName":"github"},"branch":"master","displayName":"SimHanKiong/ip[master]","outputFolderName":"SimHanKiong_ip_master"},{"location":{"location":"https://github.com/ChrysanthemumT/ip.git","repoName":"ip","organization":"ChrysanthemumT","domainName":"github"},"branch":"master","displayName":"ChrysanthemumT/ip[master]","outputFolderName":"ChrysanthemumT_ip_master"},{"location":{"location":"https://github.com/jyztintan/ip.git","repoName":"ip","organization":"jyztintan","domainName":"github"},"branch":"master","displayName":"jyztintan/ip[master]","outputFolderName":"jyztintan_ip_master"},{"location":{"location":"https://github.com/ondretann/ip.git","repoName":"ip","organization":"ondretann","domainName":"github"},"branch":"master","displayName":"ondretann/ip[master]","outputFolderName":"ondretann_ip_master"},{"location":{"location":"https://github.com/bryanyee33/ip.git","repoName":"ip","organization":"bryanyee33","domainName":"github"},"branch":"master","displayName":"bryanyee33/ip[master]","outputFolderName":"bryanyee33_ip_master"},{"location":{"location":"https://github.com/chonghaoen/ip.git","repoName":"ip","organization":"chonghaoen","domainName":"github"},"branch":"master","displayName":"chonghaoen/ip[master]","outputFolderName":"chonghaoen_ip_master"},{"location":{"location":"https://github.com/ronnnnnnnnn/ip.git","repoName":"ip","organization":"ronnnnnnnnn","domainName":"github"},"branch":"master","displayName":"ronnnnnnnnn/ip[master]","outputFolderName":"ronnnnnnnnn_ip_master"},{"location":{"location":"https://github.com/ChuaZenKhoon/ip.git","repoName":"ip","organization":"ChuaZenKhoon","domainName":"github"},"branch":"master","displayName":"ChuaZenKhoon/ip[master]","outputFolderName":"ChuaZenKhoon_ip_master"},{"location":{"location":"https://github.com/gerteck/ip.git","repoName":"ip","organization":"gerteck","domainName":"github"},"branch":"master","displayName":"gerteck/ip[master]","outputFolderName":"gerteck_ip_master"},{"location":{"location":"https://github.com/ReganChoy/ip.git","repoName":"ip","organization":"ReganChoy","domainName":"github"},"branch":"master","displayName":"ReganChoy/ip[master]","outputFolderName":"ReganChoy_ip_master"},{"location":{"location":"https://github.com/zhuuyicheng/ip.git","repoName":"ip","organization":"zhuuyicheng","domainName":"github"},"branch":"master","displayName":"zhuuyicheng/ip[master]","outputFolderName":"zhuuyicheng_ip_master"},{"location":{"location":"https://github.com/chaaaaun/ip.git","repoName":"ip","organization":"chaaaaun","domainName":"github"},"branch":"master","displayName":"chaaaaun/ip[master]","outputFolderName":"chaaaaun_ip_master"},{"location":{"location":"https://github.com/ChuaZiLong/ip.git","repoName":"ip","organization":"ChuaZiLong","domainName":"github"},"branch":"master","displayName":"ChuaZiLong/ip[master]","outputFolderName":"ChuaZiLong_ip_master"},{"location":{"location":"https://github.com/Benson15912/ip.git","repoName":"ip","organization":"Benson15912","domainName":"github"},"branch":"master","displayName":"Benson15912/ip[master]","outputFolderName":"Benson15912_ip_master"},{"location":{"location":"https://github.com/c-wenlong/ip.git","repoName":"ip","organization":"c-wenlong","domainName":"github"},"branch":"master","displayName":"c-wenlong/ip[master]","outputFolderName":"c-wenlong_ip_master"},{"location":{"location":"https://github.com/gavin331/ip.git","repoName":"ip","organization":"gavin331","domainName":"github"},"branch":"master","displayName":"gavin331/ip[master]","outputFolderName":"gavin331_ip_master"},{"location":{"location":"https://github.com/CJerrong/ip.git","repoName":"ip","organization":"CJerrong","domainName":"github"},"branch":"master","displayName":"CJerrong/ip[master]","outputFolderName":"CJerrong_ip_master"},{"location":{"location":"https://github.com/ibnu2651/ip.git","repoName":"ip","organization":"ibnu2651","domainName":"github"},"branch":"master","displayName":"ibnu2651/ip[master]","outputFolderName":"ibnu2651_ip_master"},{"location":{"location":"https://github.com/1rbg/ip.git","repoName":"ip","organization":"1rbg","domainName":"github"},"branch":"master","displayName":"1rbg/ip[master]","outputFolderName":"1rbg_ip_master"},{"location":{"location":"https://github.com/alvinnzz/ip.git","repoName":"ip","organization":"alvinnzz","domainName":"github"},"branch":"master","displayName":"alvinnzz/ip[master]","outputFolderName":"alvinnzz_ip_master"},{"location":{"location":"https://github.com/whelan-low/ip.git","repoName":"ip","organization":"whelan-low","domainName":"github"},"branch":"master","displayName":"whelan-low/ip[master]","outputFolderName":"whelan-low_ip_master"},{"location":{"location":"https://github.com/ReflectiveObsidian/ip.git","repoName":"ip","organization":"ReflectiveObsidian","domainName":"github"},"branch":"master","displayName":"ReflectiveObsidian/ip[master]","outputFolderName":"ReflectiveObsidian_ip_master"},{"location":{"location":"https://github.com/kwuunnn/ip.git","repoName":"ip","organization":"kwuunnn","domainName":"github"},"branch":"master","displayName":"kwuunnn/ip[master]","outputFolderName":"kwuunnn_ip_master"},{"location":{"location":"https://github.com/billyhoce/ip.git","repoName":"ip","organization":"billyhoce","domainName":"github"},"branch":"master","displayName":"billyhoce/ip[master]","outputFolderName":"billyhoce_ip_master"},{"location":{"location":"https://github.com/Ryo-Seah/ip.git","repoName":"ip","organization":"Ryo-Seah","domainName":"github"},"branch":"master","displayName":"Ryo-Seah/ip[master]","outputFolderName":"Ryo-Seah_ip_master"},{"location":{"location":"https://github.com/meowwtama/ip.git","repoName":"ip","organization":"meowwtama","domainName":"github"},"branch":"master","displayName":"meowwtama/ip[master]","outputFolderName":"meowwtama_ip_master"},{"location":{"location":"https://github.com/gingerbreaf/ip.git","repoName":"ip","organization":"gingerbreaf","domainName":"github"},"branch":"master","displayName":"gingerbreaf/ip[master]","outputFolderName":"gingerbreaf_ip_master"},{"location":{"location":"https://github.com/yeoshuheng/ip.git","repoName":"ip","organization":"yeoshuheng","domainName":"github"},"branch":"master","displayName":"yeoshuheng/ip[master]","outputFolderName":"yeoshuheng_ip_master"},{"location":{"location":"https://github.com/shaunlxw/ip.git","repoName":"ip","organization":"shaunlxw","domainName":"github"},"branch":"master","displayName":"shaunlxw/ip[master]","outputFolderName":"shaunlxw_ip_master"},{"location":{"location":"https://github.com/DingBao-sys/ip.git","repoName":"ip","organization":"DingBao-sys","domainName":"github"},"branch":"master","displayName":"DingBao-sys/ip[master]","outputFolderName":"DingBao-sys_ip_master"},{"location":{"location":"https://github.com/ashleyclx/ip.git","repoName":"ip","organization":"ashleyclx","domainName":"github"},"branch":"master","displayName":"ashleyclx/ip[master]","outputFolderName":"ashleyclx_ip_master"},{"location":{"location":"https://github.com/TheodoreKooo/ip.git","repoName":"ip","organization":"TheodoreKooo","domainName":"github"},"branch":"master","displayName":"TheodoreKooo/ip[master]","outputFolderName":"TheodoreKooo_ip_master"},{"location":{"location":"https://github.com/casaarlai/ip.git","repoName":"ip","organization":"casaarlai","domainName":"github"},"branch":"master","displayName":"casaarlai/ip[master]","outputFolderName":"casaarlai_ip_master"},{"location":{"location":"https://github.com/sun-ruiheng/ip.git","repoName":"ip","organization":"sun-ruiheng","domainName":"github"},"branch":"master","displayName":"sun-ruiheng/ip[master]","outputFolderName":"sun-ruiheng_ip_master"},{"location":{"location":"https://github.com/Fidget-Spinner/ip.git","repoName":"ip","organization":"Fidget-Spinner","domainName":"github"},"branch":"master","displayName":"Fidget-Spinner/ip[master]","outputFolderName":"Fidget-Spinner_ip_master"},{"location":{"location":"https://github.com/Cedricaca/ip.git","repoName":"ip","organization":"Cedricaca","domainName":"github"},"branch":"master","displayName":"Cedricaca/ip[master]","outputFolderName":"Cedricaca_ip_master"},{"location":{"location":"https://github.com/YowSiaoKang/ip.git","repoName":"ip","organization":"YowSiaoKang","domainName":"github"},"branch":"master","displayName":"YowSiaoKang/ip[master]","outputFolderName":"YowSiaoKang_ip_master"},{"location":{"location":"https://github.com/J-wang-CSMA/ip.git","repoName":"ip","organization":"J-wang-CSMA","domainName":"github"},"branch":"master","displayName":"J-wang-CSMA/ip[master]","outputFolderName":"J-wang-CSMA_ip_master"},{"location":{"location":"https://github.com/Ragnapop/ip.git","repoName":"ip","organization":"Ragnapop","domainName":"github"},"branch":"master","displayName":"Ragnapop/ip[master]","outputFolderName":"Ragnapop_ip_master"},{"location":{"location":"https://github.com/UdhayaShan1/ip.git","repoName":"ip","organization":"UdhayaShan1","domainName":"github"},"branch":"master","displayName":"UdhayaShan1/ip[master]","outputFolderName":"UdhayaShan1_ip_master"},{"location":{"location":"https://github.com/tayziyi/ip.git","repoName":"ip","organization":"tayziyi","domainName":"github"},"branch":"master","displayName":"tayziyi/ip[master]","outputFolderName":"tayziyi_ip_master"},{"location":{"location":"https://github.com/blaukc/ip.git","repoName":"ip","organization":"blaukc","domainName":"github"},"branch":"master","displayName":"blaukc/ip[master]","outputFolderName":"blaukc_ip_master"},{"location":{"location":"https://github.com/kokerinks/ip.git","repoName":"ip","organization":"kokerinks","domainName":"github"},"branch":"master","displayName":"kokerinks/ip[master]","outputFolderName":"kokerinks_ip_master"},{"location":{"location":"https://github.com/mahadhir247/ip.git","repoName":"ip","organization":"mahadhir247","domainName":"github"},"branch":"master","displayName":"mahadhir247/ip[master]","outputFolderName":"mahadhir247_ip_master"},{"location":{"location":"https://github.com/delishad21/ip.git","repoName":"ip","organization":"delishad21","domainName":"github"},"branch":"master","displayName":"delishad21/ip[master]","outputFolderName":"delishad21_ip_master"},{"location":{"location":"https://github.com/gavingoh99/ip.git","repoName":"ip","organization":"gavingoh99","domainName":"github"},"branch":"master","displayName":"gavingoh99/ip[master]","outputFolderName":"gavingoh99_ip_master"},{"location":{"location":"https://github.com/kjw142857/ip.git","repoName":"ip","organization":"kjw142857","domainName":"github"},"branch":"master","displayName":"kjw142857/ip[master]","outputFolderName":"kjw142857_ip_master"},{"location":{"location":"https://github.com/dayn-1/ip.git","repoName":"ip","organization":"dayn-1","domainName":"github"},"branch":"master","displayName":"dayn-1/ip[master]","outputFolderName":"dayn-1_ip_master"},{"location":{"location":"https://github.com/macareonie/ip.git","repoName":"ip","organization":"macareonie","domainName":"github"},"branch":"master","displayName":"macareonie/ip[master]","outputFolderName":"macareonie_ip_master"},{"location":{"location":"https://github.com/Rikko1204/ip.git","repoName":"ip","organization":"Rikko1204","domainName":"github"},"branch":"master","displayName":"Rikko1204/ip[master]","outputFolderName":"Rikko1204_ip_master"},{"location":{"location":"https://github.com/teojunda/ip.git","repoName":"ip","organization":"teojunda","domainName":"github"},"branch":"master","displayName":"teojunda/ip[master]","outputFolderName":"teojunda_ip_master"},{"location":{"location":"https://github.com/thewongdylan/ip.git","repoName":"ip","organization":"thewongdylan","domainName":"github"},"branch":"master","displayName":"thewongdylan/ip[master]","outputFolderName":"thewongdylan_ip_master"},{"location":{"location":"https://github.com/bertrandong/ip.git","repoName":"ip","organization":"bertrandong","domainName":"github"},"branch":"master","displayName":"bertrandong/ip[master]","outputFolderName":"bertrandong_ip_master"},{"location":{"location":"https://github.com/rertyy/ip.git","repoName":"ip","organization":"rertyy","domainName":"github"},"branch":"master","displayName":"rertyy/ip[master]","outputFolderName":"rertyy_ip_master"},{"location":{"location":"https://github.com/soons1/ip.git","repoName":"ip","organization":"soons1","domainName":"github"},"branch":"master","displayName":"soons1/ip[master]","outputFolderName":"soons1_ip_master"},{"location":{"location":"https://github.com/solomonng2001/ip.git","repoName":"ip","organization":"solomonng2001","domainName":"github"},"branch":"master","displayName":"solomonng2001/ip[master]","outputFolderName":"solomonng2001_ip_master"},{"location":{"location":"https://github.com/guanquann/ip.git","repoName":"ip","organization":"guanquann","domainName":"github"},"branch":"master","displayName":"guanquann/ip[master]","outputFolderName":"guanquann_ip_master"},{"location":{"location":"https://github.com/YuSoonZ/ip.git","repoName":"ip","organization":"YuSoonZ","domainName":"github"},"branch":"master","displayName":"YuSoonZ/ip[master]","outputFolderName":"YuSoonZ_ip_master"},{"location":{"location":"https://github.com/JuliaPoo/ip.git","repoName":"ip","organization":"JuliaPoo","domainName":"github"},"branch":"master","displayName":"JuliaPoo/ip[master]","outputFolderName":"JuliaPoo_ip_master"},{"location":{"location":"https://github.com/dillontkh/ip.git","repoName":"ip","organization":"dillontkh","domainName":"github"},"branch":"master","displayName":"dillontkh/ip[master]","outputFolderName":"dillontkh_ip_master"},{"location":{"location":"https://github.com/camille-readbean/ip.git","repoName":"ip","organization":"camille-readbean","domainName":"github"},"branch":"master","displayName":"camille-readbean/ip[master]","outputFolderName":"camille-readbean_ip_master"},{"location":{"location":"https://github.com/ruijietay/ip.git","repoName":"ip","organization":"ruijietay","domainName":"github"},"branch":"master","displayName":"ruijietay/ip[master]","outputFolderName":"ruijietay_ip_master"},{"location":{"location":"https://github.com/HM33-Stu/ip.git","repoName":"ip","organization":"HM33-Stu","domainName":"github"},"branch":"master","displayName":"HM33-Stu/ip[master]","outputFolderName":"HM33-Stu_ip_master"},{"location":{"location":"https://github.com/nobodyishappy/ip.git","repoName":"ip","organization":"nobodyishappy","domainName":"github"},"branch":"master","displayName":"nobodyishappy/ip[master]","outputFolderName":"nobodyishappy_ip_master"},{"location":{"location":"https://github.com/yadunut/ip.git","repoName":"ip","organization":"yadunut","domainName":"github"},"branch":"master","displayName":"yadunut/ip[master]","outputFolderName":"yadunut_ip_master"},{"location":{"location":"https://github.com/breezetall/ip.git","repoName":"ip","organization":"breezetall","domainName":"github"},"branch":"master","displayName":"breezetall/ip[master]","outputFolderName":"breezetall_ip_master"},{"location":{"location":"https://github.com/jjchee77/ip.git","repoName":"ip","organization":"jjchee77","domainName":"github"},"branch":"master","displayName":"jjchee77/ip[master]","outputFolderName":"jjchee77_ip_master"},{"location":{"location":"https://github.com/BryanL2303/ip.git","repoName":"ip","organization":"BryanL2303","domainName":"github"},"branch":"master","displayName":"BryanL2303/ip[master]","outputFolderName":"BryanL2303_ip_master"},{"location":{"location":"https://github.com/RyanNgWH/ip.git","repoName":"ip","organization":"RyanNgWH","domainName":"github"},"branch":"master","displayName":"RyanNgWH/ip[master]","outputFolderName":"RyanNgWH_ip_master"},{"location":{"location":"https://github.com/Jaspertzx/ip.git","repoName":"ip","organization":"Jaspertzx","domainName":"github"},"branch":"master","displayName":"Jaspertzx/ip[master]","outputFolderName":"Jaspertzx_ip_master"},{"location":{"location":"https://github.com/smolegz/ip.git","repoName":"ip","organization":"smolegz","domainName":"github"},"branch":"master","displayName":"smolegz/ip[master]","outputFolderName":"smolegz_ip_master"},{"location":{"location":"https://github.com/azumieflare/ip.git","repoName":"ip","organization":"azumieflare","domainName":"github"},"branch":"master","displayName":"azumieflare/ip[master]","outputFolderName":"azumieflare_ip_master"},{"location":{"location":"https://github.com/javierng2knus/ip.git","repoName":"ip","organization":"javierng2knus","domainName":"github"},"branch":"master","displayName":"javierng2knus/ip[master]","outputFolderName":"javierng2knus_ip_master"},{"location":{"location":"https://github.com/SimKianSeng/ip.git","repoName":"ip","organization":"SimKianSeng","domainName":"github"},"branch":"master","displayName":"SimKianSeng/ip[master]","outputFolderName":"SimKianSeng_ip_master"},{"location":{"location":"https://github.com/jasperng-nus/ip.git","repoName":"ip","organization":"jasperng-nus","domainName":"github"},"branch":"master","displayName":"jasperng-nus/ip[master]","outputFolderName":"jasperng-nus_ip_master"},{"location":{"location":"https://github.com/HongRay/ip.git","repoName":"ip","organization":"HongRay","domainName":"github"},"branch":"master","displayName":"HongRay/ip[master]","outputFolderName":"HongRay_ip_master"},{"location":{"location":"https://github.com/kailashgautham/ip.git","repoName":"ip","organization":"kailashgautham","domainName":"github"},"branch":"master","displayName":"kailashgautham/ip[master]","outputFolderName":"kailashgautham_ip_master"},{"location":{"location":"https://github.com/donwong2308/ip.git","repoName":"ip","organization":"donwong2308","domainName":"github"},"branch":"master","displayName":"donwong2308/ip[master]","outputFolderName":"donwong2308_ip_master"},{"location":{"location":"https://github.com/jayllo-c/ip.git","repoName":"ip","organization":"jayllo-c","domainName":"github"},"branch":"master","displayName":"jayllo-c/ip[master]","outputFolderName":"jayllo-c_ip_master"},{"location":{"location":"https://github.com/cheahTJ/ip.git","repoName":"ip","organization":"cheahTJ","domainName":"github"},"branch":"master","displayName":"cheahTJ/ip[master]","outputFolderName":"cheahTJ_ip_master"},{"location":{"location":"https://github.com/triciiaaa/ip.git","repoName":"ip","organization":"triciiaaa","domainName":"github"},"branch":"master","displayName":"triciiaaa/ip[master]","outputFolderName":"triciiaaa_ip_master"},{"location":{"location":"https://github.com/larainezo/ip.git","repoName":"ip","organization":"larainezo","domainName":"github"},"branch":"master","displayName":"larainezo/ip[master]","outputFolderName":"larainezo_ip_master"},{"location":{"location":"https://github.com/kailinteoo/ip.git","repoName":"ip","organization":"kailinteoo","domainName":"github"},"branch":"master","displayName":"kailinteoo/ip[master]","outputFolderName":"kailinteoo_ip_master"},{"location":{"location":"https://github.com/brennalaurentan/ip.git","repoName":"ip","organization":"brennalaurentan","domainName":"github"},"branch":"master","displayName":"brennalaurentan/ip[master]","outputFolderName":"brennalaurentan_ip_master"},{"location":{"location":"https://github.com/GiselleTan/ip.git","repoName":"ip","organization":"GiselleTan","domainName":"github"},"branch":"master","displayName":"GiselleTan/ip[master]","outputFolderName":"GiselleTan_ip_master"},{"location":{"location":"https://github.com/taufiq/ip.git","repoName":"ip","organization":"taufiq","domainName":"github"},"branch":"master","displayName":"taufiq/ip[master]","outputFolderName":"taufiq_ip_master"},{"location":{"location":"https://github.com/xuelinglow/ip.git","repoName":"ip","organization":"xuelinglow","domainName":"github"},"branch":"master","displayName":"xuelinglow/ip[master]","outputFolderName":"xuelinglow_ip_master"},{"location":{"location":"https://github.com/shunjieee/ip.git","repoName":"ip","organization":"shunjieee","domainName":"github"},"branch":"master","displayName":"shunjieee/ip[master]","outputFolderName":"shunjieee_ip_master"},{"location":{"location":"https://github.com/SherwynNg/ip.git","repoName":"ip","organization":"SherwynNg","domainName":"github"},"branch":"master","displayName":"SherwynNg/ip[master]","outputFolderName":"SherwynNg_ip_master"},{"location":{"location":"https://github.com/AndrewOng2066/ip.git","repoName":"ip","organization":"AndrewOng2066","domainName":"github"},"branch":"master","displayName":"AndrewOng2066/ip[master]","outputFolderName":"AndrewOng2066_ip_master"},{"location":{"location":"https://github.com/MarcusGitty/ip.git","repoName":"ip","organization":"MarcusGitty","domainName":"github"},"branch":"master","displayName":"MarcusGitty/ip[master]","outputFolderName":"MarcusGitty_ip_master"},{"location":{"location":"https://github.com/Anant1902/ip.git","repoName":"ip","organization":"Anant1902","domainName":"github"},"branch":"master","displayName":"Anant1902/ip[master]","outputFolderName":"Anant1902_ip_master"},{"location":{"location":"https://github.com/headcube1/ip.git","repoName":"ip","organization":"headcube1","domainName":"github"},"branch":"master","displayName":"headcube1/ip[master]","outputFolderName":"headcube1_ip_master"},{"location":{"location":"https://github.com/jimseah-0116/ip.git","repoName":"ip","organization":"jimseah-0116","domainName":"github"},"branch":"master","displayName":"jimseah-0116/ip[master]","outputFolderName":"jimseah-0116_ip_master"},{"location":{"location":"https://github.com/ararchch/ip.git","repoName":"ip","organization":"ararchch","domainName":"github"},"branch":"master","displayName":"ararchch/ip[master]","outputFolderName":"ararchch_ip_master"},{"location":{"location":"https://github.com/chiaryan/ip.git","repoName":"ip","organization":"chiaryan","domainName":"github"},"branch":"master","displayName":"chiaryan/ip[master]","outputFolderName":"chiaryan_ip_master"},{"location":{"location":"https://github.com/chengjunyuan/ip.git","repoName":"ip","organization":"chengjunyuan","domainName":"github"},"branch":"master","displayName":"chengjunyuan/ip[master]","outputFolderName":"chengjunyuan_ip_master"},{"location":{"location":"https://github.com/LimZiJia/ip.git","repoName":"ip","organization":"LimZiJia","domainName":"github"},"branch":"master","displayName":"LimZiJia/ip[master]","outputFolderName":"LimZiJia_ip_master"},{"location":{"location":"https://github.com/darkvoid32/ip.git","repoName":"ip","organization":"darkvoid32","domainName":"github"},"branch":"master","displayName":"darkvoid32/ip[master]","outputFolderName":"darkvoid32_ip_master"},{"location":{"location":"https://github.com/maze508/ip.git","repoName":"ip","organization":"maze508","domainName":"github"},"branch":"master","displayName":"maze508/ip[master]","outputFolderName":"maze508_ip_master"},{"location":{"location":"https://github.com/RingoftheKing/ip.git","repoName":"ip","organization":"RingoftheKing","domainName":"github"},"branch":"master","displayName":"RingoftheKing/ip[master]","outputFolderName":"RingoftheKing_ip_master"},{"location":{"location":"https://github.com/Rishit02/ip.git","repoName":"ip","organization":"Rishit02","domainName":"github"},"branch":"master","displayName":"Rishit02/ip[master]","outputFolderName":"Rishit02_ip_master"},{"location":{"location":"https://github.com/drustanyjt/ip.git","repoName":"ip","organization":"drustanyjt","domainName":"github"},"branch":"master","displayName":"drustanyjt/ip[master]","outputFolderName":"drustanyjt_ip_master"},{"location":{"location":"https://github.com/Dexter-Wong/ip.git","repoName":"ip","organization":"Dexter-Wong","domainName":"github"},"branch":"master","displayName":"Dexter-Wong/ip[master]","outputFolderName":"Dexter-Wong_ip_master"},{"location":{"location":"https://github.com/jxunze/ip.git","repoName":"ip","organization":"jxunze","domainName":"github"},"branch":"master","displayName":"jxunze/ip[master]","outputFolderName":"jxunze_ip_master"},{"location":{"location":"https://github.com/Vision-2000/ip.git","repoName":"ip","organization":"Vision-2000","domainName":"github"},"branch":"master","displayName":"Vision-2000/ip[master]","outputFolderName":"Vision-2000_ip_master"},{"location":{"location":"https://github.com/Derekljh/ip.git","repoName":"ip","organization":"Derekljh","domainName":"github"},"branch":"master","displayName":"Derekljh/ip[master]","outputFolderName":"Derekljh_ip_master"},{"location":{"location":"https://github.com/alphajae11/ip.git","repoName":"ip","organization":"alphajae11","domainName":"github"},"branch":"master","displayName":"alphajae11/ip[master]","outputFolderName":"alphajae11_ip_master"},{"location":{"location":"https://github.com/Kappaccinoh/ip.git","repoName":"ip","organization":"Kappaccinoh","domainName":"github"},"branch":"master","displayName":"Kappaccinoh/ip[master]","outputFolderName":"Kappaccinoh_ip_master"},{"location":{"location":"https://github.com/minreiseah/ip.git","repoName":"ip","organization":"minreiseah","domainName":"github"},"branch":"master","displayName":"minreiseah/ip[master]","outputFolderName":"minreiseah_ip_master"},{"location":{"location":"https://github.com/yuhinarita/ip.git","repoName":"ip","organization":"yuhinarita","domainName":"github"},"branch":"master","displayName":"yuhinarita/ip[master]","outputFolderName":"yuhinarita_ip_master"},{"location":{"location":"https://github.com/kab-dot/ip.git","repoName":"ip","organization":"kab-dot","domainName":"github"},"branch":"master","displayName":"kab-dot/ip[master]","outputFolderName":"kab-dot_ip_master"},{"location":{"location":"https://github.com/alfaloo/ip.git","repoName":"ip","organization":"alfaloo","domainName":"github"},"branch":"master","displayName":"alfaloo/ip[master]","outputFolderName":"alfaloo_ip_master"},{"location":{"location":"https://github.com/doyelee0313/ip.git","repoName":"ip","organization":"doyelee0313","domainName":"github"},"branch":"master","displayName":"doyelee0313/ip[master]","outputFolderName":"doyelee0313_ip_master"},{"location":{"location":"https://github.com/sdevih/ip.git","repoName":"ip","organization":"sdevih","domainName":"github"},"branch":"master","displayName":"sdevih/ip[master]","outputFolderName":"sdevih_ip_master"},{"location":{"location":"https://github.com/Emberlynn-Loo/ip.git","repoName":"ip","organization":"Emberlynn-Loo","domainName":"github"},"branch":"master","displayName":"Emberlynn-Loo/ip[master]","outputFolderName":"Emberlynn-Loo_ip_master"},{"location":{"location":"https://github.com/tejas-1405/ip.git","repoName":"ip","organization":"tejas-1405","domainName":"github"},"branch":"master","displayName":"tejas-1405/ip[master]","outputFolderName":"tejas-1405_ip_master"},{"location":{"location":"https://github.com/H4mes/ip.git","repoName":"ip","organization":"H4mes","domainName":"github"},"branch":"master","displayName":"H4mes/ip[master]","outputFolderName":"H4mes_ip_master"},{"location":{"location":"https://github.com/ChocoRagdoll/ip.git","repoName":"ip","organization":"ChocoRagdoll","domainName":"github"},"branch":"master","displayName":"ChocoRagdoll/ip[master]","outputFolderName":"ChocoRagdoll_ip_master"},{"location":{"location":"https://github.com/dwangwk/ip.git","repoName":"ip","organization":"dwangwk","domainName":"github"},"branch":"master","displayName":"dwangwk/ip[master]","outputFolderName":"dwangwk_ip_master"},{"location":{"location":"https://github.com/leeweiming3/ip.git","repoName":"ip","organization":"leeweiming3","domainName":"github"},"branch":"master","displayName":"leeweiming3/ip[master]","outputFolderName":"leeweiming3_ip_master"},{"location":{"location":"https://github.com/Wyrkx/ip.git","repoName":"ip","organization":"Wyrkx","domainName":"github"},"branch":"master","displayName":"Wyrkx/ip[master]","outputFolderName":"Wyrkx_ip_master"},{"location":{"location":"https://github.com/jeong-jaeho/ip.git","repoName":"ip","organization":"jeong-jaeho","domainName":"github"},"branch":"master","displayName":"jeong-jaeho/ip[master]","outputFolderName":"jeong-jaeho_ip_master"},{"location":{"location":"https://github.com/tohlh/ip.git","repoName":"ip","organization":"tohlh","domainName":"github"},"branch":"master","displayName":"tohlh/ip[master]","outputFolderName":"tohlh_ip_master"},{"location":{"location":"https://github.com/tzaph/ip.git","repoName":"ip","organization":"tzaph","domainName":"github"},"branch":"master","displayName":"tzaph/ip[master]","outputFolderName":"tzaph_ip_master"},{"location":{"location":"https://github.com/PateShin/ip.git","repoName":"ip","organization":"PateShin","domainName":"github"},"branch":"master","displayName":"PateShin/ip[master]","outputFolderName":"PateShin_ip_master"},{"location":{"location":"https://github.com/PallonCX/ip.git","repoName":"ip","organization":"PallonCX","domainName":"github"},"branch":"master","displayName":"PallonCX/ip[master]","outputFolderName":"PallonCX_ip_master"},{"location":{"location":"https://github.com/benson1029/ip.git","repoName":"ip","organization":"benson1029","domainName":"github"},"branch":"master","displayName":"benson1029/ip[master]","outputFolderName":"benson1029_ip_master"},{"location":{"location":"https://github.com/Kaya3842/ip.git","repoName":"ip","organization":"Kaya3842","domainName":"github"},"branch":"master","displayName":"Kaya3842/ip[master]","outputFolderName":"Kaya3842_ip_master"},{"location":{"location":"https://github.com/JustWeiHao/ip.git","repoName":"ip","organization":"JustWeiHao","domainName":"github"},"branch":"master","displayName":"JustWeiHao/ip[master]","outputFolderName":"JustWeiHao_ip_master"},{"location":{"location":"https://github.com/chin-herng/ip.git","repoName":"ip","organization":"chin-herng","domainName":"github"},"branch":"master","displayName":"chin-herng/ip[master]","outputFolderName":"chin-herng_ip_master"},{"location":{"location":"https://github.com/swtan346/ip.git","repoName":"ip","organization":"swtan346","domainName":"github"},"branch":"master","displayName":"swtan346/ip[master]","outputFolderName":"swtan346_ip_master"},{"location":{"location":"https://github.com/gosongying/ip.git","repoName":"ip","organization":"gosongying","domainName":"github"},"branch":"master","displayName":"gosongying/ip[master]","outputFolderName":"gosongying_ip_master"},{"location":{"location":"https://github.com/ivan24004/ip.git","repoName":"ip","organization":"ivan24004","domainName":"github"},"branch":"master","displayName":"ivan24004/ip[master]","outputFolderName":"ivan24004_ip_master"},{"location":{"location":"https://github.com/sarjinius/ip.git","repoName":"ip","organization":"sarjinius","domainName":"github"},"branch":"master","displayName":"sarjinius/ip[master]","outputFolderName":"sarjinius_ip_master"},{"location":{"location":"https://github.com/shavonneg/ip.git","repoName":"ip","organization":"shavonneg","domainName":"github"},"branch":"master","displayName":"shavonneg/ip[master]","outputFolderName":"shavonneg_ip_master"},{"location":{"location":"https://github.com/STELLA-LYE/ip.git","repoName":"ip","organization":"STELLA-LYE","domainName":"github"},"branch":"master","displayName":"STELLA-LYE/ip[master]","outputFolderName":"STELLA-LYE_ip_master"},{"location":{"location":"https://github.com/Lalelulilulela/ip.git","repoName":"ip","organization":"Lalelulilulela","domainName":"github"},"branch":"master","displayName":"Lalelulilulela/ip[master]","outputFolderName":"Lalelulilulela_ip_master"},{"location":{"location":"https://github.com/eunrcn/ip.git","repoName":"ip","organization":"eunrcn","domainName":"github"},"branch":"master","displayName":"eunrcn/ip[master]","outputFolderName":"eunrcn_ip_master"},{"location":{"location":"https://github.com/jocelyn-soh/ip.git","repoName":"ip","organization":"jocelyn-soh","domainName":"github"},"branch":"master","displayName":"jocelyn-soh/ip[master]","outputFolderName":"jocelyn-soh_ip_master"},{"location":{"location":"https://github.com/lynnetteeee/ip.git","repoName":"ip","organization":"lynnetteeee","domainName":"github"},"branch":"master","displayName":"lynnetteeee/ip[master]","outputFolderName":"lynnetteeee_ip_master"},{"location":{"location":"https://github.com/chenyixin0/ip.git","repoName":"ip","organization":"chenyixin0","domainName":"github"},"branch":"master","displayName":"chenyixin0/ip[master]","outputFolderName":"chenyixin0_ip_master"},{"location":{"location":"https://github.com/tanjieling0/ip.git","repoName":"ip","organization":"tanjieling0","domainName":"github"},"branch":"master","displayName":"tanjieling0/ip[master]","outputFolderName":"tanjieling0_ip_master"},{"location":{"location":"https://github.com/alex-setyawan/ip.git","repoName":"ip","organization":"alex-setyawan","domainName":"github"},"branch":"master","displayName":"alex-setyawan/ip[master]","outputFolderName":"alex-setyawan_ip_master"},{"location":{"location":"https://github.com/peienlim/ip.git","repoName":"ip","organization":"peienlim","domainName":"github"},"branch":"master","displayName":"peienlim/ip[master]","outputFolderName":"peienlim_ip_master"},{"location":{"location":"https://github.com/danielleloh/ip.git","repoName":"ip","organization":"danielleloh","domainName":"github"},"branch":"master","displayName":"danielleloh/ip[master]","outputFolderName":"danielleloh_ip_master"},{"location":{"location":"https://github.com/jannaleong/ip.git","repoName":"ip","organization":"jannaleong","domainName":"github"},"branch":"master","displayName":"jannaleong/ip[master]","outputFolderName":"jannaleong_ip_master"},{"location":{"location":"https://github.com/huekoh/ip.git","repoName":"ip","organization":"huekoh","domainName":"github"},"branch":"master","displayName":"huekoh/ip[master]","outputFolderName":"huekoh_ip_master"},{"location":{"location":"https://github.com/wapisai/ip.git","repoName":"ip","organization":"wapisai","domainName":"github"},"branch":"master","displayName":"wapisai/ip[master]","outputFolderName":"wapisai_ip_master"},{"location":{"location":"https://github.com/NatLeong/ip.git","repoName":"ip","organization":"NatLeong","domainName":"github"},"branch":"master","displayName":"NatLeong/ip[master]","outputFolderName":"NatLeong_ip_master"},{"location":{"location":"https://github.com/Pughal77/ip.git","repoName":"ip","organization":"Pughal77","domainName":"github"},"branch":"master","displayName":"Pughal77/ip[master]","outputFolderName":"Pughal77_ip_master"},{"location":{"location":"https://github.com/tahnya/ip.git","repoName":"ip","organization":"tahnya","domainName":"github"},"branch":"master","displayName":"tahnya/ip[master]","outputFolderName":"tahnya_ip_master"},{"location":{"location":"https://github.com/rahhulleee/ip.git","repoName":"ip","organization":"rahhulleee","domainName":"github"},"branch":"master","displayName":"rahhulleee/ip[master]","outputFolderName":"rahhulleee_ip_master"},{"location":{"location":"https://github.com/tamagochuuu/ip.git","repoName":"ip","organization":"tamagochuuu","domainName":"github"},"branch":"master","displayName":"tamagochuuu/ip[master]","outputFolderName":"tamagochuuu_ip_master"},{"location":{"location":"https://github.com/Chiarena/ip.git","repoName":"ip","organization":"Chiarena","domainName":"github"},"branch":"master","displayName":"Chiarena/ip[master]","outputFolderName":"Chiarena_ip_master"},{"location":{"location":"https://github.com/agreatdayy/ip.git","repoName":"ip","organization":"agreatdayy","domainName":"github"},"branch":"master","displayName":"agreatdayy/ip[master]","outputFolderName":"agreatdayy_ip_master"},{"location":{"location":"https://github.com/CaptainKeqing/ip.git","repoName":"ip","organization":"CaptainKeqing","domainName":"github"},"branch":"master","displayName":"CaptainKeqing/ip[master]","outputFolderName":"CaptainKeqing_ip_master"},{"location":{"location":"https://github.com/evedaktyl/ip.git","repoName":"ip","organization":"evedaktyl","domainName":"github"},"branch":"master","displayName":"evedaktyl/ip[master]","outputFolderName":"evedaktyl_ip_master"},{"location":{"location":"https://github.com/zhikaiong2001/ip.git","repoName":"ip","organization":"zhikaiong2001","domainName":"github"},"branch":"master","displayName":"zhikaiong2001/ip[master]","outputFolderName":"zhikaiong2001_ip_master"},{"location":{"location":"https://github.com/johnyoozhengxian/ip.git","repoName":"ip","organization":"johnyoozhengxian","domainName":"github"},"branch":"master","displayName":"johnyoozhengxian/ip[master]","outputFolderName":"johnyoozhengxian_ip_master"},{"location":{"location":"https://github.com/KinTatHo/ip.git","repoName":"ip","organization":"KinTatHo","domainName":"github"},"branch":"master","displayName":"KinTatHo/ip[master]","outputFolderName":"KinTatHo_ip_master"},{"location":{"location":"https://github.com/Joseph31416/ip.git","repoName":"ip","organization":"Joseph31416","domainName":"github"},"branch":"master","displayName":"Joseph31416/ip[master]","outputFolderName":"Joseph31416_ip_master"},{"location":{"location":"https://github.com/Murugan-Maniish/ip.git","repoName":"ip","organization":"Murugan-Maniish","domainName":"github"},"branch":"master","displayName":"Murugan-Maniish/ip[master]","outputFolderName":"Murugan-Maniish_ip_master"},{"location":{"location":"https://github.com/Joshy837/ip.git","repoName":"ip","organization":"Joshy837","domainName":"github"},"branch":"master","displayName":"Joshy837/ip[master]","outputFolderName":"Joshy837_ip_master"},{"location":{"location":"https://github.com/ChenXy128/ip.git","repoName":"ip","organization":"ChenXy128","domainName":"github"},"branch":"master","displayName":"ChenXy128/ip[master]","outputFolderName":"ChenXy128_ip_master"},{"location":{"location":"https://github.com/jamessinmaojun/ip.git","repoName":"ip","organization":"jamessinmaojun","domainName":"github"},"branch":"master","displayName":"jamessinmaojun/ip[master]","outputFolderName":"jamessinmaojun_ip_master"},{"location":{"location":"https://github.com/Joelwang22/ip.git","repoName":"ip","organization":"Joelwang22","domainName":"github"},"branch":"master","displayName":"Joelwang22/ip[master]","outputFolderName":"Joelwang22_ip_master"},{"location":{"location":"https://github.com/shawnnlimm/ip.git","repoName":"ip","organization":"shawnnlimm","domainName":"github"},"branch":"master","displayName":"shawnnlimm/ip[master]","outputFolderName":"shawnnlimm_ip_master"},{"location":{"location":"https://github.com/erv-teo/ip.git","repoName":"ip","organization":"erv-teo","domainName":"github"},"branch":"master","displayName":"erv-teo/ip[master]","outputFolderName":"erv-teo_ip_master"},{"location":{"location":"https://github.com/h4ow3i/ip.git","repoName":"ip","organization":"h4ow3i","domainName":"github"},"branch":"master","displayName":"h4ow3i/ip[master]","outputFolderName":"h4ow3i_ip_master"},{"location":{"location":"https://github.com/ziyang27/ip.git","repoName":"ip","organization":"ziyang27","domainName":"github"},"branch":"master","displayName":"ziyang27/ip[master]","outputFolderName":"ziyang27_ip_master"},{"location":{"location":"https://github.com/FangRuoqing/ip.git","repoName":"ip","organization":"FangRuoqing","domainName":"github"},"branch":"master","displayName":"FangRuoqing/ip[master]","outputFolderName":"FangRuoqing_ip_master"},{"location":{"location":"https://github.com/0nesheep/ip.git","repoName":"ip","organization":"0nesheep","domainName":"github"},"branch":"master","displayName":"0nesheep/ip[master]","outputFolderName":"0nesheep_ip_master"},{"location":{"location":"https://github.com/0-yibai/ip.git","repoName":"ip","organization":"0-yibai","domainName":"github"},"branch":"master","displayName":"0-yibai/ip[master]","outputFolderName":"0-yibai_ip_master"},{"location":{"location":"https://github.com/jerremyng/ip.git","repoName":"ip","organization":"jerremyng","domainName":"github"},"branch":"master","displayName":"jerremyng/ip[master]","outputFolderName":"jerremyng_ip_master"},{"location":{"location":"https://github.com/irwynliong/ip.git","repoName":"ip","organization":"irwynliong","domainName":"github"},"branch":"master","displayName":"irwynliong/ip[master]","outputFolderName":"irwynliong_ip_master"},{"location":{"location":"https://github.com/yorklim/ip.git","repoName":"ip","organization":"yorklim","domainName":"github"},"branch":"master","displayName":"yorklim/ip[master]","outputFolderName":"yorklim_ip_master"},{"location":{"location":"https://github.com/vannykin/ip.git","repoName":"ip","organization":"vannykin","domainName":"github"},"branch":"master","displayName":"vannykin/ip[master]","outputFolderName":"vannykin_ip_master"},{"location":{"location":"https://github.com/laney0808/ip.git","repoName":"ip","organization":"laney0808","domainName":"github"},"branch":"master","displayName":"laney0808/ip[master]","outputFolderName":"laney0808_ip_master"},{"location":{"location":"https://github.com/yapxuanxuan/ip.git","repoName":"ip","organization":"yapxuanxuan","domainName":"github"},"branch":"master","displayName":"yapxuanxuan/ip[master]","outputFolderName":"yapxuanxuan_ip_master"},{"location":{"location":"https://github.com/Greg-Tan/ip.git","repoName":"ip","organization":"Greg-Tan","domainName":"github"},"branch":"master","displayName":"Greg-Tan/ip[master]","outputFolderName":"Greg-Tan_ip_master"},{"location":{"location":"https://github.com/taniatsq/ip.git","repoName":"ip","organization":"taniatsq","domainName":"github"},"branch":"master","displayName":"taniatsq/ip[master]","outputFolderName":"taniatsq_ip_master"},{"location":{"location":"https://github.com/yongkotaro/ip.git","repoName":"ip","organization":"yongkotaro","domainName":"github"},"branch":"master","displayName":"yongkotaro/ip[master]","outputFolderName":"yongkotaro_ip_master"},{"location":{"location":"https://github.com/tanyunchao/ip.git","repoName":"ip","organization":"tanyunchao","domainName":"github"},"branch":"master","displayName":"tanyunchao/ip[master]","outputFolderName":"tanyunchao_ip_master"},{"location":{"location":"https://github.com/KiatLun/ip.git","repoName":"ip","organization":"KiatLun","domainName":"github"},"branch":"master","displayName":"KiatLun/ip[master]","outputFolderName":"KiatLun_ip_master"},{"location":{"location":"https://github.com/Xuyan0518/ip.git","repoName":"ip","organization":"Xuyan0518","domainName":"github"},"branch":"master","displayName":"Xuyan0518/ip[master]","outputFolderName":"Xuyan0518_ip_master"},{"location":{"location":"https://github.com/cleowenxuan/ip.git","repoName":"ip","organization":"cleowenxuan","domainName":"github"},"branch":"master","displayName":"cleowenxuan/ip[master]","outputFolderName":"cleowenxuan_ip_master"},{"location":{"location":"https://github.com/logical-1985516/ip.git","repoName":"ip","organization":"logical-1985516","domainName":"github"},"branch":"master","displayName":"logical-1985516/ip[master]","outputFolderName":"logical-1985516_ip_master"},{"location":{"location":"https://github.com/jessicawyz/ip.git","repoName":"ip","organization":"jessicawyz","domainName":"github"},"branch":"master","displayName":"jessicawyz/ip[master]","outputFolderName":"jessicawyz_ip_master"},{"location":{"location":"https://github.com/ashleyy2444/ip.git","repoName":"ip","organization":"ashleyy2444","domainName":"github"},"branch":"master","displayName":"ashleyy2444/ip[master]","outputFolderName":"ashleyy2444_ip_master"},{"location":{"location":"https://github.com/tengcharmaine/ip.git","repoName":"ip","organization":"tengcharmaine","domainName":"github"},"branch":"master","displayName":"tengcharmaine/ip[master]","outputFolderName":"tengcharmaine_ip_master"},{"location":{"location":"https://github.com/Jawad280/ip.git","repoName":"ip","organization":"Jawad280","domainName":"github"},"branch":"master","displayName":"Jawad280/ip[master]","outputFolderName":"Jawad280_ip_master"},{"location":{"location":"https://github.com/ThatGirlJam/ip.git","repoName":"ip","organization":"ThatGirlJam","domainName":"github"},"branch":"master","displayName":"ThatGirlJam/ip[master]","outputFolderName":"ThatGirlJam_ip_master"},{"location":{"location":"https://github.com/saiutkarsh33/ip.git","repoName":"ip","organization":"saiutkarsh33","domainName":"github"},"branch":"master","displayName":"saiutkarsh33/ip[master]","outputFolderName":"saiutkarsh33_ip_master"},{"location":{"location":"https://github.com/meenulekha/ip.git","repoName":"ip","organization":"meenulekha","domainName":"github"},"branch":"master","displayName":"meenulekha/ip[master]","outputFolderName":"meenulekha_ip_master"},{"location":{"location":"https://github.com/LargeCrowd/ip.git","repoName":"ip","organization":"LargeCrowd","domainName":"github"},"branch":"master","displayName":"LargeCrowd/ip[master]","outputFolderName":"LargeCrowd_ip_master"},{"location":{"location":"https://github.com/linnn-7/ip.git","repoName":"ip","organization":"linnn-7","domainName":"github"},"branch":"master","displayName":"linnn-7/ip[master]","outputFolderName":"linnn-7_ip_master"},{"location":{"location":"https://github.com/maiyasaliha/ip.git","repoName":"ip","organization":"maiyasaliha","domainName":"github"},"branch":"master","displayName":"maiyasaliha/ip[master]","outputFolderName":"maiyasaliha_ip_master"},{"location":{"location":"https://github.com/jonpwk/ip.git","repoName":"ip","organization":"jonpwk","domainName":"github"},"branch":"master","displayName":"jonpwk/ip[master]","outputFolderName":"jonpwk_ip_master"},{"location":{"location":"https://github.com/ChillinRage/ip.git","repoName":"ip","organization":"ChillinRage","domainName":"github"},"branch":"master","displayName":"ChillinRage/ip[master]","outputFolderName":"ChillinRage_ip_master"},{"location":{"location":"https://github.com/moguries/ip.git","repoName":"ip","organization":"moguries","domainName":"github"},"branch":"master","displayName":"moguries/ip[master]","outputFolderName":"moguries_ip_master"},{"location":{"location":"https://github.com/Alteqa/ip.git","repoName":"ip","organization":"Alteqa","domainName":"github"},"branch":"master","displayName":"Alteqa/ip[master]","outputFolderName":"Alteqa_ip_master"},{"location":{"location":"https://github.com/Zack-Tay/ip.git","repoName":"ip","organization":"Zack-Tay","domainName":"github"},"branch":"master","displayName":"Zack-Tay/ip[master]","outputFolderName":"Zack-Tay_ip_master"},{"location":{"location":"https://github.com/marcus-ny/ip.git","repoName":"ip","organization":"marcus-ny","domainName":"github"},"branch":"master","displayName":"marcus-ny/ip[master]","outputFolderName":"marcus-ny_ip_master"},{"location":{"location":"https://github.com/bennyLCK/ip.git","repoName":"ip","organization":"bennyLCK","domainName":"github"},"branch":"master","displayName":"bennyLCK/ip[master]","outputFolderName":"bennyLCK_ip_master"},{"location":{"location":"https://github.com/kinjalagarwal1810/ip.git","repoName":"ip","organization":"kinjalagarwal1810","domainName":"github"},"branch":"master","displayName":"kinjalagarwal1810/ip[master]","outputFolderName":"kinjalagarwal1810_ip_master"},{"location":{"location":"https://github.com/R-Laksh/ip.git","repoName":"ip","organization":"R-Laksh","domainName":"github"},"branch":"master","displayName":"R-Laksh/ip[master]","outputFolderName":"R-Laksh_ip_master"},{"location":{"location":"https://github.com/Colex2000/ip.git","repoName":"ip","organization":"Colex2000","domainName":"github"},"branch":"master","displayName":"Colex2000/ip[master]","outputFolderName":"Colex2000_ip_master"},{"location":{"location":"https://github.com/DhiraPT/ip.git","repoName":"ip","organization":"DhiraPT","domainName":"github"},"branch":"master","displayName":"DhiraPT/ip[master]","outputFolderName":"DhiraPT_ip_master"},{"location":{"location":"https://github.com/yyccbb/ip.git","repoName":"ip","organization":"yyccbb","domainName":"github"},"branch":"master","displayName":"yyccbb/ip[master]","outputFolderName":"yyccbb_ip_master"},{"location":{"location":"https://github.com/nigel27022001/ip.git","repoName":"ip","organization":"nigel27022001","domainName":"github"},"branch":"master","displayName":"nigel27022001/ip[master]","outputFolderName":"nigel27022001_ip_master"},{"location":{"location":"https://github.com/shamesjen/ip.git","repoName":"ip","organization":"shamesjen","domainName":"github"},"branch":"master","displayName":"shamesjen/ip[master]","outputFolderName":"shamesjen_ip_master"},{"location":{"location":"https://github.com/sindhurajain/ip.git","repoName":"ip","organization":"sindhurajain","domainName":"github"},"branch":"master","displayName":"sindhurajain/ip[master]","outputFolderName":"sindhurajain_ip_master"},{"location":{"location":"https://github.com/ryanlimdx/ip.git","repoName":"ip","organization":"ryanlimdx","domainName":"github"},"branch":"master","displayName":"ryanlimdx/ip[master]","outputFolderName":"ryanlimdx_ip_master"},{"location":{"location":"https://github.com/hiivan/ip.git","repoName":"ip","organization":"hiivan","domainName":"github"},"branch":"master","displayName":"hiivan/ip[master]","outputFolderName":"hiivan_ip_master"},{"location":{"location":"https://github.com/Apzure/ip.git","repoName":"ip","organization":"Apzure","domainName":"github"},"branch":"master","displayName":"Apzure/ip[master]","outputFolderName":"Apzure_ip_master"},{"location":{"location":"https://github.com/bgopi23/ip.git","repoName":"ip","organization":"bgopi23","domainName":"github"},"branch":"master","displayName":"bgopi23/ip[master]","outputFolderName":"bgopi23_ip_master"},{"location":{"location":"https://github.com/LWS49/ip.git","repoName":"ip","organization":"LWS49","domainName":"github"},"branch":"master","displayName":"LWS49/ip[master]","outputFolderName":"LWS49_ip_master"},{"location":{"location":"https://github.com/wang-xinrong/ip.git","repoName":"ip","organization":"wang-xinrong","domainName":"github"},"branch":"master","displayName":"wang-xinrong/ip[master]","outputFolderName":"wang-xinrong_ip_master"},{"location":{"location":"https://github.com/HusseinSafwan02/ip.git","repoName":"ip","organization":"HusseinSafwan02","domainName":"github"},"branch":"master","displayName":"HusseinSafwan02/ip[master]","outputFolderName":"HusseinSafwan02_ip_master"},{"location":{"location":"https://github.com/Ko-Khan/ip.git","repoName":"ip","organization":"Ko-Khan","domainName":"github"},"branch":"master","displayName":"Ko-Khan/ip[master]","outputFolderName":"Ko-Khan_ip_master"},{"location":{"location":"https://github.com/yleeyilin/ip.git","repoName":"ip","organization":"yleeyilin","domainName":"github"},"branch":"master","displayName":"yleeyilin/ip[master]","outputFolderName":"yleeyilin_ip_master"},{"location":{"location":"https://github.com/jiahui0309/ip.git","repoName":"ip","organization":"jiahui0309","domainName":"github"},"branch":"master","displayName":"jiahui0309/ip[master]","outputFolderName":"jiahui0309_ip_master"},{"location":{"location":"https://github.com/Jayne1010/ip.git","repoName":"ip","organization":"Jayne1010","domainName":"github"},"branch":"master","displayName":"Jayne1010/ip[master]","outputFolderName":"Jayne1010_ip_master"},{"location":{"location":"https://github.com/getsquared/ip.git","repoName":"ip","organization":"getsquared","domainName":"github"},"branch":"master","displayName":"getsquared/ip[master]","outputFolderName":"getsquared_ip_master"},{"location":{"location":"https://github.com/kaitinghh/ip.git","repoName":"ip","organization":"kaitinghh","domainName":"github"},"branch":"master","displayName":"kaitinghh/ip[master]","outputFolderName":"kaitinghh_ip_master"},{"location":{"location":"https://github.com/4llysa/ip.git","repoName":"ip","organization":"4llysa","domainName":"github"},"branch":"master","displayName":"4llysa/ip[master]","outputFolderName":"4llysa_ip_master"},{"location":{"location":"https://github.com/Lin-Shuang-Shuang/ip.git","repoName":"ip","organization":"Lin-Shuang-Shuang","domainName":"github"},"branch":"master","displayName":"Lin-Shuang-Shuang/ip[master]","outputFolderName":"Lin-Shuang-Shuang_ip_master"},{"location":{"location":"https://github.com/youdonnnn/ip.git","repoName":"ip","organization":"youdonnnn","domainName":"github"},"branch":"master","displayName":"youdonnnn/ip[master]","outputFolderName":"youdonnnn_ip_master"},{"location":{"location":"https://github.com/xuwen-ho/ip.git","repoName":"ip","organization":"xuwen-ho","domainName":"github"},"branch":"master","displayName":"xuwen-ho/ip[master]","outputFolderName":"xuwen-ho_ip_master"},{"location":{"location":"https://github.com/ongzhili/ip.git","repoName":"ip","organization":"ongzhili","domainName":"github"},"branch":"master","displayName":"ongzhili/ip[master]","outputFolderName":"ongzhili_ip_master"},{"location":{"location":"https://github.com/miffi/ip.git","repoName":"ip","organization":"miffi","domainName":"github"},"branch":"master","displayName":"miffi/ip[master]","outputFolderName":"miffi_ip_master"},{"location":{"location":"https://github.com/wallacexuhanxiao/ip.git","repoName":"ip","organization":"wallacexuhanxiao","domainName":"github"},"branch":"master","displayName":"wallacexuhanxiao/ip[master]","outputFolderName":"wallacexuhanxiao_ip_master"},{"location":{"location":"https://github.com/Teee728/ip.git","repoName":"ip","organization":"Teee728","domainName":"github"},"branch":"master","displayName":"Teee728/ip[master]","outputFolderName":"Teee728_ip_master"},{"location":{"location":"https://github.com/wolffe88/ip.git","repoName":"ip","organization":"wolffe88","domainName":"github"},"branch":"master","displayName":"wolffe88/ip[master]","outputFolderName":"wolffe88_ip_master"},{"location":{"location":"https://github.com/jskimdev/ip.git","repoName":"ip","organization":"jskimdev","domainName":"github"},"branch":"master","displayName":"jskimdev/ip[master]","outputFolderName":"jskimdev_ip_master"},{"location":{"location":"https://github.com/reetmitra/ip.git","repoName":"ip","organization":"reetmitra","domainName":"github"},"branch":"master","displayName":"reetmitra/ip[master]","outputFolderName":"reetmitra_ip_master"},{"location":{"location":"https://github.com/iamtr/ip.git","repoName":"ip","organization":"iamtr","domainName":"github"},"branch":"master","displayName":"iamtr/ip[master]","outputFolderName":"iamtr_ip_master"},{"location":{"location":"https://github.com/officialchengyud/ip.git","repoName":"ip","organization":"officialchengyud","domainName":"github"},"branch":"master","displayName":"officialchengyud/ip[master]","outputFolderName":"officialchengyud_ip_master"},{"location":{"location":"https://github.com/GERARDJM018/ip.git","repoName":"ip","organization":"GERARDJM018","domainName":"github"},"branch":"master","displayName":"GERARDJM018/ip[master]","outputFolderName":"GERARDJM018_ip_master"},{"location":{"location":"https://github.com/howen02/ip.git","repoName":"ip","organization":"howen02","domainName":"github"},"branch":"master","displayName":"howen02/ip[master]","outputFolderName":"howen02_ip_master"},{"location":{"location":"https://github.com/NusMinato/ip.git","repoName":"ip","organization":"NusMinato","domainName":"github"},"branch":"master","displayName":"NusMinato/ip[master]","outputFolderName":"NusMinato_ip_master"},{"location":{"location":"https://github.com/hjuntan/ip.git","repoName":"ip","organization":"hjuntan","domainName":"github"},"branch":"master","displayName":"hjuntan/ip[master]","outputFolderName":"hjuntan_ip_master"},{"location":{"location":"https://github.com/gauravuj/ip.git","repoName":"ip","organization":"gauravuj","domainName":"github"},"branch":"master","displayName":"gauravuj/ip[master]","outputFolderName":"gauravuj_ip_master"},{"location":{"location":"https://github.com/yespiggy/ip.git","repoName":"ip","organization":"yespiggy","domainName":"github"},"branch":"master","displayName":"yespiggy/ip[master]","outputFolderName":"yespiggy_ip_master"},{"location":{"location":"https://github.com/Windofbitter/ip.git","repoName":"ip","organization":"Windofbitter","domainName":"github"},"branch":"master","displayName":"Windofbitter/ip[master]","outputFolderName":"Windofbitter_ip_master"},{"location":{"location":"https://github.com/NewtonKoh/ip.git","repoName":"ip","organization":"NewtonKoh","domainName":"github"},"branch":"master","displayName":"NewtonKoh/ip[master]","outputFolderName":"NewtonKoh_ip_master"},{"location":{"location":"https://github.com/narwhalsilent/ip.git","repoName":"ip","organization":"narwhalsilent","domainName":"github"},"branch":"master","displayName":"narwhalsilent/ip[master]","outputFolderName":"narwhalsilent_ip_master"},{"location":{"location":"https://github.com/starsia/ip.git","repoName":"ip","organization":"starsia","domainName":"github"},"branch":"master","displayName":"starsia/ip[master]","outputFolderName":"starsia_ip_master"},{"location":{"location":"https://github.com/AidenLYT/ip.git","repoName":"ip","organization":"AidenLYT","domainName":"github"},"branch":"master","displayName":"AidenLYT/ip[master]","outputFolderName":"AidenLYT_ip_master"},{"location":{"location":"https://github.com/nyankoclaws/ip.git","repoName":"ip","organization":"nyankoclaws","domainName":"github"},"branch":"master","displayName":"nyankoclaws/ip[master]","outputFolderName":"nyankoclaws_ip_master"},{"location":{"location":"https://github.com/angsongyee/ip.git","repoName":"ip","organization":"angsongyee","domainName":"github"},"branch":"master","displayName":"angsongyee/ip[master]","outputFolderName":"angsongyee_ip_master"},{"location":{"location":"https://github.com/eliotlee68/ip.git","repoName":"ip","organization":"eliotlee68","domainName":"github"},"branch":"master","displayName":"eliotlee68/ip[master]","outputFolderName":"eliotlee68_ip_master"},{"location":{"location":"https://github.com/Yskie/ip.git","repoName":"ip","organization":"Yskie","domainName":"github"},"branch":"master","displayName":"Yskie/ip[master]","outputFolderName":"Yskie_ip_master"},{"location":{"location":"https://github.com/faaheem13/ip.git","repoName":"ip","organization":"faaheem13","domainName":"github"},"branch":"master","displayName":"faaheem13/ip[master]","outputFolderName":"faaheem13_ip_master"},{"location":{"location":"https://github.com/Shauryan123/ip.git","repoName":"ip","organization":"Shauryan123","domainName":"github"},"branch":"master","displayName":"Shauryan123/ip[master]","outputFolderName":"Shauryan123_ip_master"},{"location":{"location":"https://github.com/MaYuehan/ip.git","repoName":"ip","organization":"MaYuehan","domainName":"github"},"branch":"master","displayName":"MaYuehan/ip[master]","outputFolderName":"MaYuehan_ip_master"},{"location":{"location":"https://github.com/kaiyi27/ip.git","repoName":"ip","organization":"kaiyi27","domainName":"github"},"branch":"master","displayName":"kaiyi27/ip[master]","outputFolderName":"kaiyi27_ip_master"},{"location":{"location":"https://github.com/radeon2525/ip.git","repoName":"ip","organization":"radeon2525","domainName":"github"},"branch":"master","displayName":"radeon2525/ip[master]","outputFolderName":"radeon2525_ip_master"},{"location":{"location":"https://github.com/dedsecrattle/ip.git","repoName":"ip","organization":"dedsecrattle","domainName":"github"},"branch":"master","displayName":"dedsecrattle/ip[master]","outputFolderName":"dedsecrattle_ip_master"},{"location":{"location":"https://github.com/AdityaB4/ip.git","repoName":"ip","organization":"AdityaB4","domainName":"github"},"branch":"master","displayName":"AdityaB4/ip[master]","outputFolderName":"AdityaB4_ip_master"},{"location":{"location":"https://github.com/PyromancerBoom/ip.git","repoName":"ip","organization":"PyromancerBoom","domainName":"github"},"branch":"master","displayName":"PyromancerBoom/ip[master]","outputFolderName":"PyromancerBoom_ip_master"},{"location":{"location":"https://github.com/JiaXinEu/ip.git","repoName":"ip","organization":"JiaXinEu","domainName":"github"},"branch":"master","displayName":"JiaXinEu/ip[master]","outputFolderName":"JiaXinEu_ip_master"},{"location":{"location":"https://github.com/Ella-e/ip.git","repoName":"ip","organization":"Ella-e","domainName":"github"},"branch":"master","displayName":"Ella-e/ip[master]","outputFolderName":"Ella-e_ip_master"},{"location":{"location":"https://github.com/yiwern5/ip.git","repoName":"ip","organization":"yiwern5","domainName":"github"},"branch":"master","displayName":"yiwern5/ip[master]","outputFolderName":"yiwern5_ip_master"},{"location":{"location":"https://github.com/SamuelZero1/ip.git","repoName":"ip","organization":"SamuelZero1","domainName":"github"},"branch":"master","displayName":"SamuelZero1/ip[master]","outputFolderName":"SamuelZero1_ip_master"},{"location":{"location":"https://github.com/nuyer/ip.git","repoName":"ip","organization":"nuyer","domainName":"github"},"branch":"master","displayName":"nuyer/ip[master]","outputFolderName":"nuyer_ip_master"},{"location":{"location":"https://github.com/SeaHogs/ip.git","repoName":"ip","organization":"SeaHogs","domainName":"github"},"branch":"master","displayName":"SeaHogs/ip[master]","outputFolderName":"SeaHogs_ip_master"},{"location":{"location":"https://github.com/TarinPairor/ip.git","repoName":"ip","organization":"TarinPairor","domainName":"github"},"branch":"master","displayName":"TarinPairor/ip[master]","outputFolderName":"TarinPairor_ip_master"},{"location":{"location":"https://github.com/KSSWSept20/ip.git","repoName":"ip","organization":"KSSWSept20","domainName":"github"},"branch":"master","displayName":"KSSWSept20/ip[master]","outputFolderName":"KSSWSept20_ip_master"},{"location":{"location":"https://github.com/myang2020/ip.git","repoName":"ip","organization":"myang2020","domainName":"github"},"branch":"master","displayName":"myang2020/ip[master]","outputFolderName":"myang2020_ip_master"},{"location":{"location":"https://github.com/leepoeaik/ip.git","repoName":"ip","organization":"leepoeaik","domainName":"github"},"branch":"master","displayName":"leepoeaik/ip[master]","outputFolderName":"leepoeaik_ip_master"},{"location":{"location":"https://github.com/justinlengch/ip.git","repoName":"ip","organization":"justinlengch","domainName":"github"},"branch":"master","displayName":"justinlengch/ip[master]","outputFolderName":"justinlengch_ip_master"},{"location":{"location":"https://github.com/Li-Zizhen/ip.git","repoName":"ip","organization":"Li-Zizhen","domainName":"github"},"branch":"master","displayName":"Li-Zizhen/ip[master]","outputFolderName":"Li-Zizhen_ip_master"},{"location":{"location":"https://github.com/ashleygoh1/ip.git","repoName":"ip","organization":"ashleygoh1","domainName":"github"},"branch":"master","displayName":"ashleygoh1/ip[master]","outputFolderName":"ashleygoh1_ip_master"},{"location":{"location":"https://github.com/Wongqingyee/ip.git","repoName":"ip","organization":"Wongqingyee","domainName":"github"},"branch":"master","displayName":"Wongqingyee/ip[master]","outputFolderName":"Wongqingyee_ip_master"},{"location":{"location":"https://github.com/AjayArvind2207/ip.git","repoName":"ip","organization":"AjayArvind2207","domainName":"github"},"branch":"master","displayName":"AjayArvind2207/ip[master]","outputFolderName":"AjayArvind2207_ip_master"},{"location":{"location":"https://github.com/Austintjh19/ip.git","repoName":"ip","organization":"Austintjh19","domainName":"github"},"branch":"master","displayName":"Austintjh19/ip[master]","outputFolderName":"Austintjh19_ip_master"},{"location":{"location":"https://github.com/jinhanfromNUS/ip.git","repoName":"ip","organization":"jinhanfromNUS","domainName":"github"},"branch":"master","displayName":"jinhanfromNUS/ip[master]","outputFolderName":"jinhanfromNUS_ip_master"},{"location":{"location":"https://github.com/ziyi22/ip.git","repoName":"ip","organization":"ziyi22","domainName":"github"},"branch":"master","displayName":"ziyi22/ip[master]","outputFolderName":"ziyi22_ip_master"},{"location":{"location":"https://github.com/menatahari/ip.git","repoName":"ip","organization":"menatahari","domainName":"github"},"branch":"master","displayName":"menatahari/ip[master]","outputFolderName":"menatahari_ip_master"},{"location":{"location":"https://github.com/ThitipatC/ip.git","repoName":"ip","organization":"ThitipatC","domainName":"github"},"branch":"master","displayName":"ThitipatC/ip[master]","outputFolderName":"ThitipatC_ip_master"},{"location":{"location":"https://github.com/purivirakarin/ip.git","repoName":"ip","organization":"purivirakarin","domainName":"github"},"branch":"master","displayName":"purivirakarin/ip[master]","outputFolderName":"purivirakarin_ip_master"},{"location":{"location":"https://github.com/modembcc/ip.git","repoName":"ip","organization":"modembcc","domainName":"github"},"branch":"master","displayName":"modembcc/ip[master]","outputFolderName":"modembcc_ip_master"},{"location":{"location":"https://github.com/yashma-sonara/ip.git","repoName":"ip","organization":"yashma-sonara","domainName":"github"},"branch":"master","displayName":"yashma-sonara/ip[master]","outputFolderName":"yashma-sonara_ip_master"},{"location":{"location":"https://github.com/0liverkong/ip.git","repoName":"ip","organization":"0liverkong","domainName":"github"},"branch":"master","displayName":"0liverkong/ip[master]","outputFolderName":"0liverkong_ip_master"},{"location":{"location":"https://github.com/dhlee03/ip.git","repoName":"ip","organization":"dhlee03","domainName":"github"},"branch":"master","displayName":"dhlee03/ip[master]","outputFolderName":"dhlee03_ip_master"},{"location":{"location":"https://github.com/shayaansultan/ip.git","repoName":"ip","organization":"shayaansultan","domainName":"github"},"branch":"master","displayName":"shayaansultan/ip[master]","outputFolderName":"shayaansultan_ip_master"},{"location":{"location":"https://github.com/ljy0422/ip.git","repoName":"ip","organization":"ljy0422","domainName":"github"},"branch":"master","displayName":"ljy0422/ip[master]","outputFolderName":"ljy0422_ip_master"},{"location":{"location":"https://github.com/JukeBoxK/ip.git","repoName":"ip","organization":"JukeBoxK","domainName":"github"},"branch":"master","displayName":"JukeBoxK/ip[master]","outputFolderName":"JukeBoxK_ip_master"},{"location":{"location":"https://github.com/Howlong11/ip.git","repoName":"ip","organization":"Howlong11","domainName":"github"},"branch":"master","displayName":"Howlong11/ip[master]","outputFolderName":"Howlong11_ip_master"},{"location":{"location":"https://github.com/Hibeom0929/ip.git","repoName":"ip","organization":"Hibeom0929","domainName":"github"},"branch":"master","displayName":"Hibeom0929/ip[master]","outputFolderName":"Hibeom0929_ip_master"},{"location":{"location":"https://github.com/VatsalVitosh/ip.git","repoName":"ip","organization":"VatsalVitosh","domainName":"github"},"branch":"master","displayName":"VatsalVitosh/ip[master]","outputFolderName":"VatsalVitosh_ip_master"},{"location":{"location":"https://github.com/bachletuankhai/ip.git","repoName":"ip","organization":"bachletuankhai","domainName":"github"},"branch":"master","displayName":"bachletuankhai/ip[master]","outputFolderName":"bachletuankhai_ip_master"},{"location":{"location":"https://github.com/RunjiaChen/ip.git","repoName":"ip","organization":"RunjiaChen","domainName":"github"},"branch":"master","displayName":"RunjiaChen/ip[master]","outputFolderName":"RunjiaChen_ip_master"}],"errorSet":[{"repoName":"JerryWang0000/ip[master]","errorMessage":"Failed to clone from https://github.com/JerryWang0000/ip.git"},{"repoName":"ShanylOng/ip[master]","errorMessage":"Failed to clone from https://github.com/ShanylOng/ip.git"},{"repoName":"chuahjiajie/ip[master]","errorMessage":"Failed to clone from https://github.com/chuahjiajie/ip.git"},{"repoName":"Ryan-Reno/ip[master]","errorMessage":"Failed to clone from https://github.com/Ryan-Reno/ip.git"},{"repoName":"tcjazwei/ip[master]","errorMessage":"Failed to clone from https://github.com/tcjazwei/ip.git"},{"repoName":"Morninggloryyy/ip[master]","errorMessage":"Failed to clone from https://github.com/Morninggloryyy/ip.git"},{"repoName":"quelinxiao/ip[master]","errorMessage":"Failed to clone from https://github.com/quelinxiao/ip.git"},{"repoName":"ValenciaLim/ip[master]","errorMessage":"Failed to clone from https://github.com/ValenciaLim/ip.git"},{"repoName":"nusliuyifan/ip[master]","errorMessage":"Failed to clone from https://github.com/nusliuyifan/ip.git"},{"repoName":"peterXGD/ip[master]","errorMessage":"Failed to clone from https://github.com/peterXGD/ip.git"},{"repoName":"IamZhenHong/ip[master]","errorMessage":"Failed to clone from https://github.com/IamZhenHong/ip.git"},{"repoName":"zhenghuil/ip[master]","errorMessage":"Failed to clone from https://github.com/zhenghuil/ip.git"}],"sinceDate":"2024-01-19","untilDate":"2024-01-30","isSinceDateProvided":true,"isUntilDateProvided":false,"supportedDomainUrlMap":{"NOT_RECOGNIZED":{"BRANCH":"","REPO_URL":"UNSUPPORTED","BASE_URL":"UNSUPPORTED","HISTORY_PATH":"","COMMIT_PATH":"","BLAME_PATH":""},"github":{"BRANCH":"tree/$BRANCH","REPO_URL":"https://github.com/$ORGANIZATION/$REPO_NAME/","BASE_URL":"https://github.com/","HISTORY_PATH":"commits/$BRANCH/$FILE_PATH","COMMIT_PATH":"commit/$COMMIT_HASH","BLAME_PATH":"blame/$BRANCH/$FILE_PATH"}}} diff --git a/taeewonnn_ip_master/authorship.json b/taeewonnn_ip_master/authorship.json index 2dc86b33..42774236 100644 --- a/taeewonnn_ip_master/authorship.json +++ b/taeewonnn_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"taeewonnn"},"content":"T | X | read book","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"taeewonnn"},"content":"D | X | return book | aug 6th","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"taeewonnn"},"content":"E | O | project meeting | aug 7th 2-4pm","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"taeewonnn"},"content":"T | X | study","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"taeewonnn":4}},{"path":"src/main/java/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"taeewonnn"},"content":"import task.Task;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"taeewonnn"},"content":"import task.taskList;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"taeewonnn"},"content":"import task.Event;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"taeewonnn"},"content":"import task.Todo;","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"taeewonnn"},"content":"import task.Deadline;","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"taeewonnn"},"content":"import util.DukeException;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"taeewonnn"},"content":"import java.io.File;","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"taeewonnn"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"taeewonnn"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"taeewonnn"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"taeewonnn"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"taeewonnn"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"taeewonnn"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"taeewonnn"},"content":"public class Command {","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"taeewonnn"},"content":" public static String convertDateFormat(String date) {","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"taeewonnn"},"content":" LocalDate temp;","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"taeewonnn"},"content":" DateTimeFormatter readDateFormat \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy\");","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"taeewonnn"},"content":" temp \u003d LocalDate.parse(date, readDateFormat);","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"taeewonnn"},"content":" String formattedString \u003d temp.format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"taeewonnn"},"content":" System.out.println(formattedString);","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"taeewonnn"},"content":" return formattedString;","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"taeewonnn"},"content":" public static Task parse(String inputCommand) {","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"taeewonnn"},"content":" String[] tokens \u003d inputCommand.split(\" \\\\| \");","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"taeewonnn"},"content":" String taskType \u003d tokens[0];","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"taeewonnn"},"content":" boolean isDone \u003d tokens[1].equals(\"O\");","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"taeewonnn"},"content":" String description \u003d tokens[2];","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"taeewonnn"},"content":" Task task;","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"taeewonnn"},"content":" switch(taskType) {","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"taeewonnn"},"content":" case \"T\":","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"taeewonnn"},"content":" task \u003d new Todo(description, isDone);","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"taeewonnn"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"taeewonnn"},"content":" case \"D\":","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"taeewonnn"},"content":" String deadlineBy \u003d convertDateFormat(tokens[3]);","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"taeewonnn"},"content":" task \u003d new Deadline(description, deadlineBy, isDone);","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"taeewonnn"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"taeewonnn"},"content":" case \"E\":","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"taeewonnn"},"content":" String eventAt \u003d tokens[3];","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"taeewonnn"},"content":" task \u003d new Event(description, eventAt, isDone);","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"taeewonnn"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"taeewonnn"},"content":" default:","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"taeewonnn"},"content":" throw new IllegalStateException(\"I cannot recognize this task type!\" + taskType);","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"taeewonnn"},"content":" return task;","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"taeewonnn"},"content":" public static void readFile(String filePath, taskList tasklist) {","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"taeewonnn"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"taeewonnn"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"taeewonnn"},"content":" Scanner sc \u003d new Scanner(file);","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"taeewonnn"},"content":" while (sc.hasNextLine()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"taeewonnn"},"content":" String input \u003d sc.nextLine();","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"taeewonnn"},"content":" tasklist.addTask(parse(input));","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"taeewonnn"},"content":" sc.close();","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"taeewonnn"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"taeewonnn"},"content":" System.out.println(\"File not found\");","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":64,"author":{"gitId":"taeewonnn"},"content":" public static void process(String inputCommand, taskList tasklist) {","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"taeewonnn"},"content":" if (inputCommand.equals(\"list\")) {","lastModifiedDate":"2024-01-22"},{"lineNumber":66,"author":{"gitId":"taeewonnn"},"content":" tasklist.listDownTask();","lastModifiedDate":"2024-01-22"},{"lineNumber":67,"author":{"gitId":"taeewonnn"},"content":" } else if (inputCommand.startsWith(\"mark\")) {","lastModifiedDate":"2024-01-22"},{"lineNumber":68,"author":{"gitId":"taeewonnn"},"content":" char pos \u003d inputCommand.charAt(5);","lastModifiedDate":"2024-01-22"},{"lineNumber":69,"author":{"gitId":"taeewonnn"},"content":" int index \u003d Integer.parseInt(String.valueOf(pos));","lastModifiedDate":"2024-01-22"},{"lineNumber":70,"author":{"gitId":"taeewonnn"},"content":" tasklist.markTask(index);","lastModifiedDate":"2024-01-22"},{"lineNumber":71,"author":{"gitId":"taeewonnn"},"content":" } else if (inputCommand.startsWith(\"unmark\")) {","lastModifiedDate":"2024-01-22"},{"lineNumber":72,"author":{"gitId":"taeewonnn"},"content":" char pos \u003d inputCommand.charAt(7);","lastModifiedDate":"2024-01-22"},{"lineNumber":73,"author":{"gitId":"taeewonnn"},"content":" int index \u003d Integer.parseInt(String.valueOf(pos));","lastModifiedDate":"2024-01-22"},{"lineNumber":74,"author":{"gitId":"taeewonnn"},"content":" tasklist.unmarkTask(index);","lastModifiedDate":"2024-01-22"},{"lineNumber":75,"author":{"gitId":"taeewonnn"},"content":" } else if (inputCommand.startsWith(\"todo\")) {","lastModifiedDate":"2024-01-22"},{"lineNumber":76,"author":{"gitId":"taeewonnn"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":77,"author":{"gitId":"taeewonnn"},"content":" String des \u003d inputCommand.substring(5);","lastModifiedDate":"2024-01-22"},{"lineNumber":78,"author":{"gitId":"taeewonnn"},"content":" Task todo \u003d new Todo(des);","lastModifiedDate":"2024-01-22"},{"lineNumber":79,"author":{"gitId":"taeewonnn"},"content":" tasklist.addTask(todo);","lastModifiedDate":"2024-01-22"},{"lineNumber":80,"author":{"gitId":"taeewonnn"},"content":" } catch (StringIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":81,"author":{"gitId":"taeewonnn"},"content":" DukeException error \u003d new DukeException(e);","lastModifiedDate":"2024-01-24"},{"lineNumber":82,"author":{"gitId":"taeewonnn"},"content":" System.out.println(error);","lastModifiedDate":"2024-01-24"},{"lineNumber":83,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":84,"author":{"gitId":"taeewonnn"},"content":" } else if (inputCommand.startsWith(\"deadline\")) {","lastModifiedDate":"2024-01-22"},{"lineNumber":85,"author":{"gitId":"taeewonnn"},"content":" String[] separate \u003d inputCommand.substring(9).split(\"\\\\|\");","lastModifiedDate":"2024-01-27"},{"lineNumber":86,"author":{"gitId":"taeewonnn"},"content":" for (int i \u003d 0; i \u003c separate.length; i++) {","lastModifiedDate":"2024-01-22"},{"lineNumber":87,"author":{"gitId":"taeewonnn"},"content":" separate[i] \u003d separate[i].trim();","lastModifiedDate":"2024-01-27"},{"lineNumber":88,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":89,"author":{"gitId":"taeewonnn"},"content":" Task deadline \u003d new Deadline(separate[0], separate[1]);","lastModifiedDate":"2024-01-22"},{"lineNumber":90,"author":{"gitId":"taeewonnn"},"content":" tasklist.addTask(deadline);","lastModifiedDate":"2024-01-22"},{"lineNumber":91,"author":{"gitId":"taeewonnn"},"content":" } else if (inputCommand.startsWith(\"event\")) {","lastModifiedDate":"2024-01-22"},{"lineNumber":92,"author":{"gitId":"taeewonnn"},"content":" String[] separate \u003d inputCommand.substring(6).split(\"\\\\|\");","lastModifiedDate":"2024-01-27"},{"lineNumber":93,"author":{"gitId":"taeewonnn"},"content":" for (int i \u003d 0; i \u003c separate.length; i++) {","lastModifiedDate":"2024-01-22"},{"lineNumber":94,"author":{"gitId":"taeewonnn"},"content":" separate[i] \u003d separate[i].trim();","lastModifiedDate":"2024-01-27"},{"lineNumber":95,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":96,"author":{"gitId":"taeewonnn"},"content":" Task event \u003d new Event(separate[0], separate[1]);","lastModifiedDate":"2024-01-27"},{"lineNumber":97,"author":{"gitId":"taeewonnn"},"content":" tasklist.addTask(event);","lastModifiedDate":"2024-01-22"},{"lineNumber":98,"author":{"gitId":"taeewonnn"},"content":" } else if(inputCommand.startsWith(\"delete\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":99,"author":{"gitId":"taeewonnn"},"content":" char pos \u003d inputCommand.charAt(7);","lastModifiedDate":"2024-01-24"},{"lineNumber":100,"author":{"gitId":"taeewonnn"},"content":" int index \u003d Integer.parseInt(String.valueOf(pos));","lastModifiedDate":"2024-01-24"},{"lineNumber":101,"author":{"gitId":"taeewonnn"},"content":" tasklist.deleteTask(index);","lastModifiedDate":"2024-01-24"},{"lineNumber":102,"author":{"gitId":"taeewonnn"},"content":" } else {","lastModifiedDate":"2024-01-22"},{"lineNumber":103,"author":{"gitId":"taeewonnn"},"content":" System.out.println(\"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2024-01-24"},{"lineNumber":104,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":105,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":106,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":107,"author":{"gitId":"taeewonnn"},"content":" public static void writeFile(String filePath, taskList tasklist) {","lastModifiedDate":"2024-01-27"},{"lineNumber":108,"author":{"gitId":"taeewonnn"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":109,"author":{"gitId":"taeewonnn"},"content":" FileWriter fw \u003d new FileWriter(filePath);","lastModifiedDate":"2024-01-27"},{"lineNumber":110,"author":{"gitId":"taeewonnn"},"content":" for (int i \u003d 0; i \u003c tasklist.getSize(); i++) {","lastModifiedDate":"2024-01-27"},{"lineNumber":111,"author":{"gitId":"taeewonnn"},"content":" Task task \u003d tasklist.getTask(i);","lastModifiedDate":"2024-01-27"},{"lineNumber":112,"author":{"gitId":"taeewonnn"},"content":" fw.write(task.outputString() + \"\\n\");","lastModifiedDate":"2024-01-27"},{"lineNumber":113,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":114,"author":{"gitId":"taeewonnn"},"content":" fw.close();","lastModifiedDate":"2024-01-27"},{"lineNumber":115,"author":{"gitId":"taeewonnn"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":116,"author":{"gitId":"taeewonnn"},"content":" System.out.println(\"Error detected: \" + e.getMessage());","lastModifiedDate":"2024-01-27"},{"lineNumber":117,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":118,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":119,"author":{"gitId":"taeewonnn"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"taeewonnn":119}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"taeewonnn"},"content":"import java.io.File;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"taeewonnn"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"taeewonnn"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"taeewonnn"},"content":"import task.taskList;","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":8,"author":{"gitId":"taeewonnn"},"content":" final String FILE_LOCATION \u003d \"projects/personal/data/duke.txt\";","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"taeewonnn"},"content":" System.out.println(\"Hello! I\u0027m KAI\\n\" + \"Please type in what you want to do\");","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"taeewonnn"},"content":" taskList tasklist \u003d new taskList();","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"taeewonnn"},"content":" File file \u003d new File(FILE_LOCATION);","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"taeewonnn"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"taeewonnn"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"taeewonnn"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"taeewonnn"},"content":" System.out.println(\"File created!!\");","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"taeewonnn"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"taeewonnn"},"content":" System.out.println(\"Error creating the file...\");","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"taeewonnn"},"content":" } else {","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"taeewonnn"},"content":" System.out.println(\"File already exists, you can continue\");","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"taeewonnn"},"content":" Command.readFile(FILE_LOCATION, tasklist);","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"taeewonnn"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"taeewonnn"},"content":" while(scanner.hasNextLine()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"taeewonnn"},"content":" String line \u003d scanner.nextLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"taeewonnn"},"content":" if (line.equals(\"bye\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"taeewonnn"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"taeewonnn"},"content":" Command.process(line, tasklist);","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"taeewonnn"},"content":" Command.writeFile(FILE_LOCATION, tasklist);","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"taeewonnn"},"content":" scanner.close();","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"taeewonnn"},"content":" System.out.println(\"Bye Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"taeewonnn"},"content":" System.exit(0);","lastModifiedDate":"2024-01-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"taeewonnn":36,"-":4}},{"path":"src/main/java/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"taeewonnn"},"content":"package task;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"taeewonnn"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"taeewonnn"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"taeewonnn"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"taeewonnn"},"content":" private final DateTimeFormatter OUTPUT_FORMAT \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy\");","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"taeewonnn"},"content":" LocalDate deadlineDate;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"taeewonnn"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"taeewonnn"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"taeewonnn"},"content":" deadlineDate \u003d LocalDate.parse(by);","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"taeewonnn"},"content":" public Deadline(String description, String by, boolean isDone) {","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"taeewonnn"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"taeewonnn"},"content":" deadlineDate \u003d LocalDate.parse(by);","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"taeewonnn"},"content":" public String outputDateStringFormat(LocalDate outputDate) {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"taeewonnn"},"content":" return outputDate.format(OUTPUT_FORMAT);","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"taeewonnn"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"taeewonnn"},"content":" public String outputString() {","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"taeewonnn"},"content":" return \"D | \" + super.outputString() + \" | \" + outputDateStringFormat(deadlineDate);","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"taeewonnn"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"taeewonnn"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"taeewonnn"},"content":" return \"[D]\" + super.toString() + \" (by: \" + outputDateStringFormat(deadlineDate) + \")\";","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"taeewonnn"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"taeewonnn":33}},{"path":"src/main/java/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"taeewonnn"},"content":"package task;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"taeewonnn"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"taeewonnn"},"content":" protected String at;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"taeewonnn"},"content":" public Event(String description, String at) {","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"taeewonnn"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"taeewonnn"},"content":" this.at \u003d at;","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"taeewonnn"},"content":" public Event(String description, String at, boolean isDone) {","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"taeewonnn"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"taeewonnn"},"content":" this.at \u003d at;","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"taeewonnn"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"taeewonnn"},"content":" public String outputString() {","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"taeewonnn"},"content":" return \"E | \" + super.outputString() + \" | \" + at;","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"taeewonnn"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"taeewonnn"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"taeewonnn"},"content":" return \"[E]\" + super.toString() + \" (at: \" + at + \")\";","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"taeewonnn"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"taeewonnn":25}},{"path":"src/main/java/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"taeewonnn"},"content":"package task;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"taeewonnn"},"content":"public class Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"taeewonnn"},"content":" private String description;","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"taeewonnn"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"taeewonnn"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"taeewonnn"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"taeewonnn"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"taeewonnn"},"content":" public Task(String description, boolean isDone) {","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"taeewonnn"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"taeewonnn"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"taeewonnn"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"taeewonnn"},"content":" return this.description;","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"taeewonnn"},"content":" public void setDescription(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"taeewonnn"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"taeewonnn"},"content":" public String getIsDoneStatus() {","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"taeewonnn"},"content":" return (isDone ? \"O\" : \"X\");","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"taeewonnn"},"content":" public boolean getIsDone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"taeewonnn"},"content":" return this.isDone;","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"taeewonnn"},"content":" public void setIsDone(boolean done) {","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"taeewonnn"},"content":" this.isDone \u003d done;","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"taeewonnn"},"content":" public String outputString() {","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"taeewonnn"},"content":" return getIsDoneStatus() + \" | \" + description;","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"taeewonnn"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":42,"author":{"gitId":"taeewonnn"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":43,"author":{"gitId":"taeewonnn"},"content":" return \"[\" + getIsDoneStatus() + \"] \" + this.description;","lastModifiedDate":"2024-01-22"},{"lineNumber":44,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":45,"author":{"gitId":"taeewonnn"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"taeewonnn":45}},{"path":"src/main/java/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"taeewonnn"},"content":"package task;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"taeewonnn"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"taeewonnn"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"taeewonnn"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"taeewonnn"},"content":" public Todo(String description, boolean isDone) { super(description, isDone); }","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"taeewonnn"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"taeewonnn"},"content":" public String outputString() {","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"taeewonnn"},"content":" return \"T | \" + super.outputString();","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"taeewonnn"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"taeewonnn"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"taeewonnn"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"taeewonnn"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"taeewonnn":19}},{"path":"src/main/java/task/taskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"taeewonnn"},"content":"package task;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"taeewonnn"},"content":"import java.util.List;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"taeewonnn"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"taeewonnn"},"content":"public class taskList {","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"taeewonnn"},"content":" private List\u003cTask\u003e listOfTasks;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"taeewonnn"},"content":" public taskList() {","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"taeewonnn"},"content":" listOfTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"taeewonnn"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"taeewonnn"},"content":" listOfTasks.add(task);","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"taeewonnn"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n\"","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"taeewonnn"},"content":" + task + \"\\n\"","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"taeewonnn"},"content":" + \"Now you have \" + getSize()","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"taeewonnn"},"content":" + \" tasks in the list.\");","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"taeewonnn"},"content":" public int getSize() {","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"taeewonnn"},"content":" return listOfTasks.size();","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"taeewonnn"},"content":" public void listDownTask() {","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"taeewonnn"},"content":" int size \u003d getSize();","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"taeewonnn"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"taeewonnn"},"content":" for(int i \u003d 1; i \u003c\u003d size; i++) {","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"taeewonnn"},"content":" System.out.println(i +\": \" + listOfTasks.get(i - 1));","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"taeewonnn"},"content":" public void deleteTask(int index) {","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"taeewonnn"},"content":" Task removed \u003d getTask(index - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"taeewonnn"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\\n\" + removed);","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"taeewonnn"},"content":" listOfTasks.remove(index - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"taeewonnn"},"content":" System.out.println(\"Now you have \" + getSize() + \" tasks in the list\");","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"taeewonnn"},"content":" public void markTask(int index) {","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"taeewonnn"},"content":" Task modTask \u003d listOfTasks.get(index - 1);","lastModifiedDate":"2024-01-22"},{"lineNumber":42,"author":{"gitId":"taeewonnn"},"content":" modTask.setIsDone(true);","lastModifiedDate":"2024-01-22"},{"lineNumber":43,"author":{"gitId":"taeewonnn"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\\n\" + modTask);","lastModifiedDate":"2024-01-22"},{"lineNumber":44,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":45,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":46,"author":{"gitId":"taeewonnn"},"content":" public void unmarkTask(int index) {","lastModifiedDate":"2024-01-22"},{"lineNumber":47,"author":{"gitId":"taeewonnn"},"content":" Task modTask \u003d listOfTasks.get(index - 1);","lastModifiedDate":"2024-01-22"},{"lineNumber":48,"author":{"gitId":"taeewonnn"},"content":" modTask.setIsDone(false);","lastModifiedDate":"2024-01-22"},{"lineNumber":49,"author":{"gitId":"taeewonnn"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\\n\" + modTask);","lastModifiedDate":"2024-01-22"},{"lineNumber":50,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":51,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":52,"author":{"gitId":"taeewonnn"},"content":" public Task getTask(int index) {","lastModifiedDate":"2024-01-22"},{"lineNumber":53,"author":{"gitId":"taeewonnn"},"content":" return listOfTasks.get(index);","lastModifiedDate":"2024-01-22"},{"lineNumber":54,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":55,"author":{"gitId":"taeewonnn"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"taeewonnn":55}},{"path":"src/main/java/util/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"taeewonnn"},"content":"package util;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"taeewonnn"},"content":"import java.lang.Exception;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"taeewonnn"},"content":"public class DukeException {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"taeewonnn"},"content":" protected Exception exception;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"taeewonnn"},"content":" public DukeException(Exception exception) {","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"taeewonnn"},"content":" this.exception \u003d exception;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"taeewonnn"},"content":" public String toString(){","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"taeewonnn"},"content":" if (this.exception instanceof StringIndexOutOfBoundsException) {","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"taeewonnn"},"content":" return \"OOPS!!! The description of a todo cannot be empty.\";","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"taeewonnn"},"content":" else {","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"taeewonnn"},"content":" return \"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\";","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"taeewonnn"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"taeewonnn":19}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"taeewonnn"},"content":"todo borrow book","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"taeewonnn"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"taeewonnn"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"taeewonnn"},"content":"mark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"taeewonnn"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"taeewonnn"},"content":"unmark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"taeewonnn"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"taeewonnn"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"taeewonnn":8}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"taeewonnn"},"content":"# duke.Duke project template","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"taeewonnn"},"content":"3. After that, locate the `src/main/java/duke.Duke.java` file, right-click it, and choose `Run duke.Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"taeewonnn":2,"-":22}},{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"taeewonnn"},"content":"T | X | read book","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"taeewonnn"},"content":"D | O | report | Jan 23 2024","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"taeewonnn"},"content":"E | X | festival | aug 7th 2024","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"taeewonnn"},"content":"T | O | study at home","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"taeewonnn":4}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"taeewonnn"},"content":"package duke;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"taeewonnn"},"content":"import duke.task.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"taeewonnn"},"content":"import duke.util.Parser;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"taeewonnn"},"content":"import duke.util.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"taeewonnn"},"content":"import duke.util.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":9,"author":{"gitId":"taeewonnn"},"content":" public Storage storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"taeewonnn"},"content":" public TaskList taskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"taeewonnn"},"content":" public Ui ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"taeewonnn"},"content":" public Duke(String filePath) {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"taeewonnn"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"taeewonnn"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"taeewonnn"},"content":" taskList \u003d new TaskList(storage.load());","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"taeewonnn"},"content":" public void run() {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"taeewonnn"},"content":" ui.showWelcome();","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"taeewonnn"},"content":" storage.createFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"taeewonnn"},"content":" String input \u003d ui.readUserInput();","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"taeewonnn"},"content":" while(!input.equals(\"bye\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"taeewonnn"},"content":" Parser.parse(input, taskList);","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"taeewonnn"},"content":" input \u003d ui.readUserInput();","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"taeewonnn"},"content":" storage.writeFile(taskList);","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"taeewonnn"},"content":" ui.showFarewell();","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"taeewonnn"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"taeewonnn"},"content":" final String FILE_LOCATION \u003d \"projects/personal/data/duke.txt\";","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"taeewonnn"},"content":" new Duke(FILE_LOCATION).run();","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"taeewonnn":32,"-":3}},{"path":"src/main/java/duke/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"taeewonnn"},"content":"package duke.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"taeewonnn"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"taeewonnn"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"taeewonnn"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"taeewonnn"},"content":" private final DateTimeFormatter OUTPUT_FORMAT \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy\");","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"taeewonnn"},"content":" LocalDate deadlineDate;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"taeewonnn"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"taeewonnn"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"taeewonnn"},"content":" deadlineDate \u003d LocalDate.parse(by);","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"taeewonnn"},"content":" public Deadline(String description, String by, boolean isDone) {","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"taeewonnn"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"taeewonnn"},"content":" deadlineDate \u003d LocalDate.parse(by);","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"taeewonnn"},"content":" public String outputDateStringFormat(LocalDate outputDate) {","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"taeewonnn"},"content":" return outputDate.format(OUTPUT_FORMAT);","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"taeewonnn"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"taeewonnn"},"content":" public String outputString() {","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"taeewonnn"},"content":" return \"D | \" + super.outputString() + \" | \" + outputDateStringFormat(deadlineDate);","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"taeewonnn"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"taeewonnn"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"taeewonnn"},"content":" return \"[D]\" + super.toString() + \" (by: \" + outputDateStringFormat(deadlineDate) + \")\";","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"taeewonnn"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"taeewonnn":34}},{"path":"src/main/java/duke/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"taeewonnn"},"content":"package duke.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"taeewonnn"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"taeewonnn"},"content":" protected String at;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"taeewonnn"},"content":" public Event(String description, String at) {","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"taeewonnn"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"taeewonnn"},"content":" this.at \u003d at;","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"taeewonnn"},"content":" public Event(String description, String at, boolean isDone) {","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"taeewonnn"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"taeewonnn"},"content":" this.at \u003d at;","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"taeewonnn"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"taeewonnn"},"content":" public String outputString() {","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"taeewonnn"},"content":" return \"E | \" + super.outputString() + \" | \" + at;","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"taeewonnn"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"taeewonnn"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"taeewonnn"},"content":" return \"[E]\" + super.toString() + \" (at: \" + at + \")\";","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"taeewonnn"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"taeewonnn":25}},{"path":"src/main/java/duke/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"taeewonnn"},"content":"package duke.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"taeewonnn"},"content":"public class Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"taeewonnn"},"content":" private String description;","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"taeewonnn"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"taeewonnn"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"taeewonnn"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"taeewonnn"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"taeewonnn"},"content":" public Task(String description, boolean isDone) {","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"taeewonnn"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"taeewonnn"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"taeewonnn"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"taeewonnn"},"content":" return this.description;","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"taeewonnn"},"content":" public void setDescription(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"taeewonnn"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"taeewonnn"},"content":" public String getIsDoneStatus() {","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"taeewonnn"},"content":" return (isDone ? \"O\" : \"X\");","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"taeewonnn"},"content":" public boolean getIsDone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"taeewonnn"},"content":" return this.isDone;","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"taeewonnn"},"content":" public void setIsDone(boolean done) {","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"taeewonnn"},"content":" this.isDone \u003d done;","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"taeewonnn"},"content":" public String outputString() {","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"taeewonnn"},"content":" return getIsDoneStatus() + \" | \" + description;","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"taeewonnn"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":42,"author":{"gitId":"taeewonnn"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":43,"author":{"gitId":"taeewonnn"},"content":" return \"[\" + getIsDoneStatus() + \"] \" + this.description;","lastModifiedDate":"2024-01-22"},{"lineNumber":44,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":45,"author":{"gitId":"taeewonnn"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"taeewonnn":45}},{"path":"src/main/java/duke/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"taeewonnn"},"content":"package duke.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"taeewonnn"},"content":"import java.util.List;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"taeewonnn"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"taeewonnn"},"content":"public class TaskList {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"taeewonnn"},"content":" private List\u003cTask\u003e listOfTasks;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"taeewonnn"},"content":" public TaskList() {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"taeewonnn"},"content":" listOfTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"taeewonnn"},"content":" public TaskList(List\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"taeewonnn"},"content":" listOfTasks \u003d tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"taeewonnn"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"taeewonnn"},"content":" listOfTasks.add(task);","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"taeewonnn"},"content":" System.out.println(\"Got it. I\u0027ve added this duke.task:\\n\"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"taeewonnn"},"content":" + task + \"\\n\"","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"taeewonnn"},"content":" + \"Now you have \" + getSize()","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"taeewonnn"},"content":" + \" tasks in the list.\");","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"taeewonnn"},"content":" public int getSize() {","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"taeewonnn"},"content":" return listOfTasks.size();","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"taeewonnn"},"content":" public void listDownTask() {","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"taeewonnn"},"content":" int size \u003d getSize();","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"taeewonnn"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"taeewonnn"},"content":" for(int i \u003d 1; i \u003c\u003d size; i++) {","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"taeewonnn"},"content":" System.out.println(i +\": \" + listOfTasks.get(i - 1));","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"taeewonnn"},"content":" public void deleteTask(int index) {","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"taeewonnn"},"content":" Task removed \u003d getTask(index - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"taeewonnn"},"content":" System.out.println(\"Noted. I\u0027ve removed this duke.task:\\n\" + removed);","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"taeewonnn"},"content":" listOfTasks.remove(index - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"taeewonnn"},"content":" System.out.println(\"Now you have \" + getSize() + \" tasks in the list\");","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"taeewonnn"},"content":" public void markTask(int index) {","lastModifiedDate":"2024-01-22"},{"lineNumber":45,"author":{"gitId":"taeewonnn"},"content":" Task modTask \u003d listOfTasks.get(index - 1);","lastModifiedDate":"2024-01-22"},{"lineNumber":46,"author":{"gitId":"taeewonnn"},"content":" modTask.setIsDone(true);","lastModifiedDate":"2024-01-22"},{"lineNumber":47,"author":{"gitId":"taeewonnn"},"content":" System.out.println(\"Nice! I\u0027ve marked this duke.task as done:\\n\" + modTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":49,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":50,"author":{"gitId":"taeewonnn"},"content":" public void unmarkTask(int index) {","lastModifiedDate":"2024-01-22"},{"lineNumber":51,"author":{"gitId":"taeewonnn"},"content":" Task modTask \u003d listOfTasks.get(index - 1);","lastModifiedDate":"2024-01-22"},{"lineNumber":52,"author":{"gitId":"taeewonnn"},"content":" modTask.setIsDone(false);","lastModifiedDate":"2024-01-22"},{"lineNumber":53,"author":{"gitId":"taeewonnn"},"content":" System.out.println(\"OK, I\u0027ve marked this duke.task as not done yet:\\n\" + modTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":55,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":56,"author":{"gitId":"taeewonnn"},"content":" public Task getTask(int index) {","lastModifiedDate":"2024-01-22"},{"lineNumber":57,"author":{"gitId":"taeewonnn"},"content":" return listOfTasks.get(index);","lastModifiedDate":"2024-01-22"},{"lineNumber":58,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":59,"author":{"gitId":"taeewonnn"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"taeewonnn":59}},{"path":"src/main/java/duke/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"taeewonnn"},"content":"package duke.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"taeewonnn"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"taeewonnn"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"taeewonnn"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"taeewonnn"},"content":" public Todo(String description, boolean isDone) { super(description, isDone); }","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"taeewonnn"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"taeewonnn"},"content":" public String outputString() {","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"taeewonnn"},"content":" return \"T | \" + super.outputString();","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"taeewonnn"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"taeewonnn"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"taeewonnn"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"taeewonnn"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"taeewonnn":19}},{"path":"src/main/java/duke/util/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"taeewonnn"},"content":"package duke.util;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"taeewonnn"},"content":"import java.lang.Exception;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"taeewonnn"},"content":"public class DukeException extends Throwable {","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"taeewonnn"},"content":" protected Exception exception;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"taeewonnn"},"content":" public DukeException(Exception exception) {","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"taeewonnn"},"content":" this.exception \u003d exception;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"taeewonnn"},"content":" public String toString(){","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"taeewonnn"},"content":" if (this.exception instanceof StringIndexOutOfBoundsException) {","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"taeewonnn"},"content":" return \"OOPS!!! The description of a todo cannot be empty.\";","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"taeewonnn"},"content":" else {","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"taeewonnn"},"content":" return \"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\";","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"taeewonnn"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"taeewonnn":19}},{"path":"src/main/java/duke/util/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"taeewonnn"},"content":"package duke.util;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"taeewonnn"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"taeewonnn"},"content":"import duke.task.Todo;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"taeewonnn"},"content":"import duke.task.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"taeewonnn"},"content":"import duke.task.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"taeewonnn"},"content":"import duke.task.Event;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"taeewonnn"},"content":"public class Parser {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"taeewonnn"},"content":" public static void parse(String inputCommand, TaskList tasklist) {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"taeewonnn"},"content":" if (inputCommand.equals(\"list\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"taeewonnn"},"content":" tasklist.listDownTask();","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"taeewonnn"},"content":" } else if (inputCommand.startsWith(\"mark\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"taeewonnn"},"content":" char pos \u003d inputCommand.charAt(5);","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"taeewonnn"},"content":" int index \u003d Integer.parseInt(String.valueOf(pos));","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"taeewonnn"},"content":" tasklist.markTask(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"taeewonnn"},"content":" } else if (inputCommand.startsWith(\"unmark\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"taeewonnn"},"content":" char pos \u003d inputCommand.charAt(7);","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"taeewonnn"},"content":" int index \u003d Integer.parseInt(String.valueOf(pos));","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"taeewonnn"},"content":" tasklist.unmarkTask(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"taeewonnn"},"content":" } else if (inputCommand.startsWith(\"todo\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"taeewonnn"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"taeewonnn"},"content":" String des \u003d inputCommand.substring(5);","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"taeewonnn"},"content":" Task todo \u003d new Todo(des);","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"taeewonnn"},"content":" tasklist.addTask(todo);","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"taeewonnn"},"content":" } catch (StringIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"taeewonnn"},"content":" DukeException error \u003d new DukeException(e);","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"taeewonnn"},"content":" System.out.println(error);","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"taeewonnn"},"content":" } else if (inputCommand.startsWith(\"deadline\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"taeewonnn"},"content":" String[] separate \u003d inputCommand.substring(9).split(\"\\\\|\");","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"taeewonnn"},"content":" for (int i \u003d 0; i \u003c separate.length; i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"taeewonnn"},"content":" separate[i] \u003d separate[i].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"taeewonnn"},"content":" Task deadline \u003d new Deadline(separate[0], separate[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"taeewonnn"},"content":" tasklist.addTask(deadline);","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"taeewonnn"},"content":" } else if (inputCommand.startsWith(\"event\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"taeewonnn"},"content":" String[] separate \u003d inputCommand.substring(6).split(\"\\\\|\");","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"taeewonnn"},"content":" for (int i \u003d 0; i \u003c separate.length; i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"taeewonnn"},"content":" separate[i] \u003d separate[i].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"taeewonnn"},"content":" Task event \u003d new Event(separate[0], separate[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"taeewonnn"},"content":" tasklist.addTask(event);","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"taeewonnn"},"content":" } else if(inputCommand.startsWith(\"delete\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"taeewonnn"},"content":" char pos \u003d inputCommand.charAt(7);","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"taeewonnn"},"content":" int index \u003d Integer.parseInt(String.valueOf(pos));","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"taeewonnn"},"content":" tasklist.deleteTask(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"taeewonnn"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"taeewonnn"},"content":" System.out.println(\"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"taeewonnn"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"taeewonnn":52}},{"path":"src/main/java/duke/util/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"taeewonnn"},"content":"package duke.util;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"taeewonnn"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"taeewonnn"},"content":"import duke.task.Todo;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"taeewonnn"},"content":"import duke.task.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"taeewonnn"},"content":"import duke.task.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"taeewonnn"},"content":"import duke.task.Event;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"taeewonnn"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"taeewonnn"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"taeewonnn"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"taeewonnn"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"taeewonnn"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"taeewonnn"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"taeewonnn"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"taeewonnn"},"content":"import java.util.List;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"taeewonnn"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"taeewonnn"},"content":"public class Storage {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"taeewonnn"},"content":" private String fileLocation;","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"taeewonnn"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"taeewonnn"},"content":" fileLocation \u003d filePath;","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"taeewonnn"},"content":" public String convertDateFormat(String date) {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"taeewonnn"},"content":" LocalDate temp;","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"taeewonnn"},"content":" DateTimeFormatter readDateFormat \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy\");","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"taeewonnn"},"content":" temp \u003d LocalDate.parse(date, readDateFormat);","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"taeewonnn"},"content":" String formattedString \u003d temp.format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"taeewonnn"},"content":" System.out.println(formattedString);","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"taeewonnn"},"content":" return formattedString;","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"taeewonnn"},"content":" public Task parseInput(String inputCommand) {","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"taeewonnn"},"content":" String[] tokens \u003d inputCommand.split(\" \\\\| \");","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"taeewonnn"},"content":" String taskType \u003d tokens[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"taeewonnn"},"content":" boolean isDone \u003d tokens[1].equals(\"O\");","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"taeewonnn"},"content":" String description \u003d tokens[2];","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"taeewonnn"},"content":" Task task;","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"taeewonnn"},"content":" switch(taskType) {","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"taeewonnn"},"content":" case \"T\":","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"taeewonnn"},"content":" task \u003d new Todo(description, isDone);","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"taeewonnn"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"taeewonnn"},"content":" case \"D\":","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"taeewonnn"},"content":" String deadlineBy \u003d convertDateFormat(tokens[3]);","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"taeewonnn"},"content":" task \u003d new Deadline(description, deadlineBy, isDone);","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"taeewonnn"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"taeewonnn"},"content":" case \"E\":","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"taeewonnn"},"content":" String eventAt \u003d tokens[3];","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"taeewonnn"},"content":" task \u003d new Event(description, eventAt, isDone);","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"taeewonnn"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"taeewonnn"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"taeewonnn"},"content":" throw new IllegalStateException(\"I cannot recognize this duke.task type!\" + taskType);","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"taeewonnn"},"content":" return task;","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"taeewonnn"},"content":" public void createFile() {","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"taeewonnn"},"content":" File file \u003d new File(fileLocation);","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"taeewonnn"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"taeewonnn"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"taeewonnn"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"taeewonnn"},"content":" System.out.println(\"File created!!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"taeewonnn"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"taeewonnn"},"content":" System.out.println(\"Error creating the file...\");","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"taeewonnn"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"taeewonnn"},"content":" System.out.println(\"File already exists, you can continue\");","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"taeewonnn"},"content":" public List\u003cTask\u003e load() {","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"taeewonnn"},"content":" List\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"taeewonnn"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"taeewonnn"},"content":" File file \u003d new File(fileLocation);","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"taeewonnn"},"content":" Scanner sc \u003d new Scanner(file);","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"taeewonnn"},"content":" while (sc.hasNextLine()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"taeewonnn"},"content":" String input \u003d sc.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"taeewonnn"},"content":" tasks.add(parseInput(input));","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"taeewonnn"},"content":" sc.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"taeewonnn"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"taeewonnn"},"content":" System.out.println(\"File not found\");","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"taeewonnn"},"content":" return tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"taeewonnn"},"content":" public void writeFile(TaskList tasklist) {","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"taeewonnn"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"taeewonnn"},"content":" FileWriter fw \u003d new FileWriter(fileLocation);","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"taeewonnn"},"content":" for (int i \u003d 0; i \u003c tasklist.getSize(); i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"taeewonnn"},"content":" Task task \u003d tasklist.getTask(i);","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"taeewonnn"},"content":" fw.write(task.outputString() + \"\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"taeewonnn"},"content":" fw.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"taeewonnn"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"taeewonnn"},"content":" System.out.println(\"Error detected: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"taeewonnn"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"taeewonnn":102}},{"path":"src/main/java/duke/util/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"taeewonnn"},"content":"package duke.util;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"taeewonnn"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"taeewonnn"},"content":"public class Ui {","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"taeewonnn"},"content":" private Scanner sc;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"taeewonnn"},"content":" public Ui() {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"taeewonnn"},"content":" sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"taeewonnn"},"content":" public String readUserInput() {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"taeewonnn"},"content":" return sc.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"taeewonnn"},"content":" public void showWelcome() {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"taeewonnn"},"content":" System.out.println(\"Hello! I\u0027m KAI\\n\" + \"Please type in what you want to do\");","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"taeewonnn"},"content":" public void showError(String message) {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"taeewonnn"},"content":" System.out.println(message);","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"taeewonnn"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"taeewonnn"},"content":" public void showFarewell() {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"taeewonnn"},"content":" sc.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"taeewonnn"},"content":" System.out.println(\"Bye Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"taeewonnn"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"taeewonnn"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"taeewonnn":28}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"taeewonnn"},"content":"todo borrow book","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"taeewonnn"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"taeewonnn"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"taeewonnn"},"content":"mark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"taeewonnn"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"taeewonnn"},"content":"unmark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"taeewonnn"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"taeewonnn"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"taeewonnn":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":"taeewonnn"},"content":"java -classpath ..\\bin duke.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":20,"taeewonnn":1}}] diff --git a/taeewonnn_ip_master/commits.json b/taeewonnn_ip_master/commits.json index 5793b644..80efd4d4 100644 --- a/taeewonnn_ip_master/commits.json +++ b/taeewonnn_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"taeewonnn":[{"date":"2024-01-21","commitResults":[{"hash":"d31a045d08b577f734d97fa37a204573109d5c5e","isMergeCommit":false,"messageTitle":"Renamed, greeted and exited the chat","messageBody":"","tags":["level-0"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":6}}},{"hash":"dfa26a9793c3c55370cf39e9aee90ea5fb7c5ce6","isMergeCommit":false,"messageTitle":"Chatbot is able to echo the command the user is typing in","messageBody":"","tags":["level-1"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":0}}}]},{"date":"2024-01-22","commitResults":[{"hash":"0516102222ef9799c9e9a18e6c1d07d2a85ebf3f","isMergeCommit":false,"messageTitle":"Made a parsing class so that it can take in inputs and process them as individual commands","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":0}}},{"hash":"8cbc4e648c2df2c0493339940756718ee12bb974","isMergeCommit":false,"messageTitle":"Task class with a taskList collection to hold the task objects, with necessary functionalities present. Duke class able to run with the parsing class and create a list of tasks to do","messageBody":"","tags":["level-2"],"fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":13}}},{"hash":"d4eb4a76dcbc5487b0ee2afec8cad33c656246a0","isMergeCommit":false,"messageTitle":"Command class to process the input information and use the right functionality. Parsing class making use of Command objects instead of having manual operation with while loop","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":6}}},{"hash":"fdfc58835cb4240b779da7a928b927ad32b1274e","isMergeCommit":false,"messageTitle":"Task object has boolean status done. Tasklist with mark and unmark functionality and command class bug fixed. Duke updated with exiting system.","messageBody":"","tags":["level-3"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":8}}},{"hash":"984ee700714547d6a71c29aa356563be781dbfaa","isMergeCommit":false,"messageTitle":"todo, deadline, event class extending from task class with date and time stored as string for now. parsing class renamed as processor class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":46,"deletions":2}}},{"hash":"5ca01ca74b13bbf27e5d429d6d84e9a5ccc457f4","isMergeCommit":false,"messageTitle":"Command is now able to recognise to, deadline and event keywords. tasklist functionalities modified to display task numbers","messageBody":"","tags":["level-4"],"fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":4}}}]},{"date":"2024-01-24","commitResults":[{"hash":"d9ffb644a8ee9ab5a4d72528ad1f7d63eacbf871","isMergeCommit":false,"messageTitle":"A-TextUiTesting. Test using the I/O redirection technique","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0}}},{"hash":"597a4708a33e6af4344390a4039b1e9597c55d90","isMergeCommit":false,"messageTitle":"Created DukeException class. Processor class not in use.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":56,"deletions":26}}},{"hash":"9e7540529558c00bad4e9ea275b0b7cec3fbbe42","isMergeCommit":false,"messageTitle":"handling errors","messageBody":"","tags":["level-5"],"fileTypesAndContributionMap":{"java":{"insertions":52,"deletions":43}}},{"hash":"a212dd11eb73312a74499ec3534eec4db2ae8d63","isMergeCommit":false,"messageTitle":"delete task","messageBody":"","tags":["level-6"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":1}}}]},{"date":"2024-01-26","commitResults":[{"hash":"8ea03dae0595d262d9727f5422050cfc20e66c4f","isMergeCommit":false,"messageTitle":"Delete Processor.java Duke.java: Change indentations Command.java: Change indentations taskList.java: Change indentations","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":43,"deletions":83}}}]},{"date":"2024-01-27","commitResults":[{"hash":"cd25fc73aaea2dc19908ab4ed81ff37fba028573","isMergeCommit":false,"messageTitle":"Add save function","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":130,"deletions":13}}},{"hash":"3f8b2c1c6465cf5035804e54852b83655ed3db46","isMergeCommit":false,"messageTitle":"Add text variation","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"027adc981f82c7c2f96e7e227da64406ce198609","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-28","commitResults":[{"hash":"6728ce9961508d27eb0443b9cd01b67d68363a60","isMergeCommit":false,"messageTitle":"Add text variation","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"f0475a646ce830bdafa9914c17b6d36895b342c6","isMergeCommit":false,"messageTitle":"Add Date to Deadline class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":10}}},{"hash":"e98db18f7bb6f293d6b991abccda27f110de91dc","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["level-8"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"taeewonnn":{"java":351,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":12}},"authorContributionVariance":{"taeewonnn":8563.89},"authorDisplayNameMap":{"taeewonnn":"CS2103T-T10-3 HAN .. WON"}} +{"authorDailyContributionsMap":{"taeewonnn":[{"date":"2024-01-21","commitResults":[{"hash":"d31a045d08b577f734d97fa37a204573109d5c5e","isMergeCommit":false,"messageTitle":"Renamed, greeted and exited the chat","messageBody":"","tags":["level-0"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":6}}},{"hash":"dfa26a9793c3c55370cf39e9aee90ea5fb7c5ce6","isMergeCommit":false,"messageTitle":"Chatbot is able to echo the command the user is typing in","messageBody":"","tags":["level-1"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":0}}}]},{"date":"2024-01-22","commitResults":[{"hash":"0516102222ef9799c9e9a18e6c1d07d2a85ebf3f","isMergeCommit":false,"messageTitle":"Made a parsing class so that it can take in inputs and process them as individual commands","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":0}}},{"hash":"8cbc4e648c2df2c0493339940756718ee12bb974","isMergeCommit":false,"messageTitle":"Task class with a taskList collection to hold the task objects, with necessary functionalities present. Duke class able to run with the parsing class and create a list of tasks to do","messageBody":"","tags":["level-2"],"fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":13}}},{"hash":"d4eb4a76dcbc5487b0ee2afec8cad33c656246a0","isMergeCommit":false,"messageTitle":"Command class to process the input information and use the right functionality. Parsing class making use of Command objects instead of having manual operation with while loop","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":6}}},{"hash":"fdfc58835cb4240b779da7a928b927ad32b1274e","isMergeCommit":false,"messageTitle":"Task object has boolean status done. Tasklist with mark and unmark functionality and command class bug fixed. Duke updated with exiting system.","messageBody":"","tags":["level-3"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":8}}},{"hash":"984ee700714547d6a71c29aa356563be781dbfaa","isMergeCommit":false,"messageTitle":"todo, deadline, event class extending from task class with date and time stored as string for now. parsing class renamed as processor class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":46,"deletions":2}}},{"hash":"5ca01ca74b13bbf27e5d429d6d84e9a5ccc457f4","isMergeCommit":false,"messageTitle":"Command is now able to recognise to, deadline and event keywords. tasklist functionalities modified to display task numbers","messageBody":"","tags":["level-4"],"fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":4}}}]},{"date":"2024-01-24","commitResults":[{"hash":"d9ffb644a8ee9ab5a4d72528ad1f7d63eacbf871","isMergeCommit":false,"messageTitle":"A-TextUiTesting. Test using the I/O redirection technique","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0}}},{"hash":"597a4708a33e6af4344390a4039b1e9597c55d90","isMergeCommit":false,"messageTitle":"Created DukeException class. Processor class not in use.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":56,"deletions":26}}},{"hash":"9e7540529558c00bad4e9ea275b0b7cec3fbbe42","isMergeCommit":false,"messageTitle":"handling errors","messageBody":"","tags":["level-5"],"fileTypesAndContributionMap":{"java":{"insertions":52,"deletions":43}}},{"hash":"a212dd11eb73312a74499ec3534eec4db2ae8d63","isMergeCommit":false,"messageTitle":"delete task","messageBody":"","tags":["level-6"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":1}}}]},{"date":"2024-01-26","commitResults":[{"hash":"8ea03dae0595d262d9727f5422050cfc20e66c4f","isMergeCommit":false,"messageTitle":"Delete Processor.java Duke.java: Change indentations Command.java: Change indentations taskList.java: Change indentations","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":43,"deletions":83}}}]},{"date":"2024-01-27","commitResults":[{"hash":"cd25fc73aaea2dc19908ab4ed81ff37fba028573","isMergeCommit":false,"messageTitle":"Add save function","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":130,"deletions":13}}},{"hash":"3f8b2c1c6465cf5035804e54852b83655ed3db46","isMergeCommit":false,"messageTitle":"Add text variation","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"027adc981f82c7c2f96e7e227da64406ce198609","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-28","commitResults":[{"hash":"6728ce9961508d27eb0443b9cd01b67d68363a60","isMergeCommit":false,"messageTitle":"Add text variation","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"f0475a646ce830bdafa9914c17b6d36895b342c6","isMergeCommit":false,"messageTitle":"Add Date to Deadline class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":10}}},{"hash":"e98db18f7bb6f293d6b991abccda27f110de91dc","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-30","commitResults":[{"hash":"0262e78c85f128725164399bdffcb199fe64b0f4","isMergeCommit":false,"messageTitle":"Add Ui, Storage, Parser","messageBody":"Delete Command.java\n\nRename taskList.java\n","fileTypesAndContributionMap":{"java":{"insertions":204,"deletions":154}}},{"hash":"dceb8bf6135d45681af80f146f8a22328920de0d","isMergeCommit":false,"messageTitle":"Add text variations","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"ff73d3e562a68e9edb0c2acff22b2c16f643af32","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/Duke.java\n\nDelete Duke.java previous main functions\n","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"5d3fd90491c71b4d1a4adb8436f53f4976ada5bf","isMergeCommit":false,"messageTitle":"A-Packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":19},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"0a9c9d6b8db784db11dcd73337580f98509becd5","isMergeCommit":false,"messageTitle":"Add duke.txt","messageBody":"Show tasks are getting stored in file\n","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":3}}},{"hash":"aeb3c68a7fab266738e9d51bd83b81fc20a701a2","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"ad985d480f43bbac2737fd896c7713634a17f1dd","isMergeCommit":false,"messageTitle":"Fix import statements","messageBody":"Import statements are written down with *.\n\nThis is a bad way to import.\n\nLet\u0027s change it to individual imports\n","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":6}}}]}]},"authorFileTypeContributionMap":{"taeewonnn":{"java":415,"md":2,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":12}},"authorContributionVariance":{"taeewonnn":17681.307},"authorDisplayNameMap":{"taeewonnn":"CS2103T-T10-3 HAN .. WON"}} diff --git a/taniatsq_ip_master/authorship.json b/taniatsq_ip_master/authorship.json index 7e891f4e..958e8baa 100644 --- a/taniatsq_ip_master/authorship.json +++ b/taniatsq_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"taniatsq"},"content":"public class Deadline extends Task{","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"taniatsq"},"content":" private String deadline;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"taniatsq"},"content":" public Deadline(String deadline, String task) {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"taniatsq"},"content":" super(task);","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"taniatsq"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"taniatsq"},"content":" public String getDeadline() {","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"taniatsq"},"content":" return \"(by: \" + deadline + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"taniatsq"},"content":" public String isDeadline() {","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"taniatsq"},"content":" return \"[D]\";","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"taniatsq"},"content":" public String addDeadline() {","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"taniatsq"},"content":" return \"Got it. I\u0027ve added this task:\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"taniatsq"},"content":" + \" \" + this.isDeadline() + this.marked() + \" \"","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"taniatsq"},"content":" + this.getTask()","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"taniatsq"},"content":" + this.getDeadline();","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"taniatsq"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"taniatsq":24}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"taniatsq"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"taniatsq"},"content":"import java.text.NumberFormat;","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"taniatsq"},"content":"import java.util.NoSuchElementException;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"taniatsq"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"taniatsq"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":9,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"taniatsq"},"content":" Scanner user \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"taniatsq"},"content":" System.out.println(\"Hi babyyy! It\u0027s your EUEU!!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"taniatsq"},"content":" System.out.println(\"What are you doing today??\");","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"taniatsq"},"content":" Task echo \u003d new Task (user.nextLine());","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"taniatsq"},"content":" ArrayList\u003cTask\u003e tasklist \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"taniatsq"},"content":" while (!echo.getTask().equals(\"bye\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"taniatsq"},"content":" if (echo.getTask().equals(\"list\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"taniatsq"},"content":" System.out.println(\" Here are the tasks in your list:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"taniatsq"},"content":" for (int i \u003d 0; i \u003c tasklist.size(); i++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"taniatsq"},"content":" int j \u003d i + 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"taniatsq"},"content":" System.out.println(\" \" + j + \". \" + tasklist.get(i).getCat()","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"taniatsq"},"content":" + tasklist.get(i).marked() + \" \"","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"taniatsq"},"content":" + tasklist.get(i).getTask() + tasklist.get(i).getDetails());","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"taniatsq"},"content":" } else if (echo.getTask().startsWith(\"mark\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"taniatsq"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"taniatsq"},"content":" String str \u003d echo.getTask().substring(5);","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"taniatsq"},"content":" int number \u003d Integer.parseInt(str) - 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"taniatsq"},"content":" String name \u003d tasklist.get(number).getTask();","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"taniatsq"},"content":" tasklist.get(number).mark();","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"taniatsq"},"content":" System.out.println(echo.mark(number, name, tasklist.get(number)));","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"taniatsq"},"content":" } catch (StringIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"taniatsq"},"content":" System.out.println(\"Enter task to mark done: e.g. mark 1\");","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"taniatsq"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"taniatsq"},"content":" System.out.println(\"Enter task to mark done: e.g. mark 1\");","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"taniatsq"},"content":" } else if (echo.getTask().startsWith(\"unmark\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"taniatsq"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"taniatsq"},"content":" String str \u003d echo.getTask().substring(7);","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"taniatsq"},"content":" int number \u003d Integer.parseInt(str) - 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"taniatsq"},"content":" String name \u003d tasklist.get(number).getTask();","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"taniatsq"},"content":" tasklist.get(number).unmark();","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"taniatsq"},"content":" System.out.println(echo.unmark(number, name, tasklist.get(number)));","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"taniatsq"},"content":" } catch (StringIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"taniatsq"},"content":" System.out.println(\"Enter task to unmark: e.g. unmark 1\");","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"taniatsq"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"taniatsq"},"content":" System.out.println(\"Enter task to mark done: e.g. mark 1\");","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"taniatsq"},"content":" } else if (echo.getTask().startsWith(\"delete\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"taniatsq"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"taniatsq"},"content":" String str \u003d echo.getTask().substring(7);","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"taniatsq"},"content":" int number \u003d Integer.parseInt(str) - 1;","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"taniatsq"},"content":" Task name \u003d tasklist.get(number);","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"taniatsq"},"content":" tasklist.remove(number);","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"taniatsq"},"content":" System.out.println(echo.delete(name));","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"taniatsq"},"content":" System.out.println(\"Now you have \" + tasklist.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"taniatsq"},"content":" } catch (StringIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"taniatsq"},"content":" System.out.println(\"Enter task to delete: e.g. delete 1\");","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"taniatsq"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"taniatsq"},"content":" System.out.println(\"Enter task to delete: e.g. delete 1\");","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"taniatsq"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"taniatsq"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":68,"author":{"gitId":"taniatsq"},"content":" if (echo.getTask().startsWith(\"todo\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":69,"author":{"gitId":"taniatsq"},"content":" String str \u003d echo.getTask().substring(5);","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"taniatsq"},"content":" Todo todo \u003d new Todo(str);","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"taniatsq"},"content":" tasklist.add(todo);","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"taniatsq"},"content":" System.out.println(todo.addTodo());","lastModifiedDate":"2024-01-24"},{"lineNumber":73,"author":{"gitId":"taniatsq"},"content":" System.out.println(\"Now you have \" + tasklist.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"taniatsq"},"content":" } else if (echo.getTask().startsWith(\"deadline\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"taniatsq"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"taniatsq"},"content":" String str \u003d echo.getTask().substring(9);","lastModifiedDate":"2024-01-24"},{"lineNumber":78,"author":{"gitId":"taniatsq"},"content":" String[] arr \u003d str.split(\"/\");","lastModifiedDate":"2024-01-24"},{"lineNumber":79,"author":{"gitId":"taniatsq"},"content":" String task \u003d arr[0];","lastModifiedDate":"2024-01-24"},{"lineNumber":80,"author":{"gitId":"taniatsq"},"content":" String ddl \u003d arr[1].substring(3);","lastModifiedDate":"2024-01-24"},{"lineNumber":81,"author":{"gitId":"taniatsq"},"content":" Deadline deadline \u003d new Deadline(ddl, task);","lastModifiedDate":"2024-01-24"},{"lineNumber":82,"author":{"gitId":"taniatsq"},"content":" tasklist.add(deadline);","lastModifiedDate":"2024-01-24"},{"lineNumber":83,"author":{"gitId":"taniatsq"},"content":" System.out.println(deadline.addDeadline());","lastModifiedDate":"2024-01-24"},{"lineNumber":84,"author":{"gitId":"taniatsq"},"content":" System.out.println(\"Now you have \" + tasklist.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":85,"author":{"gitId":"taniatsq"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":86,"author":{"gitId":"taniatsq"},"content":" System.out.println(\"Let me know your deadlines babe: e.g. deadline \u003cdeadline\u003e /by \u003cddl\u003e\");","lastModifiedDate":"2024-01-25"},{"lineNumber":87,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":88,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":89,"author":{"gitId":"taniatsq"},"content":" } else if (echo.getTask().startsWith(\"event\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":90,"author":{"gitId":"taniatsq"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":91,"author":{"gitId":"taniatsq"},"content":" String str \u003d echo.getTask().substring(6);","lastModifiedDate":"2024-01-24"},{"lineNumber":92,"author":{"gitId":"taniatsq"},"content":" String[] arr \u003d str.split(\"/\");","lastModifiedDate":"2024-01-24"},{"lineNumber":93,"author":{"gitId":"taniatsq"},"content":" String task \u003d arr[0];","lastModifiedDate":"2024-01-24"},{"lineNumber":94,"author":{"gitId":"taniatsq"},"content":" String start \u003d arr[1].substring(5);","lastModifiedDate":"2024-01-24"},{"lineNumber":95,"author":{"gitId":"taniatsq"},"content":" String end \u003d arr[2].substring(3);","lastModifiedDate":"2024-01-24"},{"lineNumber":96,"author":{"gitId":"taniatsq"},"content":" Event event \u003d new Event(start, end, task);","lastModifiedDate":"2024-01-24"},{"lineNumber":97,"author":{"gitId":"taniatsq"},"content":" tasklist.add(event);","lastModifiedDate":"2024-01-24"},{"lineNumber":98,"author":{"gitId":"taniatsq"},"content":" System.out.println(event.addEvent());","lastModifiedDate":"2024-01-24"},{"lineNumber":99,"author":{"gitId":"taniatsq"},"content":" System.out.println(\"Now you have \" + tasklist.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":100,"author":{"gitId":"taniatsq"},"content":" } catch(ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":101,"author":{"gitId":"taniatsq"},"content":" System.out.println(\"Let me know when this event is bb: e.g. event \u003cevent\u003e /from \u003cwhen\u003e/to \u003cwhen\u003e\");","lastModifiedDate":"2024-01-25"},{"lineNumber":102,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":103,"author":{"gitId":"taniatsq"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":104,"author":{"gitId":"taniatsq"},"content":" System.out.println(\"Baby, what are you saying? Tell me what your TODOs, DEADLINEs and EVENTs are!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":105,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":106,"author":{"gitId":"taniatsq"},"content":" } catch (StringIndexOutOfBoundsException e){","lastModifiedDate":"2024-01-25"},{"lineNumber":107,"author":{"gitId":"taniatsq"},"content":" System.out.println(\"ENTER INSTRUCTION\");","lastModifiedDate":"2024-01-25"},{"lineNumber":108,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":109,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":110,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":111,"author":{"gitId":"taniatsq"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":112,"author":{"gitId":"taniatsq"},"content":" echo \u003d new Task(user.nextLine());","lastModifiedDate":"2024-01-24"},{"lineNumber":113,"author":{"gitId":"taniatsq"},"content":" } catch (NoSuchElementException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":114,"author":{"gitId":"taniatsq"},"content":" System.out.println(\"Say something I\u0027m giving up on you \");","lastModifiedDate":"2024-01-25"},{"lineNumber":115,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":116,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":117,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":118,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":119,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":120,"author":{"gitId":"taniatsq"},"content":" System.out.println(\" byeee love uu ttyl ok!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":121,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":123,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"taniatsq":119,"-":4}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"taniatsq"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"taniatsq"},"content":" private String start;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"taniatsq"},"content":" private String end;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"taniatsq"},"content":" public Event(String start, String end, String task) {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"taniatsq"},"content":" super(task);","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"taniatsq"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"taniatsq"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"taniatsq"},"content":" public String isEvent() {","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"taniatsq"},"content":" return \"[E]\";","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"taniatsq"},"content":" public String getEvent() {","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"taniatsq"},"content":" return \"(from: \" + start + \" to: \" + end + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"taniatsq"},"content":" public String addEvent() {","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"taniatsq"},"content":" return \"Got it. I\u0027ve added this task:\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"taniatsq"},"content":" + \" \" + this.isEvent() + this.marked() + \" \"","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"taniatsq"},"content":" + this.getTask() + this.getEvent();","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"taniatsq"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"taniatsq":24}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"taniatsq"},"content":"public class Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"taniatsq"},"content":" private String task;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"taniatsq"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"taniatsq"},"content":" private String start;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"taniatsq"},"content":" private String end;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"taniatsq"},"content":" private String ddl;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"taniatsq"},"content":" private String name;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"taniatsq"},"content":" public Task(String task) {","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"taniatsq"},"content":" this.task \u003d task;","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"taniatsq"},"content":" public void mark() {","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"taniatsq"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"taniatsq"},"content":" public String mark(int number, String name, Task task) {","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"taniatsq"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"taniatsq"},"content":" return \" Nice! I\u0027ve marked this task as done: \\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"taniatsq"},"content":" + \" \" + task.getCat() + marked() + \" \"","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"taniatsq"},"content":" + name;","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"taniatsq"},"content":" public String delete(Task task) {","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"taniatsq"},"content":" return \" Noted. I\u0027ve removed this task: \\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"taniatsq"},"content":" + \" \" + task.getCat() + task.marked() + \" \"","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"taniatsq"},"content":" + task.getTask();","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"taniatsq"},"content":" public void unmark() {","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"taniatsq"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"taniatsq"},"content":" public String unmark(int number, String name, Task task) {","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"taniatsq"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"taniatsq"},"content":" return \" Ok, I\u0027ve marked this task as not done yet: \\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"taniatsq"},"content":" + \" \" + task.getCat() + marked() + \" \"","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"taniatsq"},"content":" + name;","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"taniatsq"},"content":"/* public String marked () {","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"taniatsq"},"content":" String str \u003d task.substring(5);","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"taniatsq"},"content":" int number \u003d Integer.parseInt(str) -1;","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"taniatsq"},"content":" mark();","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"taniatsq"},"content":" return \" Nice! I\u0027ve marked this task as done: \\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"taniatsq"},"content":" + \" [X] \" + task;","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"taniatsq"},"content":" public String unmarked() {","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"taniatsq"},"content":" String str \u003d task.substring(7);","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"taniatsq"},"content":" int number \u003d Integer.parseInt(str) -1;","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"taniatsq"},"content":" unmark();","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"taniatsq"},"content":" return \" Ok, I\u0027ve marked this task as not done yet: \\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"taniatsq"},"content":" + \" [ ] \" + task;","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"taniatsq"},"content":" }*/","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"taniatsq"},"content":" public String marked() {","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"taniatsq"},"content":" if (isDone) {","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"taniatsq"},"content":" return \"[X]\";","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"taniatsq"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"taniatsq"},"content":" return \"[ ]\";","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"taniatsq"},"content":" public String getTask() {","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"taniatsq"},"content":" return task;","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"taniatsq"},"content":" public String getCat() {","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"taniatsq"},"content":" if (this instanceof Todo) {","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"taniatsq"},"content":" return \"[T]\";","lastModifiedDate":"2024-01-24"},{"lineNumber":73,"author":{"gitId":"taniatsq"},"content":" } else if (this instanceof Deadline) {","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"taniatsq"},"content":" return \"[D]\";","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"taniatsq"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":76,"author":{"gitId":"taniatsq"},"content":" return \"[E]\";","lastModifiedDate":"2024-01-24"},{"lineNumber":77,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":78,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":79,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":80,"author":{"gitId":"taniatsq"},"content":" public String getDetails() {","lastModifiedDate":"2024-01-24"},{"lineNumber":81,"author":{"gitId":"taniatsq"},"content":" if (this instanceof Deadline) {","lastModifiedDate":"2024-01-24"},{"lineNumber":82,"author":{"gitId":"taniatsq"},"content":" return ((Deadline) this).getDeadline();","lastModifiedDate":"2024-01-24"},{"lineNumber":83,"author":{"gitId":"taniatsq"},"content":" } else if (this instanceof Event) {","lastModifiedDate":"2024-01-24"},{"lineNumber":84,"author":{"gitId":"taniatsq"},"content":" return ((Event) this).getEvent();","lastModifiedDate":"2024-01-24"},{"lineNumber":85,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":86,"author":{"gitId":"taniatsq"},"content":" return \"\";","lastModifiedDate":"2024-01-24"},{"lineNumber":87,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":88,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":89,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":90,"author":{"gitId":"taniatsq"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"taniatsq":90}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"taniatsq"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"taniatsq"},"content":" public Todo(String task) {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"taniatsq"},"content":" super(task);","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"taniatsq"},"content":" public String isTodo() {","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"taniatsq"},"content":" return \"[T]\";","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"taniatsq"},"content":" public String addTodo() {","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"taniatsq"},"content":" return \"Got it. I\u0027ve added this task: \\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"taniatsq"},"content":" + \" \" + this.isTodo() + this.marked() + \" \" + this.getTask();","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"taniatsq"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"taniatsq":16}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"taniatsq"},"content":"todo borrow book","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"taniatsq"},"content":"bye","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"taniatsq":2}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"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":"taniatsq"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"taniatsq"},"content":"diff -w ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"taniatsq":2,"-":37}}] +[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"taniatsq"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"taniatsq"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"taniatsq"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"taniatsq"},"content":"import java.text.ParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"taniatsq"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"taniatsq"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"taniatsq"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"taniatsq"},"content":"public class Deadline extends Task{","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"taniatsq"},"content":" private String deadline;","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"taniatsq"},"content":" public Deadline(String deadline, String task) {","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"taniatsq"},"content":" super(task);","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"taniatsq"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"taniatsq"},"content":" public String getDeadline() {","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"taniatsq"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"taniatsq"},"content":" LocalDate ddl \u003d LocalDate.parse(deadline);","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"taniatsq"},"content":" return \"(by: \" + ddl.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"taniatsq"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"taniatsq"},"content":" return \"(by: \" + deadline + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"taniatsq"},"content":" public String isDeadline() {","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"taniatsq"},"content":" return \"[D]\";","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"taniatsq"},"content":" public String addDeadline() {","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"taniatsq"},"content":" return \"Got it. I\u0027ve added this task:\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"taniatsq"},"content":" + \" \" + this.isDeadline() + this.marked() + \" \"","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"taniatsq"},"content":" + this.getTask()","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"taniatsq"},"content":" + this.getDeadline();","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"taniatsq"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"taniatsq"},"content":" public void writeToFile(File filePath) {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"taniatsq"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"taniatsq"},"content":" FileWriter fw \u003d new FileWriter(filePath.getPath(), true);","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"taniatsq"},"content":" fw.write(this.isDeadline() + this.marked() + \" \"","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"taniatsq"},"content":" + this.getTask() + this.getDeadline() + \"\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"taniatsq"},"content":" fw.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"taniatsq"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"taniatsq"},"content":" System.out.println(\"file not found! try again xx\");","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"taniatsq"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"taniatsq":49}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"taniatsq"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"taniatsq"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"taniatsq"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"taniatsq"},"content":"import java.text.NumberFormat;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"taniatsq"},"content":"import java.util.NoSuchElementException;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"taniatsq"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"taniatsq"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"taniatsq"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-24"},{"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":"taniatsq"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"taniatsq"},"content":" File f \u003d new File(\"data/EUEU.txt\");","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"taniatsq"},"content":" Scanner user \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"taniatsq"},"content":" System.out.println(\"Hi babyyy! It\u0027s your EUEU!!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"taniatsq"},"content":" System.out.println(\"What are you doing today??\");","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"taniatsq"},"content":" Task echo \u003d new Task (user.nextLine());","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"taniatsq"},"content":" ArrayList\u003cTask\u003e tasklist \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"taniatsq"},"content":" while (!echo.getTask().equals(\"bye\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"taniatsq"},"content":" if (echo.getTask().equals(\"list\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"taniatsq"},"content":" System.out.println(\" All tasks:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"taniatsq"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"taniatsq"},"content":" Scanner s \u003d new Scanner(f);","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"taniatsq"},"content":" while (s.hasNext()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"taniatsq"},"content":" System.out.println(s.nextLine());","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"taniatsq"},"content":" System.out.println();","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"taniatsq"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"taniatsq"},"content":" System.out.println(\"file not found! try again xx\");","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"taniatsq"},"content":" System.out.println(\" Current tasks: \");","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"taniatsq"},"content":" for (int i \u003d 0; i \u003c tasklist.size(); i++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"taniatsq"},"content":" int j \u003d i + 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"taniatsq"},"content":" System.out.println(\" \" + j + \". \" + tasklist.get(i).getCat()","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"taniatsq"},"content":" + tasklist.get(i).marked() + \" \"","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"taniatsq"},"content":" + tasklist.get(i).getTask() + tasklist.get(i).getDetails());","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"taniatsq"},"content":" } else if (echo.getTask().startsWith(\"mark\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"taniatsq"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"taniatsq"},"content":" String str \u003d echo.getTask().substring(5);","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"taniatsq"},"content":" int number \u003d Integer.parseInt(str) - 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"taniatsq"},"content":" String name \u003d tasklist.get(number).getTask();","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"taniatsq"},"content":" tasklist.get(number).mark();","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"taniatsq"},"content":" System.out.println(echo.mark(number, name, tasklist.get(number)));","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"taniatsq"},"content":" } catch (StringIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"taniatsq"},"content":" System.out.println(\"Enter task to mark done: e.g. mark 1\");","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"taniatsq"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"taniatsq"},"content":" System.out.println(\"Enter task to mark done: e.g. mark 1\");","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"taniatsq"},"content":" } else if (echo.getTask().startsWith(\"unmark\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"taniatsq"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"taniatsq"},"content":" String str \u003d echo.getTask().substring(7);","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"taniatsq"},"content":" int number \u003d Integer.parseInt(str) - 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"taniatsq"},"content":" String name \u003d tasklist.get(number).getTask();","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"taniatsq"},"content":" tasklist.get(number).unmark();","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"taniatsq"},"content":" System.out.println(echo.unmark(number, name, tasklist.get(number)));","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"taniatsq"},"content":" } catch (StringIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"taniatsq"},"content":" System.out.println(\"Enter task to unmark: e.g. unmark 1\");","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"taniatsq"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"taniatsq"},"content":" System.out.println(\"Enter task to mark done: e.g. mark 1\");","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"taniatsq"},"content":" } else if (echo.getTask().startsWith(\"delete\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"taniatsq"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"taniatsq"},"content":" String str \u003d echo.getTask().substring(7);","lastModifiedDate":"2024-01-25"},{"lineNumber":68,"author":{"gitId":"taniatsq"},"content":" int number \u003d Integer.parseInt(str) - 1;","lastModifiedDate":"2024-01-25"},{"lineNumber":69,"author":{"gitId":"taniatsq"},"content":" Task name \u003d tasklist.get(number);","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"taniatsq"},"content":" tasklist.remove(number);","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"taniatsq"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"taniatsq"},"content":" FileWriter fw \u003d new FileWriter(\"data/EUEU.txt\", false);","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"taniatsq"},"content":" fw.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"taniatsq"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"taniatsq"},"content":" System.out.println(\"file not found\");","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"taniatsq"},"content":" System.out.println(echo.delete(name));","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"taniatsq"},"content":" System.out.println(\"Now you have \" + tasklist.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":79,"author":{"gitId":"taniatsq"},"content":" } catch (StringIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":80,"author":{"gitId":"taniatsq"},"content":" System.out.println(\"Enter task to delete: e.g. delete 1\");","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"taniatsq"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":82,"author":{"gitId":"taniatsq"},"content":" System.out.println(\"Enter task to delete: e.g. delete 1\");","lastModifiedDate":"2024-01-25"},{"lineNumber":83,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":84,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":85,"author":{"gitId":"taniatsq"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":86,"author":{"gitId":"taniatsq"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":87,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":88,"author":{"gitId":"taniatsq"},"content":" if (echo.getTask().startsWith(\"todo\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":89,"author":{"gitId":"taniatsq"},"content":" String str \u003d echo.getTask().substring(5);","lastModifiedDate":"2024-01-24"},{"lineNumber":90,"author":{"gitId":"taniatsq"},"content":" Todo todo \u003d new Todo(str);","lastModifiedDate":"2024-01-24"},{"lineNumber":91,"author":{"gitId":"taniatsq"},"content":" tasklist.add(todo);","lastModifiedDate":"2024-01-24"},{"lineNumber":92,"author":{"gitId":"taniatsq"},"content":" System.out.println(todo.addTodo());","lastModifiedDate":"2024-01-24"},{"lineNumber":93,"author":{"gitId":"taniatsq"},"content":" System.out.println(\"Now you have \" + tasklist.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":94,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":95,"author":{"gitId":"taniatsq"},"content":" } else if (echo.getTask().startsWith(\"deadline\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":96,"author":{"gitId":"taniatsq"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":97,"author":{"gitId":"taniatsq"},"content":" String str \u003d echo.getTask().substring(9);","lastModifiedDate":"2024-01-24"},{"lineNumber":98,"author":{"gitId":"taniatsq"},"content":" String[] arr \u003d str.split(\"/\");","lastModifiedDate":"2024-01-24"},{"lineNumber":99,"author":{"gitId":"taniatsq"},"content":" String task \u003d arr[0];","lastModifiedDate":"2024-01-24"},{"lineNumber":100,"author":{"gitId":"taniatsq"},"content":" String ddl \u003d arr[1].substring(3);","lastModifiedDate":"2024-01-24"},{"lineNumber":101,"author":{"gitId":"taniatsq"},"content":" Deadline deadline \u003d new Deadline(ddl, task);","lastModifiedDate":"2024-01-24"},{"lineNumber":102,"author":{"gitId":"taniatsq"},"content":" tasklist.add(deadline);","lastModifiedDate":"2024-01-24"},{"lineNumber":103,"author":{"gitId":"taniatsq"},"content":" System.out.println(deadline.addDeadline());","lastModifiedDate":"2024-01-24"},{"lineNumber":104,"author":{"gitId":"taniatsq"},"content":" System.out.println(\"Now you have \" + tasklist.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":105,"author":{"gitId":"taniatsq"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":106,"author":{"gitId":"taniatsq"},"content":" System.out.println(\"Let me know your deadlines babe: e.g. deadline \u003cdeadline\u003e /by \u003cddl\u003e\");","lastModifiedDate":"2024-01-25"},{"lineNumber":107,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":108,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":109,"author":{"gitId":"taniatsq"},"content":" } else if (echo.getTask().startsWith(\"event\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":110,"author":{"gitId":"taniatsq"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":111,"author":{"gitId":"taniatsq"},"content":" String str \u003d echo.getTask().substring(6);","lastModifiedDate":"2024-01-24"},{"lineNumber":112,"author":{"gitId":"taniatsq"},"content":" String[] arr \u003d str.split(\"/\");","lastModifiedDate":"2024-01-24"},{"lineNumber":113,"author":{"gitId":"taniatsq"},"content":" String task \u003d arr[0];","lastModifiedDate":"2024-01-24"},{"lineNumber":114,"author":{"gitId":"taniatsq"},"content":" String start \u003d arr[1].substring(5);","lastModifiedDate":"2024-01-24"},{"lineNumber":115,"author":{"gitId":"taniatsq"},"content":" String end \u003d arr[2].substring(3);","lastModifiedDate":"2024-01-24"},{"lineNumber":116,"author":{"gitId":"taniatsq"},"content":" Event event \u003d new Event(start, end, task);","lastModifiedDate":"2024-01-24"},{"lineNumber":117,"author":{"gitId":"taniatsq"},"content":" tasklist.add(event);","lastModifiedDate":"2024-01-24"},{"lineNumber":118,"author":{"gitId":"taniatsq"},"content":" System.out.println(event.addEvent());","lastModifiedDate":"2024-01-24"},{"lineNumber":119,"author":{"gitId":"taniatsq"},"content":" System.out.println(\"Now you have \" + tasklist.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":120,"author":{"gitId":"taniatsq"},"content":" } catch(ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":121,"author":{"gitId":"taniatsq"},"content":" System.out.println(\"Let me know when this event is bb: e.g. event \u003cevent\u003e /from \u003cwhen\u003e/to \u003cwhen\u003e\");","lastModifiedDate":"2024-01-25"},{"lineNumber":122,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":123,"author":{"gitId":"taniatsq"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":124,"author":{"gitId":"taniatsq"},"content":" System.out.println(\"Baby, what are you saying? Tell me what your TODOs, DEADLINEs and EVENTs are!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":125,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":126,"author":{"gitId":"taniatsq"},"content":" } catch (StringIndexOutOfBoundsException e){","lastModifiedDate":"2024-01-25"},{"lineNumber":127,"author":{"gitId":"taniatsq"},"content":" System.out.println(\"ENTER INSTRUCTION\");","lastModifiedDate":"2024-01-25"},{"lineNumber":128,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":129,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":130,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":131,"author":{"gitId":"taniatsq"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":132,"author":{"gitId":"taniatsq"},"content":" echo \u003d new Task(user.nextLine());","lastModifiedDate":"2024-01-24"},{"lineNumber":133,"author":{"gitId":"taniatsq"},"content":" } catch (NoSuchElementException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":134,"author":{"gitId":"taniatsq"},"content":" System.out.println(\"Say something I\u0027m giving up on you \");","lastModifiedDate":"2024-01-25"},{"lineNumber":135,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":136,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":137,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":138,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":139,"author":{"gitId":"taniatsq"},"content":" for (int i \u003d 0; i \u003c tasklist.size(); i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"taniatsq"},"content":" tasklist.get(i).writeToFile(f);","lastModifiedDate":"2024-01-30"},{"lineNumber":141,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":143,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":144,"author":{"gitId":"taniatsq"},"content":" System.out.println(\" byeee love uu ttyl ok!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":145,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":146,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":148,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"taniatsq":144,"-":4}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"taniatsq"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"taniatsq"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"taniatsq"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"taniatsq"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"taniatsq"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"taniatsq"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"taniatsq"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"taniatsq"},"content":" private String start;","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"taniatsq"},"content":" private String end;","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"taniatsq"},"content":" public Event(String start, String end, String task) {","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"taniatsq"},"content":" super(task);","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"taniatsq"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"taniatsq"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"taniatsq"},"content":" public String isEvent() {","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"taniatsq"},"content":" return \"[E]\";","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"taniatsq"},"content":" public String getEvent() {","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"taniatsq"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"taniatsq"},"content":" LocalDate startDate \u003d LocalDate.parse(start);","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"taniatsq"},"content":" LocalDate endDate \u003d LocalDate.parse(end);","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"taniatsq"},"content":" return (\"from: \" + startDate.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"))","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"taniatsq"},"content":" + \" to: \" + endDate.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"))","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"taniatsq"},"content":" + \")\");","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"taniatsq"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"taniatsq"},"content":" return \"(from: \" + start + \" to: \" + end + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"taniatsq"},"content":" public String addEvent() {","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"taniatsq"},"content":" return \"Got it. I\u0027ve added this task:\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"taniatsq"},"content":" + \" \" + this.isEvent() + this.marked() + \" \"","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"taniatsq"},"content":" + this.getTask() + this.getEvent();","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"taniatsq"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"taniatsq"},"content":" public void writeToFile(File filePath) {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"taniatsq"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"taniatsq"},"content":" FileWriter fw \u003d new FileWriter(filePath.getPath(), true);","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"taniatsq"},"content":" fw.write (this.isEvent() + this.marked() + \" \"","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"taniatsq"},"content":" + this.getTask() + this.getEvent() + \"\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"taniatsq"},"content":" fw.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"taniatsq"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"taniatsq"},"content":" System.out.println(\"file not found! try again xx\");","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"taniatsq"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"taniatsq":50}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"taniatsq"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"taniatsq"},"content":"public class Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"taniatsq"},"content":" private String task;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"taniatsq"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"taniatsq"},"content":" private String start;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"taniatsq"},"content":" private String end;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"taniatsq"},"content":" private String ddl;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"taniatsq"},"content":" private String name;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"taniatsq"},"content":" public Task(String task) {","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"taniatsq"},"content":" this.task \u003d task;","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"taniatsq"},"content":" public void mark() {","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"taniatsq"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"taniatsq"},"content":" //modify the file","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"taniatsq"},"content":" public String mark(int number, String name, Task task) {","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"taniatsq"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"taniatsq"},"content":" return \" Nice! I\u0027ve marked this task as done: \\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"taniatsq"},"content":" + \" \" + task.getCat() + marked() + \" \"","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"taniatsq"},"content":" + name;","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"taniatsq"},"content":" public String delete(Task task) {","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"taniatsq"},"content":" return \" Noted. I\u0027ve removed this task: \\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"taniatsq"},"content":" + \" \" + task.getCat() + task.marked() + \" \"","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"taniatsq"},"content":" + task.getTask();","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"taniatsq"},"content":" public void unmark() {","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"taniatsq"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"taniatsq"},"content":" // modify the file","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"taniatsq"},"content":" public String unmark(int number, String name, Task task) {","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"taniatsq"},"content":" unmark();","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"taniatsq"},"content":" return \" Ok, I\u0027ve marked this task as not done yet: \\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"taniatsq"},"content":" + \" \" + task.getCat() + marked() + \" \"","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"taniatsq"},"content":" + name;","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"taniatsq"},"content":" public String marked() {","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"taniatsq"},"content":" if (isDone) {","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"taniatsq"},"content":" return \"[X]\";","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"taniatsq"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"taniatsq"},"content":" return \"[ ]\";","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"taniatsq"},"content":" public String getTask() {","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"taniatsq"},"content":" return task;","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"taniatsq"},"content":" public String getCat() {","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"taniatsq"},"content":" if (this instanceof Todo) {","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"taniatsq"},"content":" return \"[T]\";","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"taniatsq"},"content":" } else if (this instanceof Deadline) {","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"taniatsq"},"content":" return \"[D]\";","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"taniatsq"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"taniatsq"},"content":" return \"[E]\";","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"taniatsq"},"content":" public String getDetails() {","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"taniatsq"},"content":" if (this instanceof Deadline) {","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"taniatsq"},"content":" return ((Deadline) this).getDeadline();","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"taniatsq"},"content":" } else if (this instanceof Event) {","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"taniatsq"},"content":" return ((Event) this).getEvent();","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"taniatsq"},"content":" return \"\";","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":73,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"taniatsq"},"content":" public void writeToFile(File filePath) {","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"taniatsq"},"content":" if (this instanceof Todo) {","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"taniatsq"},"content":" ((Todo) this).writeToFile(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"taniatsq"},"content":" } else if (this instanceof Deadline) {","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"taniatsq"},"content":" ((Deadline) this).writeToFile(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"taniatsq"},"content":" } else if (this instanceof Event) {","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"taniatsq"},"content":" ((Event) this).writeToFile(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":85,"author":{"gitId":"taniatsq"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"taniatsq":85}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"taniatsq"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"taniatsq"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"taniatsq"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"taniatsq"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"taniatsq"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"taniatsq"},"content":" public Todo(String task) {","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"taniatsq"},"content":" super(task);","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"taniatsq"},"content":" public String isTodo() {","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"taniatsq"},"content":" return \"[T]\";","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"taniatsq"},"content":" public String addTodo() {","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"taniatsq"},"content":" return \"Got it. I\u0027ve added this task: \\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"taniatsq"},"content":" + \" \" + this.isTodo() + this.marked() + \" \" + this.getTask();","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"taniatsq"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"taniatsq"},"content":" public void writeToFile(File filePath) {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"taniatsq"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"taniatsq"},"content":" FileWriter fw \u003d new FileWriter(filePath.getPath(), true);","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"taniatsq"},"content":" fw.write(this.isTodo() + this.marked() + \" \" + this.getTask() + \"\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"taniatsq"},"content":" fw.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"taniatsq"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"taniatsq"},"content":" System.out.println(\"file not found! try again bb\");","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"taniatsq"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"taniatsq"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"taniatsq"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"taniatsq":33}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"taniatsq"},"content":"todo borrow book","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"taniatsq"},"content":"bye","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"taniatsq":2}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"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":"taniatsq"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"taniatsq"},"content":"diff -w ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"taniatsq":2,"-":37}}] diff --git a/taniatsq_ip_master/commits.json b/taniatsq_ip_master/commits.json index c0525bf5..4a6f5932 100644 --- a/taniatsq_ip_master/commits.json +++ b/taniatsq_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"taniatsq":[{"date":"2024-01-24","commitResults":[{"hash":"58976d76689b8eaee23820847afb9ddcab71a131","isMergeCommit":false,"messageTitle":"Add level 0","messageBody":"","tags":["level-0"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":6}}},{"hash":"cc2d9ed3277dc6ad337c3af00d26f409882becd1","isMergeCommit":false,"messageTitle":"level 1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":3}}},{"hash":"84b6aeab8fdf7d46d1c4206cbf39acf3e8da0eaa","isMergeCommit":false,"messageTitle":"level 2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":8}}},{"hash":"8aac8e738252f9aba62eda4ac0b549cadf064980","isMergeCommit":false,"messageTitle":"level 3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":61,"deletions":9}}},{"hash":"305577b4c192ab63aa7869dd0898ce93b10b05dd","isMergeCommit":false,"messageTitle":"level 4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":159,"deletions":22}}}]},{"date":"2024-01-25","commitResults":[{"hash":"1eb2f3081e405b0d60f0b6327e638ea77aec1a83","isMergeCommit":false,"messageTitle":"level 6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":83,"deletions":42}}},{"hash":"3e035f4c87e23a3976b439228a7e2f1d019d2aff","isMergeCommit":false,"messageTitle":"level 6","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":83,"deletions":71}}},{"hash":"200c24c2cd24c2f370163d6790022e01b7994c20","isMergeCommit":false,"messageTitle":"TextUITesting","messageBody":"","tags":["TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":7,"deletions":1},"bat":{"insertions":0,"deletions":21},"sh":{"insertions":3,"deletions":2}}},{"hash":"84a661ad4326047763cb06905ddcb02cded79d7d","isMergeCommit":false,"messageTitle":"level 6","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"taniatsq":{"java":273,"md":0,"fxml":0,"sh":2,"bat":0,"gradle":0,"txt":2}},"authorContributionVariance":{"taniatsq":19687.63},"authorDisplayNameMap":{"taniatsq":"CS2103T-T13-1 TANI..U QI"}} +{"authorDailyContributionsMap":{"taniatsq":[{"date":"2024-01-24","commitResults":[{"hash":"58976d76689b8eaee23820847afb9ddcab71a131","isMergeCommit":false,"messageTitle":"Add level 0","messageBody":"","tags":["level-0"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":6}}},{"hash":"cc2d9ed3277dc6ad337c3af00d26f409882becd1","isMergeCommit":false,"messageTitle":"level 1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":3}}},{"hash":"84b6aeab8fdf7d46d1c4206cbf39acf3e8da0eaa","isMergeCommit":false,"messageTitle":"level 2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":8}}},{"hash":"8aac8e738252f9aba62eda4ac0b549cadf064980","isMergeCommit":false,"messageTitle":"level 3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":61,"deletions":9}}},{"hash":"305577b4c192ab63aa7869dd0898ce93b10b05dd","isMergeCommit":false,"messageTitle":"level 4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":159,"deletions":22}}}]},{"date":"2024-01-25","commitResults":[{"hash":"1eb2f3081e405b0d60f0b6327e638ea77aec1a83","isMergeCommit":false,"messageTitle":"level 6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":83,"deletions":42}}},{"hash":"3e035f4c87e23a3976b439228a7e2f1d019d2aff","isMergeCommit":false,"messageTitle":"level 6","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":83,"deletions":71}}},{"hash":"200c24c2cd24c2f370163d6790022e01b7994c20","isMergeCommit":false,"messageTitle":"TextUITesting","messageBody":"","tags":["TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":7,"deletions":1},"bat":{"insertions":0,"deletions":21},"sh":{"insertions":3,"deletions":2}}},{"hash":"84a661ad4326047763cb06905ddcb02cded79d7d","isMergeCommit":false,"messageTitle":"level 6","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}}]},{"date":"2024-01-30","commitResults":[{"hash":"507b716062cea83c0b249c9760f651e091c30b44","isMergeCommit":false,"messageTitle":"Level 7","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":109,"deletions":24}}},{"hash":"cbec25870a2aea9b6c6652a4a487a66c1708da23","isMergeCommit":false,"messageTitle":"Level 8","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":13}}}]}]},"authorFileTypeContributionMap":{"taniatsq":{"java":361,"md":0,"fxml":0,"sh":2,"bat":0,"gradle":0,"txt":2}},"authorContributionVariance":{"taniatsq":14004.8545},"authorDisplayNameMap":{"taniatsq":"CS2103T-T13-1 TANI..U QI"}} diff --git a/vnnamng_ip_master/authorship.json b/vnnamng_ip_master/authorship.json index 79812371..dd2ca5ee 100644 --- a/vnnamng_ip_master/authorship.json +++ b/vnnamng_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"import duke.command.Command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"import duke.exception.ChatBotCommandException;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"import duke.exception.ChatBotParameterException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":"import duke.parser.Parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"import duke.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"import duke.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":" private final Storage storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":" private final TaskList tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":" private final Ui ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":" public Duke(String filePath) {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"vnnamng"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"vnnamng"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"vnnamng"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"vnnamng"},"content":" storage.loadTasksFromFileToTaskList(tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"vnnamng"},"content":" public void run() {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"vnnamng"},"content":" ui.showWelcome();","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"vnnamng"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"vnnamng"},"content":" while (!isExit) {","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"vnnamng"},"content":" try {","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"vnnamng"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"vnnamng"},"content":" ui.showLine(); // show the divider line (\"_______\")","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"vnnamng"},"content":" Command c \u003d Parser.parseCommand(fullCommand);","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"vnnamng"},"content":" c.execute(storage, ui, tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"vnnamng"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"vnnamng"},"content":" } catch (ChatBotParameterException | ChatBotCommandException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"vnnamng"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"vnnamng"},"content":" } finally {","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"vnnamng"},"content":" ui.showLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":39,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":40,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":41,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"vnnamng"},"content":" new Duke(\"tasks.txt\").run();","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":45,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":46,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"vnnamng":43,"-":4}},{"path":"src/main/java/duke/command/AddCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"import duke.exception.ChatBotParameterException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"import duke.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"import duke.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":"public class AddCommand extends Command{","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":" public AddCommand(String keyword, String parameters) {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":" super(keyword, parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":" * @param storage","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":" * @param ui","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"vnnamng"},"content":" * @param taskList","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"vnnamng"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"vnnamng"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"vnnamng"},"content":" public void execute(Storage storage, Ui ui, TaskList taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"vnnamng"},"content":" Task task \u003d null;","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"vnnamng"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"vnnamng"},"content":" switch (this.keyword) {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"vnnamng"},"content":" case \"todo\":","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"vnnamng"},"content":" task \u003d taskList.addToDo(this.parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"vnnamng"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"vnnamng"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"vnnamng"},"content":" task \u003d taskList.addDeadline(this.parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"vnnamng"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"vnnamng"},"content":" case \"event\":","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"vnnamng"},"content":" task \u003d taskList.addEvent(this.parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"vnnamng"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"vnnamng"},"content":" default:","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"vnnamng"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"vnnamng"},"content":" } catch (ChatBotParameterException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"vnnamng"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"vnnamng"},"content":" return;","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"vnnamng"},"content":" ui.showAddedTask(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"vnnamng"},"content":" ui.showTaskListStatus(taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"vnnamng":46}},{"path":"src/main/java/duke/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"import duke.exception.ChatBotParameterException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":"import duke.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"import duke.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":"public abstract class Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":" protected final String keyword;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":" protected final String parameters;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":" protected Command(String keyword, String parameters) {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":" this.keyword \u003d keyword;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":" this.parameters \u003d parameters;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"vnnamng"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"vnnamng"},"content":" abstract public void execute(Storage storage, Ui ui, TaskList taskList) throws ChatBotParameterException;","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"vnnamng":22}},{"path":"src/main/java/duke/command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"import duke.exception.ChatBotParameterException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"import duke.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"import duke.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":" public DeleteCommand(String keyword, String parameters) {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":" super(keyword, parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":" * @param storage","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":" * @param ui","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":" * @param taskList","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"vnnamng"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"vnnamng"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"vnnamng"},"content":" public void execute(Storage storage, Ui ui, TaskList taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"vnnamng"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"vnnamng"},"content":" Task task \u003d taskList.deleteTask(parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"vnnamng"},"content":" ui.showDeletedTask(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"vnnamng"},"content":" ui.showTaskListStatus(taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"vnnamng"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"vnnamng"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"vnnamng":29}},{"path":"src/main/java/duke/command/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"import duke.exception.ChatBotParameterException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":"import duke.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"import duke.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":" public ExitCommand(String keyword, String parameters) {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":" super(keyword, parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":" * @return true","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"vnnamng"},"content":" return true;","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"vnnamng"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"vnnamng"},"content":" * @param storage","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"vnnamng"},"content":" * @param ui","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"vnnamng"},"content":" * @param taskList","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"vnnamng"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"vnnamng"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"vnnamng"},"content":" public void execute(Storage storage, Ui ui, TaskList taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"vnnamng"},"content":" storage.saveTaskListToFile(taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"vnnamng"},"content":" ui.showFarewell();","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"vnnamng":33}},{"path":"src/main/java/duke/command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"import duke.exception.ChatBotParameterException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":"import duke.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"import duke.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":" public ListCommand(String keyword, String parameters) {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":" super(keyword, parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":" * @param storage","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":" * @param ui","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":" * @param taskList","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"vnnamng"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"vnnamng"},"content":" public void execute(Storage storage, Ui ui, TaskList taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"vnnamng"},"content":" ui.showTaskList(taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"vnnamng":22}},{"path":"src/main/java/duke/command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"import duke.exception.ChatBotParameterException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"import duke.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"import duke.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":" public MarkCommand(String keyword, String parameters) {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":" super(keyword, parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":" * @param storage","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":" * @param ui","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":" * @param taskList","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"vnnamng"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"vnnamng"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"vnnamng"},"content":" public void execute(Storage storage, Ui ui, TaskList taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"vnnamng"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"vnnamng"},"content":" Task task \u003d taskList.markTaskAsDone(parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"vnnamng"},"content":" ui.showMarkedTask(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"vnnamng"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"vnnamng"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"vnnamng":28}},{"path":"src/main/java/duke/command/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":"import duke.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"import duke.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":" public UnmarkCommand(String keyword, String parameters) {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":" super(keyword, parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":" * @param storage","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":" * @param ui","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":" * @param taskList","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"vnnamng"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"vnnamng"},"content":" public void execute(Storage storage, Ui ui, TaskList taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"vnnamng"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"vnnamng"},"content":" Task task \u003d taskList.markTaskAsUndone(parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"vnnamng"},"content":" ui.showUnmarkedTask(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"vnnamng"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"vnnamng"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"vnnamng":27}},{"path":"src/main/java/duke/exception/ChatBotCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.exception;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"public class ChatBotCommandException extends Exception{","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":" public ChatBotCommandException(String message) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":" super(message);","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"vnnamng":8}},{"path":"src/main/java/duke/exception/ChatBotParameterException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.exception;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"public class ChatBotParameterException extends Exception{","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":" public ChatBotParameterException(String message) {","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":" super(message);","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"vnnamng":7}},{"path":"src/main/java/duke/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"import duke.command.*;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":"import duke.exception.ChatBotCommandException;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":"import duke.exception.ChatBotParameterException;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":"public class Parser {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":" public static String[] parseSavedTask(String taskString) {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":" return taskString.split(\" \\\\| \");","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":" public static Command parseCommand(String command) throws ChatBotCommandException {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":" if (command.isEmpty()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"vnnamng"},"content":" throw new ChatBotCommandException(\"Empty command.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"vnnamng"},"content":" String[] splitCommandArr \u003d command.split(\"\\\\s+\", 2);","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"vnnamng"},"content":" String keyword \u003d splitCommandArr[0];","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"vnnamng"},"content":" String parameters;","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"vnnamng"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"vnnamng"},"content":" parameters \u003d splitCommandArr[1];","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"vnnamng"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"vnnamng"},"content":" parameters \u003d \"\";","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"vnnamng"},"content":" switch (keyword) {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"vnnamng"},"content":" case \"todo\":","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"vnnamng"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"vnnamng"},"content":" case \"event\":","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"vnnamng"},"content":" return new AddCommand(keyword, parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"vnnamng"},"content":" case \"bye\":","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"vnnamng"},"content":" return new ExitCommand(keyword, parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"vnnamng"},"content":" case \"list\":","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"vnnamng"},"content":" return new ListCommand(keyword, parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"vnnamng"},"content":" case \"mark\":","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"vnnamng"},"content":" return new MarkCommand(keyword, parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"vnnamng"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"vnnamng"},"content":" return new UnmarkCommand(keyword, parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"vnnamng"},"content":" case \"delete\":","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"vnnamng"},"content":" return new DeleteCommand(keyword, parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"vnnamng"},"content":" default:","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"vnnamng"},"content":" throw new ChatBotCommandException(\"Invalid command.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"vnnamng"},"content":" public static String[] parseToDo(String parameters) throws ChatBotParameterException {","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"vnnamng"},"content":" if (parameters.isEmpty()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"vnnamng"},"content":" throw new ChatBotParameterException(\"Missing description for duke.task.ToDo \\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"vnnamng"},"content":" \"try: todo \u003ctodo_name\u003e\");","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"vnnamng"},"content":" return new String[]{parameters};","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"vnnamng"},"content":" public static String[] parseDeadline(String parameters) throws ChatBotParameterException {","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"vnnamng"},"content":" if (parameters.isEmpty()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"vnnamng"},"content":" throw new ChatBotParameterException(\"There is no description and by for duke.task.Deadline \\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"vnnamng"},"content":" \"try: deadline \u003cdeadline_name\u003e /by \u003cby\u003e\");","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"vnnamng"},"content":" String[] parametersArr \u003d parameters.split(\" /by \");","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"vnnamng"},"content":" if (parametersArr.length \u003d\u003d 1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"vnnamng"},"content":" throw new ChatBotParameterException(\"Missing description or by for duke.task.Deadline \\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"vnnamng"},"content":" \"try: deadline \u003cdeadline_name\u003e /by \u003cby\u003e\");","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"vnnamng"},"content":" return parametersArr;","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"vnnamng"},"content":" public static String[] parseEvent(String parameters) throws ChatBotParameterException {","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"vnnamng"},"content":" if (parameters.isEmpty()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"vnnamng"},"content":" throw new ChatBotParameterException(\"There is no description and from and to for duke.task.Event \\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"vnnamng"},"content":" \"try: event \u003cevent_name\u003e /by \u003cfrom\u003e /to \u003cto\u003e\");","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"vnnamng"},"content":" String[] parametersArr \u003d parameters.split(\" /from | /to \");","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"vnnamng"},"content":" if (parametersArr.length \u003c 3) {","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"vnnamng"},"content":" throw new ChatBotParameterException(\"Missing description and/or from and/or to for duke.task.Event \\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"vnnamng"},"content":" \"try: event \u003cevent_name\u003e /by \u003cfrom\u003e /to \u003cto\u003e\");","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"vnnamng"},"content":" return parametersArr;","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"vnnamng"},"content":" public static LocalDateTime parseDateTime(String dateTime) {","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"vnnamng"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"vnnamng"},"content":" return LocalDateTime.parse(dateTime, DateTimeFormatter.ofPattern(\"d/M/yyyy Hmm\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"vnnamng"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"vnnamng"},"content":" return LocalDateTime.parse(dateTime);","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"vnnamng"},"content":" public static int parseInteger(String parameters) throws ChatBotParameterException {","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"vnnamng"},"content":" if (parameters.isEmpty()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"vnnamng"},"content":" throw new ChatBotParameterException(\"Missing task number \\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"vnnamng"},"content":" \"try: mark/unmark/delete \u003ctask_number\u003e\");","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"vnnamng"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"vnnamng"},"content":" return Integer.parseInt(parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"vnnamng"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"vnnamng"},"content":" throw new ChatBotParameterException(\"Invalid task number \\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"vnnamng"},"content":" \"try: mark/unmark/delete \u003ctask_number\u003e\");","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"vnnamng":103}},{"path":"src/main/java/duke/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"import duke.parser.Parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":"import duke.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":"import java.nio.file.StandardOpenOption;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":"import java.util.List;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":"public class Storage {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":" private final String fileName;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":" private static final String DATA_FOLDER \u003d \"data\";","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"vnnamng"},"content":" public Storage(String fileName) {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"vnnamng"},"content":" this.fileName \u003d fileName;","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"vnnamng"},"content":" public StringBuilder createSaveDataFromTaskList(TaskList tasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"vnnamng"},"content":" StringBuilder saveData \u003d new StringBuilder();","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"vnnamng"},"content":" for (Task task: tasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"vnnamng"},"content":" saveData.append(task.createSaveData());","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"vnnamng"},"content":" return saveData;","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"vnnamng"},"content":" public void saveTaskListToFile(TaskList tasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"vnnamng"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"vnnamng"},"content":" Files.createDirectories(Paths.get(DATA_FOLDER));","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"vnnamng"},"content":" Files.writeString(this.getFileLocationPath(), this.createSaveDataFromTaskList(tasks),","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"vnnamng"},"content":" StandardOpenOption.CREATE);","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"vnnamng"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"vnnamng"},"content":" System.out.println(\"Folder Does not Exists\");","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"vnnamng"},"content":" public Path getFileLocationPath() {","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"vnnamng"},"content":" return Paths.get(DATA_FOLDER, this.fileName);","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"vnnamng"},"content":" public void loadTasksFromFileToTaskList(TaskList taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"vnnamng"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"vnnamng"},"content":" Path filePath \u003d this.getFileLocationPath();","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"vnnamng"},"content":" if (!Files.exists(filePath)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"vnnamng"},"content":" return;","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"vnnamng"},"content":" List\u003cString\u003e tasks \u003d Files.readAllLines(filePath);","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"vnnamng"},"content":" for (String taskString : tasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"vnnamng"},"content":" String[] parameters \u003d Parser.parseSavedTask(taskString);","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"vnnamng"},"content":" switch (parameters[0]) {","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"vnnamng"},"content":" case (\"T\"):","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"vnnamng"},"content":" taskList.addToDo(parameters[2], parameters[1].equals(\"1\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"vnnamng"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"vnnamng"},"content":" case (\"D\"):","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"vnnamng"},"content":" taskList.addDeadline(parameters[2], parameters[3], parameters[1].equals(\"1\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"vnnamng"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"vnnamng"},"content":" case (\"E\"):","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"vnnamng"},"content":" taskList.addEvent(parameters[2], parameters[3], parameters[4], parameters[1].equals(\"1\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"vnnamng"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"vnnamng"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"vnnamng"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"vnnamng":73}},{"path":"src/main/java/duke/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.task;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":" protected LocalDateTime by;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":" public Deadline(String description, LocalDateTime by, boolean isDone) {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":" public String getFormattedBy() {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":" return this.by.format(DateTimeFormatter.ofPattern(\"MMM d yyyy hh:mm a\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"vnnamng"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"vnnamng"},"content":" public String createSaveData() {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"vnnamng"},"content":" return String.format(\"D | %d | %s | %s\\n\", (super.isDone() ? 1 : 0), this.description, this.by);","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"vnnamng"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"vnnamng"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"vnnamng"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.getFormattedBy() + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"vnnamng":27}},{"path":"src/main/java/duke/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.task;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"public class Event extends Task{","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":" protected String from;","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":" protected String to;","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":" public Event(String description, String from, String to, boolean isDone) {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":" public String createSaveData() {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":" return String.format(\"E | %d | %s | %s | %s\\n\", (super.isDone() ? 1 : 0), this.description, this.from, this.to);","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"vnnamng"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"vnnamng"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"vnnamng"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.from + \" to: \" + this.to + \")\";","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"vnnamng":22}},{"path":"src/main/java/duke/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.task;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"public class Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":" protected String description;","lastModifiedDate":"2024-01-21"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":" public Task(String description, boolean isDone) {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-21"},{"lineNumber":18,"author":{"gitId":"vnnamng"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2024-01-21"},{"lineNumber":19,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":20,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":21,"author":{"gitId":"vnnamng"},"content":" public boolean isDone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"vnnamng"},"content":" return isDone;","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"vnnamng"},"content":" public String createSaveData() {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"vnnamng"},"content":" return String.format(\"T | %d | %s\\n\", ((this.isDone) ? 1 : 0), this.description);","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"vnnamng"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":30,"author":{"gitId":"vnnamng"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":31,"author":{"gitId":"vnnamng"},"content":" return \"[\" + this.getStatusIcon() + \"]\" + \" \" + this.description;","lastModifiedDate":"2024-01-21"},{"lineNumber":32,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":33,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":34,"author":{"gitId":"vnnamng"},"content":" public void markDone() {","lastModifiedDate":"2024-01-21"},{"lineNumber":35,"author":{"gitId":"vnnamng"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-21"},{"lineNumber":36,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":37,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":38,"author":{"gitId":"vnnamng"},"content":" public void markUndone() {","lastModifiedDate":"2024-01-21"},{"lineNumber":39,"author":{"gitId":"vnnamng"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-21"},{"lineNumber":40,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":41,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"vnnamng":41}},{"path":"src/main/java/duke/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.task;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"import duke.exception.ChatBotParameterException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":"import duke.parser.Parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":"import java.util.Iterator;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":"import java.util.List;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":"public class TaskList implements Iterable\u003cTask\u003e {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":" protected List\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":" public TaskList() {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"vnnamng"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"vnnamng"},"content":" this.tasks.add(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"vnnamng"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"vnnamng"},"content":" * Returns an iterator over elements of type {@code duke.task.Task}.","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"vnnamng"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"vnnamng"},"content":" * @return an Iterator.","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"vnnamng"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"vnnamng"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"vnnamng"},"content":" public Iterator\u003cTask\u003e iterator() {","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"vnnamng"},"content":" return tasks.iterator();","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"vnnamng"},"content":" public Task addToDo(String description, boolean isDone) {","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"vnnamng"},"content":" ToDo toDo \u003d new ToDo(description, isDone);","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"vnnamng"},"content":" this.addTask(toDo);","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"vnnamng"},"content":" return toDo;","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"vnnamng"},"content":" public Task addToDo(String parameters) throws ChatBotParameterException {","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"vnnamng"},"content":" String[] parametersArr \u003d Parser.parseToDo(parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"vnnamng"},"content":" return this.addToDo(parametersArr[0], false);","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"vnnamng"},"content":" public Task addDeadline(String description, String by, boolean isDone) {","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"vnnamng"},"content":" LocalDateTime byDateTime \u003d Parser.parseDateTime(by);","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"vnnamng"},"content":" Deadline deadline \u003d new Deadline(description, byDateTime, isDone);","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"vnnamng"},"content":" this.addTask(deadline);","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"vnnamng"},"content":" return deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"vnnamng"},"content":" public Task addDeadline(String parameters) throws ChatBotParameterException {","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"vnnamng"},"content":" String[] parametersArr \u003d Parser.parseDeadline(parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"vnnamng"},"content":" return this.addDeadline(parametersArr[0], parametersArr[1], false);","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"vnnamng"},"content":" public Task addEvent(String parameters) throws ChatBotParameterException {","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"vnnamng"},"content":" String[] parametersArr \u003d Parser.parseEvent(parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"vnnamng"},"content":" return this.addEvent(parametersArr[0], parametersArr[1], parametersArr[2], false);","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"vnnamng"},"content":" public Task addEvent(String description, String from, String to, boolean isDone) {","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"vnnamng"},"content":" Event event \u003d new Event(description, from, to, isDone);","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"vnnamng"},"content":" this.addTask(event);","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"vnnamng"},"content":" return event;","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"vnnamng"},"content":" public int size() {","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"vnnamng"},"content":" return this.tasks.size();","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"vnnamng"},"content":" public Task markTaskAsDone(String parameters) throws ChatBotParameterException {","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"vnnamng"},"content":" int taskNumber \u003d Parser.parseInteger(parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"vnnamng"},"content":" Task taskToBeMarked;","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"vnnamng"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"vnnamng"},"content":" taskToBeMarked \u003d this.tasks.get(taskNumber - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"vnnamng"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"vnnamng"},"content":" throw new ChatBotParameterException(\"The task does not exists in the task list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"vnnamng"},"content":" if (taskToBeMarked.isDone()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"vnnamng"},"content":" throw new ChatBotParameterException(\"This task is already marked done!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"vnnamng"},"content":" taskToBeMarked.markDone();","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"vnnamng"},"content":" return taskToBeMarked;","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"vnnamng"},"content":" public Task markTaskAsUndone(String parameters) throws ChatBotParameterException {","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"vnnamng"},"content":" int taskNumber \u003d Parser.parseInteger(parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"vnnamng"},"content":" Task taskToBeMarked;","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"vnnamng"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"vnnamng"},"content":" taskToBeMarked \u003d this.tasks.get(taskNumber - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"vnnamng"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"vnnamng"},"content":" throw new ChatBotParameterException(\"The task does not exists in the task list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"vnnamng"},"content":" if (!taskToBeMarked.isDone()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"vnnamng"},"content":" throw new ChatBotParameterException(\"This task is already marked undone!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"vnnamng"},"content":" taskToBeMarked.markUndone();","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"vnnamng"},"content":" return taskToBeMarked;","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"vnnamng"},"content":" public Task deleteTask(String parameters) throws ChatBotParameterException {","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"vnnamng"},"content":" int taskNumber \u003d Parser.parseInteger(parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"vnnamng"},"content":" Task taskToBeDeleted;","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"vnnamng"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"vnnamng"},"content":" taskToBeDeleted \u003d this.tasks.remove(taskNumber - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"vnnamng"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"vnnamng"},"content":" throw new ChatBotParameterException(\"The task does not exists in the task list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"vnnamng"},"content":" return taskToBeDeleted;","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"vnnamng":115}},{"path":"src/main/java/duke/task/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.task;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":" public ToDo(String description, boolean isDone) {","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"vnnamng":12}},{"path":"src/main/java/duke/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":"import duke.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"import java.util.List;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":"public class Ui {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":" private static final String LOGO \u003d \" ___ ___ ___ ___ ___ \\n\"+","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":" \" /\\\\ \\\\ /\\\\ \\\\ ___ /\\\\__\\\\ /\\\\ \\\\ /\\\\__\\\\ \\n\"+","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":" \" /::\\\\ \\\\ /::\\\\ \\\\ /\\\\ \\\\ /::| | /::\\\\ \\\\ /::| | \\n\"+","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":" \" /:/\\\\:\\\\ \\\\ /:/\\\\:\\\\ \\\\ \\\\:\\\\ \\\\ /:|:| | /:/\\\\:\\\\ \\\\ /:|:| | \\n\"+","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":" \" /::\\\\~\\\\:\\\\ \\\\ /::\\\\~\\\\:\\\\ \\\\ /::\\\\__\\\\ /:/|:|__|__ /:/ \\\\:\\\\ \\\\ /:/|:| |__ \\n\"+","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":" \" /:/\\\\:\\\\ \\\\:\\\\__\\\\/:/\\\\:\\\\ \\\\:\\\\__\\\\ __/:/\\\\/__//:/ |::::\\\\__\\\\/:/__/ \\\\:\\\\__\\\\/:/ |:| /\\\\__\\\\\\n\"+","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":" \" \\\\/__\\\\:\\\\/:/ /\\\\/__\\\\:\\\\/:/ //\\\\/:/ / \\\\/__/~~/:/ /\\\\:\\\\ \\\\ /:/ /\\\\/__|:|/:/ /\\n\"+","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":" \" \\\\::/ / \\\\::/ / \\\\::/__/ /:/ / \\\\:\\\\ /:/ / |:/:/ / \\n\"+","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"vnnamng"},"content":" \" \\\\/__/ /:/ / \\\\:\\\\__\\\\ /:/ / \\\\:\\\\/:/ / |::/ / \\n\"+","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"vnnamng"},"content":" \" /:/ / \\\\/__/ /:/ / \\\\::/ / /:/ / \\n\"+","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"vnnamng"},"content":" \" \\\\/__/ \\\\/__/ \\\\/__/ \\\\/__/ \\n\";","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"vnnamng"},"content":" private static final List\u003cString\u003e GREETINGS \u003d List.of(","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"vnnamng"},"content":" \"Ah, there you are! Hello! Paimon wondered where you were! This is going to be so much fun, right?\",","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"vnnamng"},"content":" \"Ahoy there! It\u0027s great to see you! Paimon\u0027s hungry!\",","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"vnnamng"},"content":" \"Ah, Paimon missed you! It\u0027s been so long...\",","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"vnnamng"},"content":" \"Ad astra abyssosque, welcome to Paimon\u0027s house!\",","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"vnnamng"},"content":" \"Good morning, Traveler. Ah... what\u0027s it like out today? Paimon wants to hear your story.\"","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"vnnamng"},"content":" );","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"vnnamng"},"content":" private static final List\u003cString\u003e FAREWELLS \u003d List.of(","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"vnnamng"},"content":" \"Farewell, it was fun to meet you! Take care, see you later, and may you find many new treasures\",","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"vnnamng"},"content":" \"Farewell, until we meet again!\",","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"vnnamng"},"content":" \"Safe travels, and take care!\",","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"vnnamng"},"content":" \"Good luck! And don\u0027t spend all your Mora in one place.\",","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"vnnamng"},"content":" \"Adios!\"","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"vnnamng"},"content":" );","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"vnnamng"},"content":" private final Scanner scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"vnnamng"},"content":" public Ui() {","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"vnnamng"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"vnnamng"},"content":" private static final String HORIZONTAL_LINE \u003d","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"vnnamng"},"content":" \"___________________________________________________________________________\";","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"vnnamng"},"content":" public void showLine() {","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"vnnamng"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"vnnamng"},"content":" public void showError(String errorMessage) {","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"vnnamng"},"content":" System.out.println(errorMessage);","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"vnnamng"},"content":" public String readCommand() {","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"vnnamng"},"content":" return scanner.nextLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"vnnamng"},"content":" public void showWelcome() {","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"vnnamng"},"content":" System.out.println(LOGO);","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"vnnamng"},"content":" System.out.println(GREETINGS.get(1));","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"vnnamng"},"content":" public void showFarewell() {","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"vnnamng"},"content":" this.scanner.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"vnnamng"},"content":" System.out.println(FAREWELLS.get(1));","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"vnnamng"},"content":" public void showTaskList(TaskList taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"vnnamng"},"content":" this.showTaskListStatus(taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"vnnamng"},"content":" int count \u003d 1;","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"vnnamng"},"content":" for (Task task : taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"vnnamng"},"content":" System.out.printf(\"%d. %s\\n\", count, task);","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"vnnamng"},"content":" count++;","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"vnnamng"},"content":" public void showAddedTask(Task task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"vnnamng"},"content":" System.out.println(\"Got it. I\u0027ve added this task: \\n\" + task.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"vnnamng"},"content":" public void showTaskListStatus(TaskList taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"vnnamng"},"content":" System.out.printf(\"Now you have %d tasks in the list.%n\", taskList.size());","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"vnnamng"},"content":" public void showMarkedTask(Task task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"vnnamng"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done: \\n\" + task.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"vnnamng"},"content":" public void showUnmarkedTask(Task task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"vnnamng"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet: \\n\" + task.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"vnnamng"},"content":" public void showDeletedTask(Task task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"vnnamng"},"content":" System.out.println(\"Noted. I\u0027ve removed this task: \\n\" + task.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"vnnamng":94}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"random command","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"todo Hello World","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"deadline Goodbye World /by tmr","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":"event Hello and Goodbye World /from now /to next year","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"mark 1","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"mark 1","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":"unmark 1","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":"unmark 1","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":"mark 1","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":"mark 2","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":"unmark 2","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":"mark 3","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":"bye","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"vnnamng":17}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"vnnamng"},"content":"java -classpath ..\\bin Duke \"test-mode\" \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"vnnamng":1,"-":20}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":" rm EXPECTED.TXT","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"vnnamng"},"content":"# run the program, feed commands from input.txt file and redirect the output to the EXPECTED.TXT","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"vnnamng"},"content":"java -classpath ../bin Duke \"test-mode\" \u003c input.txt \u003e EXPECTED.TXT","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"vnnamng"},"content":"dos2unix EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"vnnamng"},"content":"diff EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"vnnamng":5,"-":33}}] +[{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"vnnamng"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"vnnamng":1,"-":41}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"import duke.command.Command;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":"import duke.exception.ChatBotCommandException;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":"import duke.exception.ChatBotParameterException;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"import duke.parser.Parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":"import duke.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":"import duke.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":" private final Storage storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":" private final TaskList tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":" private final Ui ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"vnnamng"},"content":" public Duke(String filePath) {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"vnnamng"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"vnnamng"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"vnnamng"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"vnnamng"},"content":" storage.loadTasksFromFileToTaskList(tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"vnnamng"},"content":" public void run() {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"vnnamng"},"content":" ui.showWelcome();","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"vnnamng"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"vnnamng"},"content":" while (!isExit) {","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"vnnamng"},"content":" try {","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"vnnamng"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"vnnamng"},"content":" ui.showLine(); // show the divider line (\"_______\")","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"vnnamng"},"content":" Command c \u003d Parser.parseCommand(fullCommand);","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"vnnamng"},"content":" c.execute(storage, ui, tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"vnnamng"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"vnnamng"},"content":" } catch (ChatBotParameterException | ChatBotCommandException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"vnnamng"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"vnnamng"},"content":" } finally {","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"vnnamng"},"content":" ui.showLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":42,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":43,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"vnnamng"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"vnnamng"},"content":" new Duke(\"tasks.txt\").run();","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":47,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":48,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"vnnamng":47,"-":2}},{"path":"src/main/java/duke/command/AddCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"import duke.exception.ChatBotParameterException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"import duke.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"import duke.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":"public class AddCommand extends Command{","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":" public AddCommand(String keyword, String parameters) {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":" super(keyword, parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":" * @param storage","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":" * @param ui","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"vnnamng"},"content":" * @param taskList","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"vnnamng"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"vnnamng"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"vnnamng"},"content":" public void execute(Storage storage, Ui ui, TaskList taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"vnnamng"},"content":" Task task \u003d null;","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"vnnamng"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"vnnamng"},"content":" switch (this.keyword) {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"vnnamng"},"content":" case \"todo\":","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"vnnamng"},"content":" task \u003d taskList.addToDo(this.parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"vnnamng"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"vnnamng"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"vnnamng"},"content":" task \u003d taskList.addDeadline(this.parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"vnnamng"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"vnnamng"},"content":" case \"event\":","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"vnnamng"},"content":" task \u003d taskList.addEvent(this.parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"vnnamng"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"vnnamng"},"content":" default:","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"vnnamng"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"vnnamng"},"content":" } catch (ChatBotParameterException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"vnnamng"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"vnnamng"},"content":" return;","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"vnnamng"},"content":" ui.showAddedTask(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"vnnamng"},"content":" ui.showTaskListStatus(taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"vnnamng":46}},{"path":"src/main/java/duke/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"import duke.exception.ChatBotParameterException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":"import duke.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"import duke.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":"public abstract class Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":" protected final String keyword;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":" protected final String parameters;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":" protected Command(String keyword, String parameters) {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":" this.keyword \u003d keyword;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":" this.parameters \u003d parameters;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"vnnamng"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"vnnamng"},"content":" abstract public void execute(Storage storage, Ui ui, TaskList taskList) throws ChatBotParameterException;","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"vnnamng":22}},{"path":"src/main/java/duke/command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"import duke.exception.ChatBotParameterException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"import duke.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"import duke.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":" public DeleteCommand(String keyword, String parameters) {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":" super(keyword, parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":" * @param storage","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":" * @param ui","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":" * @param taskList","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"vnnamng"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"vnnamng"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"vnnamng"},"content":" public void execute(Storage storage, Ui ui, TaskList taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"vnnamng"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"vnnamng"},"content":" Task task \u003d taskList.deleteTask(parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"vnnamng"},"content":" ui.showDeletedTask(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"vnnamng"},"content":" ui.showTaskListStatus(taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"vnnamng"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"vnnamng"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"vnnamng":29}},{"path":"src/main/java/duke/command/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"import duke.exception.ChatBotParameterException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":"import duke.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"import duke.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":" public ExitCommand(String keyword, String parameters) {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":" super(keyword, parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":" * @return true","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"vnnamng"},"content":" return true;","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"vnnamng"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"vnnamng"},"content":" * @param storage","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"vnnamng"},"content":" * @param ui","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"vnnamng"},"content":" * @param taskList","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"vnnamng"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"vnnamng"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"vnnamng"},"content":" public void execute(Storage storage, Ui ui, TaskList taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"vnnamng"},"content":" storage.saveTaskListToFile(taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"vnnamng"},"content":" ui.showFarewell();","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"vnnamng":33}},{"path":"src/main/java/duke/command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"import duke.exception.ChatBotParameterException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":"import duke.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"import duke.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":" public ListCommand(String keyword, String parameters) {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":" super(keyword, parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":" * @param storage","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":" * @param ui","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":" * @param taskList","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"vnnamng"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"vnnamng"},"content":" public void execute(Storage storage, Ui ui, TaskList taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"vnnamng"},"content":" ui.showTaskList(taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"vnnamng":22}},{"path":"src/main/java/duke/command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"import duke.exception.ChatBotParameterException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"import duke.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"import duke.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":" public MarkCommand(String keyword, String parameters) {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":" super(keyword, parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":" * @param storage","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":" * @param ui","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":" * @param taskList","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"vnnamng"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"vnnamng"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"vnnamng"},"content":" public void execute(Storage storage, Ui ui, TaskList taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"vnnamng"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"vnnamng"},"content":" Task task \u003d taskList.markTaskAsDone(parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"vnnamng"},"content":" ui.showMarkedTask(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"vnnamng"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"vnnamng"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"vnnamng":28}},{"path":"src/main/java/duke/command/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":"import duke.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"import duke.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":" public UnmarkCommand(String keyword, String parameters) {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":" super(keyword, parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":" * @param storage","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":" * @param ui","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":" * @param taskList","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"vnnamng"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"vnnamng"},"content":" public void execute(Storage storage, Ui ui, TaskList taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"vnnamng"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"vnnamng"},"content":" Task task \u003d taskList.markTaskAsUndone(parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"vnnamng"},"content":" ui.showUnmarkedTask(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"vnnamng"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"vnnamng"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"vnnamng":27}},{"path":"src/main/java/duke/exception/ChatBotCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.exception;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"public class ChatBotCommandException extends Exception{","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":" public ChatBotCommandException(String message) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":" super(message);","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"vnnamng":8}},{"path":"src/main/java/duke/exception/ChatBotParameterException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.exception;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"public class ChatBotParameterException extends Exception{","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":" public ChatBotParameterException(String message) {","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":" super(message);","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"vnnamng":7}},{"path":"src/main/java/duke/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"import duke.command.*;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":"import duke.exception.ChatBotCommandException;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":"import duke.exception.ChatBotParameterException;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":"public class Parser {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":" public static String[] parseSavedTask(String taskString) {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":" return taskString.split(\" \\\\| \");","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":" public static Command parseCommand(String command) throws ChatBotCommandException {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":" if (command.isEmpty()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"vnnamng"},"content":" throw new ChatBotCommandException(\"Empty command.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"vnnamng"},"content":" String[] splitCommandArr \u003d command.split(\"\\\\s+\", 2);","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"vnnamng"},"content":" String keyword \u003d splitCommandArr[0];","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"vnnamng"},"content":" String parameters;","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"vnnamng"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"vnnamng"},"content":" parameters \u003d splitCommandArr[1];","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"vnnamng"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"vnnamng"},"content":" parameters \u003d \"\";","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"vnnamng"},"content":" switch (keyword) {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"vnnamng"},"content":" case \"todo\":","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"vnnamng"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"vnnamng"},"content":" case \"event\":","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"vnnamng"},"content":" return new AddCommand(keyword, parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"vnnamng"},"content":" case \"bye\":","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"vnnamng"},"content":" return new ExitCommand(keyword, parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"vnnamng"},"content":" case \"list\":","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"vnnamng"},"content":" return new ListCommand(keyword, parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"vnnamng"},"content":" case \"mark\":","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"vnnamng"},"content":" return new MarkCommand(keyword, parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"vnnamng"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"vnnamng"},"content":" return new UnmarkCommand(keyword, parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"vnnamng"},"content":" case \"delete\":","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"vnnamng"},"content":" return new DeleteCommand(keyword, parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"vnnamng"},"content":" default:","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"vnnamng"},"content":" throw new ChatBotCommandException(\"Invalid command.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"vnnamng"},"content":" public static String[] parseToDo(String parameters) throws ChatBotParameterException {","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"vnnamng"},"content":" if (parameters.isEmpty()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"vnnamng"},"content":" throw new ChatBotParameterException(\"Missing description for duke.task.ToDo \\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"vnnamng"},"content":" \"try: todo \u003ctodo_name\u003e\");","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"vnnamng"},"content":" return new String[]{parameters};","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"vnnamng"},"content":" public static String[] parseDeadline(String parameters) throws ChatBotParameterException {","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"vnnamng"},"content":" if (parameters.isEmpty()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"vnnamng"},"content":" throw new ChatBotParameterException(\"There is no description and by for duke.task.Deadline \\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"vnnamng"},"content":" \"try: deadline \u003cdeadline_name\u003e /by \u003cby\u003e\");","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"vnnamng"},"content":" String[] parametersArr \u003d parameters.split(\" /by \");","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"vnnamng"},"content":" if (parametersArr.length \u003d\u003d 1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"vnnamng"},"content":" throw new ChatBotParameterException(\"Missing description or by for duke.task.Deadline \\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"vnnamng"},"content":" \"try: deadline \u003cdeadline_name\u003e /by \u003cby\u003e\");","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"vnnamng"},"content":" return parametersArr;","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"vnnamng"},"content":" public static String[] parseEvent(String parameters) throws ChatBotParameterException {","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"vnnamng"},"content":" if (parameters.isEmpty()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"vnnamng"},"content":" throw new ChatBotParameterException(\"There is no description and from and to for duke.task.Event \\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"vnnamng"},"content":" \"try: event \u003cevent_name\u003e /by \u003cfrom\u003e /to \u003cto\u003e\");","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"vnnamng"},"content":" String[] parametersArr \u003d parameters.split(\" /from | /to \");","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"vnnamng"},"content":" if (parametersArr.length \u003c 3) {","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"vnnamng"},"content":" throw new ChatBotParameterException(\"Missing description and/or from and/or to for duke.task.Event \\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"vnnamng"},"content":" \"try: event \u003cevent_name\u003e /by \u003cfrom\u003e /to \u003cto\u003e\");","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"vnnamng"},"content":" return parametersArr;","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"vnnamng"},"content":" public static LocalDateTime parseDateTime(String dateTime) {","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"vnnamng"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"vnnamng"},"content":" return LocalDateTime.parse(dateTime, DateTimeFormatter.ofPattern(\"d/M/yyyy Hmm\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"vnnamng"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"vnnamng"},"content":" return LocalDateTime.parse(dateTime);","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"vnnamng"},"content":" public static int parseInteger(String parameters) throws ChatBotParameterException {","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"vnnamng"},"content":" if (parameters.isEmpty()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"vnnamng"},"content":" throw new ChatBotParameterException(\"Missing task number \\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"vnnamng"},"content":" \"try: mark/unmark/delete \u003ctask_number\u003e\");","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"vnnamng"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"vnnamng"},"content":" return Integer.parseInt(parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"vnnamng"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"vnnamng"},"content":" throw new ChatBotParameterException(\"Invalid task number \\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"vnnamng"},"content":" \"try: mark/unmark/delete \u003ctask_number\u003e\");","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"vnnamng":103}},{"path":"src/main/java/duke/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"import duke.parser.Parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":"import duke.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":"import java.nio.file.StandardOpenOption;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":"import java.util.List;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":"public class Storage {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":" private final String fileName;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":" private static final String DATA_FOLDER \u003d \"data\";","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"vnnamng"},"content":" public Storage(String fileName) {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"vnnamng"},"content":" this.fileName \u003d fileName;","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"vnnamng"},"content":" public StringBuilder createSaveDataFromTaskList(TaskList tasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"vnnamng"},"content":" StringBuilder saveData \u003d new StringBuilder();","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"vnnamng"},"content":" for (Task task: tasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"vnnamng"},"content":" saveData.append(task.createSaveData());","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"vnnamng"},"content":" return saveData;","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"vnnamng"},"content":" public void saveTaskListToFile(TaskList tasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"vnnamng"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"vnnamng"},"content":" Files.createDirectories(Paths.get(DATA_FOLDER));","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"vnnamng"},"content":" Files.writeString(this.getFileLocationPath(), this.createSaveDataFromTaskList(tasks),","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"vnnamng"},"content":" StandardOpenOption.CREATE);","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"vnnamng"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"vnnamng"},"content":" System.out.println(\"Folder Does not Exists\");","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"vnnamng"},"content":" public Path getFileLocationPath() {","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"vnnamng"},"content":" return Paths.get(DATA_FOLDER, this.fileName);","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"vnnamng"},"content":" public void loadTasksFromFileToTaskList(TaskList taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"vnnamng"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"vnnamng"},"content":" Path filePath \u003d this.getFileLocationPath();","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"vnnamng"},"content":" if (!Files.exists(filePath)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"vnnamng"},"content":" return;","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"vnnamng"},"content":" List\u003cString\u003e tasks \u003d Files.readAllLines(filePath);","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"vnnamng"},"content":" for (String taskString : tasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"vnnamng"},"content":" String[] parameters \u003d Parser.parseSavedTask(taskString);","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"vnnamng"},"content":" switch (parameters[0]) {","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"vnnamng"},"content":" case (\"T\"):","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"vnnamng"},"content":" taskList.addToDo(parameters[2], parameters[1].equals(\"1\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"vnnamng"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"vnnamng"},"content":" case (\"D\"):","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"vnnamng"},"content":" taskList.addDeadline(parameters[2], parameters[3], parameters[1].equals(\"1\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"vnnamng"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"vnnamng"},"content":" case (\"E\"):","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"vnnamng"},"content":" taskList.addEvent(parameters[2], parameters[3], parameters[4], parameters[1].equals(\"1\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"vnnamng"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"vnnamng"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"vnnamng"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"vnnamng":73}},{"path":"src/main/java/duke/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.task;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":" protected LocalDateTime by;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":" public Deadline(String description, LocalDateTime by, boolean isDone) {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":" public String getFormattedBy() {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":" return this.by.format(DateTimeFormatter.ofPattern(\"MMM d yyyy hh:mm a\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"vnnamng"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"vnnamng"},"content":" public String createSaveData() {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"vnnamng"},"content":" return String.format(\"D | %d | %s | %s\\n\", (super.isDone() ? 1 : 0), this.description, this.by);","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"vnnamng"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"vnnamng"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"vnnamng"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.getFormattedBy() + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"vnnamng":27}},{"path":"src/main/java/duke/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.task;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"public class Event extends Task{","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":" protected String from;","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":" protected String to;","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":" public Event(String description, String from, String to, boolean isDone) {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":" public String createSaveData() {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":" return String.format(\"E | %d | %s | %s | %s\\n\", (super.isDone() ? 1 : 0), this.description, this.from, this.to);","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"vnnamng"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"vnnamng"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"vnnamng"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.from + \" to: \" + this.to + \")\";","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"vnnamng":22}},{"path":"src/main/java/duke/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.task;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"public class Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":" protected String description;","lastModifiedDate":"2024-01-21"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":" public Task(String description, boolean isDone) {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-21"},{"lineNumber":18,"author":{"gitId":"vnnamng"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2024-01-21"},{"lineNumber":19,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":20,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":21,"author":{"gitId":"vnnamng"},"content":" public boolean isDone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"vnnamng"},"content":" return isDone;","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"vnnamng"},"content":" public String createSaveData() {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"vnnamng"},"content":" return String.format(\"T | %d | %s\\n\", ((this.isDone) ? 1 : 0), this.description);","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"vnnamng"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":30,"author":{"gitId":"vnnamng"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":31,"author":{"gitId":"vnnamng"},"content":" return \"[\" + this.getStatusIcon() + \"]\" + \" \" + this.description;","lastModifiedDate":"2024-01-21"},{"lineNumber":32,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":33,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":34,"author":{"gitId":"vnnamng"},"content":" public void markDone() {","lastModifiedDate":"2024-01-21"},{"lineNumber":35,"author":{"gitId":"vnnamng"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-21"},{"lineNumber":36,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":37,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":38,"author":{"gitId":"vnnamng"},"content":" public void markUndone() {","lastModifiedDate":"2024-01-21"},{"lineNumber":39,"author":{"gitId":"vnnamng"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-21"},{"lineNumber":40,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":41,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"vnnamng":41}},{"path":"src/main/java/duke/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.task;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"import duke.exception.ChatBotParameterException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":"import duke.parser.Parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":"import java.util.Iterator;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":"import java.util.List;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":"public class TaskList implements Iterable\u003cTask\u003e {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":" protected List\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":" public TaskList() {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"vnnamng"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"vnnamng"},"content":" this.tasks.add(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"vnnamng"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"vnnamng"},"content":" * Returns an iterator over elements of type {@code duke.task.Task}.","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"vnnamng"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"vnnamng"},"content":" * @return an Iterator.","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"vnnamng"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"vnnamng"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"vnnamng"},"content":" public Iterator\u003cTask\u003e iterator() {","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"vnnamng"},"content":" return tasks.iterator();","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"vnnamng"},"content":" public Task addToDo(String description, boolean isDone) {","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"vnnamng"},"content":" ToDo toDo \u003d new ToDo(description, isDone);","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"vnnamng"},"content":" this.addTask(toDo);","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"vnnamng"},"content":" return toDo;","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"vnnamng"},"content":" public Task addToDo(String parameters) throws ChatBotParameterException {","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"vnnamng"},"content":" String[] parametersArr \u003d Parser.parseToDo(parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"vnnamng"},"content":" return this.addToDo(parametersArr[0], false);","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"vnnamng"},"content":" public Task addDeadline(String description, String by, boolean isDone) {","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"vnnamng"},"content":" LocalDateTime byDateTime \u003d Parser.parseDateTime(by);","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"vnnamng"},"content":" Deadline deadline \u003d new Deadline(description, byDateTime, isDone);","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"vnnamng"},"content":" this.addTask(deadline);","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"vnnamng"},"content":" return deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"vnnamng"},"content":" public Task addDeadline(String parameters) throws ChatBotParameterException {","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"vnnamng"},"content":" String[] parametersArr \u003d Parser.parseDeadline(parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"vnnamng"},"content":" return this.addDeadline(parametersArr[0], parametersArr[1], false);","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"vnnamng"},"content":" public Task addEvent(String parameters) throws ChatBotParameterException {","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"vnnamng"},"content":" String[] parametersArr \u003d Parser.parseEvent(parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"vnnamng"},"content":" return this.addEvent(parametersArr[0], parametersArr[1], parametersArr[2], false);","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"vnnamng"},"content":" public Task addEvent(String description, String from, String to, boolean isDone) {","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"vnnamng"},"content":" Event event \u003d new Event(description, from, to, isDone);","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"vnnamng"},"content":" this.addTask(event);","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"vnnamng"},"content":" return event;","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"vnnamng"},"content":" public int size() {","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"vnnamng"},"content":" return this.tasks.size();","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"vnnamng"},"content":" public Task markTaskAsDone(String parameters) throws ChatBotParameterException {","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"vnnamng"},"content":" int taskNumber \u003d Parser.parseInteger(parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"vnnamng"},"content":" Task taskToBeMarked;","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"vnnamng"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"vnnamng"},"content":" taskToBeMarked \u003d this.tasks.get(taskNumber - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"vnnamng"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"vnnamng"},"content":" throw new ChatBotParameterException(\"The task does not exists in the task list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"vnnamng"},"content":" if (taskToBeMarked.isDone()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"vnnamng"},"content":" throw new ChatBotParameterException(\"This task is already marked done!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"vnnamng"},"content":" taskToBeMarked.markDone();","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"vnnamng"},"content":" return taskToBeMarked;","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"vnnamng"},"content":" public Task markTaskAsUndone(String parameters) throws ChatBotParameterException {","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"vnnamng"},"content":" int taskNumber \u003d Parser.parseInteger(parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"vnnamng"},"content":" Task taskToBeMarked;","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"vnnamng"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"vnnamng"},"content":" taskToBeMarked \u003d this.tasks.get(taskNumber - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"vnnamng"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"vnnamng"},"content":" throw new ChatBotParameterException(\"The task does not exists in the task list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"vnnamng"},"content":" if (!taskToBeMarked.isDone()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"vnnamng"},"content":" throw new ChatBotParameterException(\"This task is already marked undone!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"vnnamng"},"content":" taskToBeMarked.markUndone();","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"vnnamng"},"content":" return taskToBeMarked;","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"vnnamng"},"content":" public Task deleteTask(String parameters) throws ChatBotParameterException {","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"vnnamng"},"content":" int taskNumber \u003d Parser.parseInteger(parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"vnnamng"},"content":" Task taskToBeDeleted;","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"vnnamng"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"vnnamng"},"content":" taskToBeDeleted \u003d this.tasks.remove(taskNumber - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"vnnamng"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"vnnamng"},"content":" throw new ChatBotParameterException(\"The task does not exists in the task list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"vnnamng"},"content":" return taskToBeDeleted;","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"vnnamng":115}},{"path":"src/main/java/duke/task/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.task;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":" public ToDo(String description, boolean isDone) {","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"vnnamng":12}},{"path":"src/main/java/duke/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":"import duke.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"import java.util.List;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":"public class Ui {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":" private static final String LOGO \u003d \" ___ ___ ___ ___ ___ \\n\"+","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":" \" /\\\\ \\\\ /\\\\ \\\\ ___ /\\\\__\\\\ /\\\\ \\\\ /\\\\__\\\\ \\n\"+","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":" \" /::\\\\ \\\\ /::\\\\ \\\\ /\\\\ \\\\ /::| | /::\\\\ \\\\ /::| | \\n\"+","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":" \" /:/\\\\:\\\\ \\\\ /:/\\\\:\\\\ \\\\ \\\\:\\\\ \\\\ /:|:| | /:/\\\\:\\\\ \\\\ /:|:| | \\n\"+","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":" \" /::\\\\~\\\\:\\\\ \\\\ /::\\\\~\\\\:\\\\ \\\\ /::\\\\__\\\\ /:/|:|__|__ /:/ \\\\:\\\\ \\\\ /:/|:| |__ \\n\"+","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":" \" /:/\\\\:\\\\ \\\\:\\\\__\\\\/:/\\\\:\\\\ \\\\:\\\\__\\\\ __/:/\\\\/__//:/ |::::\\\\__\\\\/:/__/ \\\\:\\\\__\\\\/:/ |:| /\\\\__\\\\\\n\"+","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":" \" \\\\/__\\\\:\\\\/:/ /\\\\/__\\\\:\\\\/:/ //\\\\/:/ / \\\\/__/~~/:/ /\\\\:\\\\ \\\\ /:/ /\\\\/__|:|/:/ /\\n\"+","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":" \" \\\\::/ / \\\\::/ / \\\\::/__/ /:/ / \\\\:\\\\ /:/ / |:/:/ / \\n\"+","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"vnnamng"},"content":" \" \\\\/__/ /:/ / \\\\:\\\\__\\\\ /:/ / \\\\:\\\\/:/ / |::/ / \\n\"+","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"vnnamng"},"content":" \" /:/ / \\\\/__/ /:/ / \\\\::/ / /:/ / \\n\"+","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"vnnamng"},"content":" \" \\\\/__/ \\\\/__/ \\\\/__/ \\\\/__/ \\n\";","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"vnnamng"},"content":" private static final List\u003cString\u003e GREETINGS \u003d List.of(","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"vnnamng"},"content":" \"Ah, there you are! Hello! Paimon wondered where you were! This is going to be so much fun, right?\",","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"vnnamng"},"content":" \"Ahoy there! It\u0027s great to see you! Paimon\u0027s hungry!\",","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"vnnamng"},"content":" \"Ah, Paimon missed you! It\u0027s been so long...\",","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"vnnamng"},"content":" \"Ad astra abyssosque, welcome to Paimon\u0027s house!\",","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"vnnamng"},"content":" \"Good morning, Traveler. Ah... what\u0027s it like out today? Paimon wants to hear your story.\"","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"vnnamng"},"content":" );","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"vnnamng"},"content":" private static final List\u003cString\u003e FAREWELLS \u003d List.of(","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"vnnamng"},"content":" \"Farewell, it was fun to meet you! Take care, see you later, and may you find many new treasures\",","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"vnnamng"},"content":" \"Farewell, until we meet again!\",","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"vnnamng"},"content":" \"Safe travels, and take care!\",","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"vnnamng"},"content":" \"Good luck! And don\u0027t spend all your Mora in one place.\",","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"vnnamng"},"content":" \"Adios!\"","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"vnnamng"},"content":" );","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"vnnamng"},"content":" private final Scanner scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"vnnamng"},"content":" public Ui() {","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"vnnamng"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"vnnamng"},"content":" private static final String HORIZONTAL_LINE \u003d","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"vnnamng"},"content":" \"___________________________________________________________________________\";","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"vnnamng"},"content":" public void showLine() {","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"vnnamng"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"vnnamng"},"content":" public void showError(String errorMessage) {","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"vnnamng"},"content":" System.out.println(errorMessage);","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"vnnamng"},"content":" public String readCommand() {","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"vnnamng"},"content":" return scanner.nextLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"vnnamng"},"content":" public void showWelcome() {","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"vnnamng"},"content":" System.out.println(LOGO);","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"vnnamng"},"content":" System.out.println(GREETINGS.get(1));","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"vnnamng"},"content":" public void showFarewell() {","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"vnnamng"},"content":" this.scanner.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"vnnamng"},"content":" System.out.println(FAREWELLS.get(1));","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"vnnamng"},"content":" public void showTaskList(TaskList taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"vnnamng"},"content":" this.showTaskListStatus(taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"vnnamng"},"content":" int count \u003d 1;","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"vnnamng"},"content":" for (Task task : taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"vnnamng"},"content":" System.out.printf(\"%d. %s\\n\", count, task);","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"vnnamng"},"content":" count++;","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"vnnamng"},"content":" public void showAddedTask(Task task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"vnnamng"},"content":" System.out.println(\"Got it. I\u0027ve added this task: \\n\" + task.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"vnnamng"},"content":" public void showTaskListStatus(TaskList taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"vnnamng"},"content":" System.out.printf(\"Now you have %d tasks in the list.%n\", taskList.size());","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"vnnamng"},"content":" public void showMarkedTask(Task task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"vnnamng"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done: \\n\" + task.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"vnnamng"},"content":" public void showUnmarkedTask(Task task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"vnnamng"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet: \\n\" + task.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"vnnamng"},"content":" public void showDeletedTask(Task task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"vnnamng"},"content":" System.out.println(\"Noted. I\u0027ve removed this task: \\n\" + task.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"vnnamng":94}},{"path":"src/test/java/duke/task/ToDoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.task; //same package as the class being tested","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"public class ToDoTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":" public void dummyTest(){","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":" assertEquals(2, 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":" public void anotherDummyTest(){","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":" assertEquals(4, 4);","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"vnnamng":17}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"random command","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"todo Hello World","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"deadline Goodbye World /by tmr","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":"event Hello and Goodbye World /from now /to next year","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"mark 1","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"mark 1","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":"unmark 1","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":"unmark 1","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":"mark 1","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":"mark 2","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":"unmark 2","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":"mark 3","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":"bye","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"vnnamng":17}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"vnnamng"},"content":"java -classpath ..\\bin Duke \"test-mode\" \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"vnnamng":1,"-":20}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":" rm EXPECTED.TXT","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"vnnamng"},"content":"# run the program, feed commands from input.txt file and redirect the output to the EXPECTED.TXT","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"vnnamng"},"content":"java -classpath ../bin Duke \"test-mode\" \u003c input.txt \u003e EXPECTED.TXT","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"vnnamng"},"content":"dos2unix EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"vnnamng"},"content":"diff EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"vnnamng":5,"-":33}}] diff --git a/vnnamng_ip_master/commits.json b/vnnamng_ip_master/commits.json index 3f2390d5..44dcb0b8 100644 --- a/vnnamng_ip_master/commits.json +++ b/vnnamng_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"vnnamng":[{"date":"2024-01-20","commitResults":[{"hash":"7889fbfaf51380597adb2bb8284bda9a47756d32","isMergeCommit":false,"messageTitle":"Add Paimon ASCII Art into Duke main()","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":6}}},{"hash":"7e260940793b624f8f64ffffc342028e5b6c1109","isMergeCommit":false,"messageTitle":"Add greeting in Duke main, Create boilerplate for ChatBot class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":67,"deletions":0}}},{"hash":"68a52e1d9ae5aa006f2da0eb39caf5fe30d6ca41","isMergeCommit":false,"messageTitle":"ChatBot.java: add commands field and methods, add randomized dialoue options","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":0}}},{"hash":"3ca960911ce3fb5cfc4dc1b35f5f15ea3f10e235","isMergeCommit":false,"messageTitle":"Duke.java: Refactor Paimon creation method","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":3}}}]},{"date":"2024-01-21","commitResults":[{"hash":"aa8f82f33a75db2071a8af7b3b79d788a297cf49","isMergeCommit":false,"messageTitle":"Duke,java: add echo effect for Paimon bot in main","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":2}}},{"hash":"ffb152d7c32284a72994a7de7d2f1027797f7926","isMergeCommit":false,"messageTitle":"Add Task.java: new Task class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":0}}},{"hash":"2d5cd3a565eeeff868fbb662f0edcb1ad7e48cb1","isMergeCommit":false,"messageTitle":"ChatBot.java: Add Tasks field and methods to ChatBot Class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":0}}},{"hash":"af2a53bb7aba62c0f1319421e5dbbe5965db616e","isMergeCommit":false,"messageTitle":"ChatBot.java: Fix ImmutableList into ArrayList for tasks","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":3}}},{"hash":"1dec30d357a7abc9652619ce5e1ae618b3f4806d","isMergeCommit":false,"messageTitle":"Duke.java: Add switch-cases for adding tasks and list","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":7}}},{"hash":"663f61fad0c01f08a456471f78ae84c345bbc6d4","isMergeCommit":false,"messageTitle":"Task.java: add mark methods and new toString","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":1}}}]},{"date":"2024-01-22","commitResults":[{"hash":"6efa2e2bda1f3d1a2fd6293c8af3ccf5ea825836","isMergeCommit":false,"messageTitle":"Add Chat Interface for mark command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":3}}},{"hash":"24fbb38bff8f95a7ff253fa206577f315c2e8693","isMergeCommit":false,"messageTitle":"Add mark and unmark functions working implementation","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":1}}},{"hash":"cdad8cd03a00b9c98e6518e16f8ae118f93a0fdd","isMergeCommit":false,"messageTitle":"Fix mark function","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"39c43c095f1f2dff212076e6c3d6a9086950e799","isMergeCommit":false,"messageTitle":"Add ToDo, Deadline, Event classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":0}}},{"hash":"332ac750e9505f3036e3581f9f8d69a5e8d1f60d","isMergeCommit":false,"messageTitle":"Create add ToDo functions and implementations","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":5}}},{"hash":"52419a8833257f8f10aec27ffc3ce8abf2b5b031","isMergeCommit":false,"messageTitle":"Add some Deadline features","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":14}}},{"hash":"ef2f674f0f3dd717ff8857be097a91657f21138f","isMergeCommit":false,"messageTitle":"Add Events methods and fine-tune interface","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":6}}},{"hash":"a75c79711f5ab07c24bf914c8607d74a2ff19c42","isMergeCommit":false,"messageTitle":"Add test-mode for the Chatbot","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":2}}},{"hash":"db8fbb3ff0de3c27aac8a4c89f62ead696f4bef5","isMergeCommit":false,"messageTitle":"Add ui-testing function, with Command Line Args to enter test-mode","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":17,"deletions":0},"java":{"insertions":11,"deletions":16},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":5,"deletions":5}}},{"hash":"29d072d2e17bc629a8cabe3663f870308cc919de","isMergeCommit":false,"messageTitle":"Create and implement parameter exception","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}},{"hash":"b63009dc3bd71379a9b5cb299ea5be91141199e7","isMergeCommit":false,"messageTitle":"Actual create and implement parameter exception","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":7}}},{"hash":"f1677b37be5278c27e343c252ae3ade176a3faff","isMergeCommit":false,"messageTitle":"Chatbot.java: Fix spelling error","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"3756fd39590e1545820e1eb66fddd4496a1b2598","isMergeCommit":false,"messageTitle":"Fix parameters exception and add command exception","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":27}}}]},{"date":"2024-01-23","commitResults":[{"hash":"6e9a876e9f46f906be40d14c8fd1a100c99761ef","isMergeCommit":false,"messageTitle":"Chatbot.java: Add mark and unmark functions exceptions","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":48,"deletions":20}}},{"hash":"f71bc7bdf6e39a7764d327e86b7bfa12d8aced58","isMergeCommit":false,"messageTitle":"Add delete feature","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":0}}}]},{"date":"2024-01-29","commitResults":[{"hash":"b155c5e6c23836b26381f2c856ef8fa0b785e7f7","isMergeCommit":false,"messageTitle":"Fix Switch case coding style in Duke.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":28}}},{"hash":"8e9f0cec544c4a02a2c1e20b65f460183b358cf3","isMergeCommit":false,"messageTitle":"Add save feature for ChatBot","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":1}}},{"hash":"42db2d9b7c5a61f8d1c10033c157257c17ca34d3","isMergeCommit":false,"messageTitle":"Add Load Tasks from File feature for Chatbot","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":74,"deletions":15}}},{"hash":"77180863be1d5a7515fbbefbcbc7621c1b0d6d18","isMergeCommit":true,"messageTitle":"Add Save Feature for Chatbot","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3e96549f8778363bafd986034f5c6639c19ec53c","isMergeCommit":false,"messageTitle":"Add some rough implementation of LocalDateTime in Deadline","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":6}}},{"hash":"db461d71a9c9f5270caeb082fe97f3ab898bdb05","isMergeCommit":false,"messageTitle":"fix errors when file does not exist when loading","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":1}}},{"hash":"5da736bec8e02053848736d81ff169fd936ce72e","isMergeCommit":false,"messageTitle":"Add fully working implementation of DateTime in Deadline","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"7ff918eaba1b625ffbd99a4622157c9e7726c2e5","isMergeCommit":true,"messageTitle":"Add DateTime implementation for Deadline","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"349b0ebf5e354f0115d017259dd01808aea2e459","isMergeCommit":false,"messageTitle":"Clean unused methods","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":65}}},{"hash":"fd2b3724311707a0b63a8ebc971437b8c36d7ba3","isMergeCommit":false,"messageTitle":"Add new Storage, TaskList, Parser and Command class for more OOP","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":186,"deletions":0}}},{"hash":"c038b144337a5f7122f09cbc78cc6ad3d2236bba","isMergeCommit":false,"messageTitle":"Adding Working Add/List/Exit commands","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":280,"deletions":248}}},{"hash":"97aa5e9dabf5f56ee862195bec11396bde8875f4","isMergeCommit":false,"messageTitle":"Add working Mark Command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":80,"deletions":43}}},{"hash":"5a1da37e6b769deeaf0f04316ebbfc5a15d9bd4d","isMergeCommit":false,"messageTitle":"Add working unmark Command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":6}}},{"hash":"ce41f67bf45f25844abacd4e33ff03366923babe","isMergeCommit":false,"messageTitle":"Add working Deleted Command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":53,"deletions":19}}},{"hash":"bf4eddacf4b1a2755adcd0a526b9dedf7f29202b","isMergeCommit":false,"messageTitle":"Clean up imports and unused classes, Add some customisation potential for greet and bye","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":208}}},{"hash":"129d075fa5f849dc0b7f82ee2f69885b5194d2e2","isMergeCommit":false,"messageTitle":"Clean unused constructors and imports","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":18}}},{"hash":"f4f4a77312fe9c132e5e6d36150f8af58da28f4d","isMergeCommit":false,"messageTitle":"Add more readable UI replies for the ChatBot","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":7}}},{"hash":"85d7f14c8161094605907901050366b816060d0d","isMergeCommit":true,"messageTitle":"Refactor to make the code more OOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"790a82036d0ee031e017c528b75f756bd1df079c","isMergeCommit":false,"messageTitle":"Divide classes into command, task, storage, ui, exception, parser packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":104,"deletions":15}}},{"hash":"b298a6781f9a3fb3198d3c9b4dd2dfccbbcaeb28","isMergeCommit":true,"messageTitle":"Divide classes into task, command, parser, ui, storage, exception packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"vnnamng":{"java":752,"md":0,"fxml":0,"sh":5,"bat":1,"gradle":0,"txt":17}},"authorContributionVariance":{"vnnamng":216332.45},"authorDisplayNameMap":{"vnnamng":"NGUY.. NAM"}} +{"authorDailyContributionsMap":{"vnnamng":[{"date":"2024-01-20","commitResults":[{"hash":"7889fbfaf51380597adb2bb8284bda9a47756d32","isMergeCommit":false,"messageTitle":"Add Paimon ASCII Art into Duke main()","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":6}}},{"hash":"7e260940793b624f8f64ffffc342028e5b6c1109","isMergeCommit":false,"messageTitle":"Add greeting in Duke main, Create boilerplate for ChatBot class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":67,"deletions":0}}},{"hash":"68a52e1d9ae5aa006f2da0eb39caf5fe30d6ca41","isMergeCommit":false,"messageTitle":"ChatBot.java: add commands field and methods, add randomized dialoue options","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":0}}},{"hash":"3ca960911ce3fb5cfc4dc1b35f5f15ea3f10e235","isMergeCommit":false,"messageTitle":"Duke.java: Refactor Paimon creation method","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":3}}}]},{"date":"2024-01-21","commitResults":[{"hash":"aa8f82f33a75db2071a8af7b3b79d788a297cf49","isMergeCommit":false,"messageTitle":"Duke,java: add echo effect for Paimon bot in main","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":2}}},{"hash":"ffb152d7c32284a72994a7de7d2f1027797f7926","isMergeCommit":false,"messageTitle":"Add Task.java: new Task class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":0}}},{"hash":"2d5cd3a565eeeff868fbb662f0edcb1ad7e48cb1","isMergeCommit":false,"messageTitle":"ChatBot.java: Add Tasks field and methods to ChatBot Class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":0}}},{"hash":"af2a53bb7aba62c0f1319421e5dbbe5965db616e","isMergeCommit":false,"messageTitle":"ChatBot.java: Fix ImmutableList into ArrayList for tasks","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":3}}},{"hash":"1dec30d357a7abc9652619ce5e1ae618b3f4806d","isMergeCommit":false,"messageTitle":"Duke.java: Add switch-cases for adding tasks and list","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":7}}},{"hash":"663f61fad0c01f08a456471f78ae84c345bbc6d4","isMergeCommit":false,"messageTitle":"Task.java: add mark methods and new toString","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":1}}}]},{"date":"2024-01-22","commitResults":[{"hash":"6efa2e2bda1f3d1a2fd6293c8af3ccf5ea825836","isMergeCommit":false,"messageTitle":"Add Chat Interface for mark command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":3}}},{"hash":"24fbb38bff8f95a7ff253fa206577f315c2e8693","isMergeCommit":false,"messageTitle":"Add mark and unmark functions working implementation","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":1}}},{"hash":"cdad8cd03a00b9c98e6518e16f8ae118f93a0fdd","isMergeCommit":false,"messageTitle":"Fix mark function","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"39c43c095f1f2dff212076e6c3d6a9086950e799","isMergeCommit":false,"messageTitle":"Add ToDo, Deadline, Event classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":0}}},{"hash":"332ac750e9505f3036e3581f9f8d69a5e8d1f60d","isMergeCommit":false,"messageTitle":"Create add ToDo functions and implementations","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":5}}},{"hash":"52419a8833257f8f10aec27ffc3ce8abf2b5b031","isMergeCommit":false,"messageTitle":"Add some Deadline features","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":14}}},{"hash":"ef2f674f0f3dd717ff8857be097a91657f21138f","isMergeCommit":false,"messageTitle":"Add Events methods and fine-tune interface","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":6}}},{"hash":"a75c79711f5ab07c24bf914c8607d74a2ff19c42","isMergeCommit":false,"messageTitle":"Add test-mode for the Chatbot","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":2}}},{"hash":"db8fbb3ff0de3c27aac8a4c89f62ead696f4bef5","isMergeCommit":false,"messageTitle":"Add ui-testing function, with Command Line Args to enter test-mode","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":17,"deletions":0},"java":{"insertions":11,"deletions":16},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":5,"deletions":5}}},{"hash":"29d072d2e17bc629a8cabe3663f870308cc919de","isMergeCommit":false,"messageTitle":"Create and implement parameter exception","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}},{"hash":"b63009dc3bd71379a9b5cb299ea5be91141199e7","isMergeCommit":false,"messageTitle":"Actual create and implement parameter exception","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":7}}},{"hash":"f1677b37be5278c27e343c252ae3ade176a3faff","isMergeCommit":false,"messageTitle":"Chatbot.java: Fix spelling error","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"3756fd39590e1545820e1eb66fddd4496a1b2598","isMergeCommit":false,"messageTitle":"Fix parameters exception and add command exception","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":27}}}]},{"date":"2024-01-23","commitResults":[{"hash":"6e9a876e9f46f906be40d14c8fd1a100c99761ef","isMergeCommit":false,"messageTitle":"Chatbot.java: Add mark and unmark functions exceptions","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":48,"deletions":20}}},{"hash":"f71bc7bdf6e39a7764d327e86b7bfa12d8aced58","isMergeCommit":false,"messageTitle":"Add delete feature","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":0}}}]},{"date":"2024-01-29","commitResults":[{"hash":"b155c5e6c23836b26381f2c856ef8fa0b785e7f7","isMergeCommit":false,"messageTitle":"Fix Switch case coding style in Duke.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":28}}},{"hash":"8e9f0cec544c4a02a2c1e20b65f460183b358cf3","isMergeCommit":false,"messageTitle":"Add save feature for ChatBot","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":1}}},{"hash":"42db2d9b7c5a61f8d1c10033c157257c17ca34d3","isMergeCommit":false,"messageTitle":"Add Load Tasks from File feature for Chatbot","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":74,"deletions":15}}},{"hash":"77180863be1d5a7515fbbefbcbc7621c1b0d6d18","isMergeCommit":true,"messageTitle":"Add Save Feature for Chatbot","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3e96549f8778363bafd986034f5c6639c19ec53c","isMergeCommit":false,"messageTitle":"Add some rough implementation of LocalDateTime in Deadline","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":6}}},{"hash":"db461d71a9c9f5270caeb082fe97f3ab898bdb05","isMergeCommit":false,"messageTitle":"fix errors when file does not exist when loading","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":1}}},{"hash":"5da736bec8e02053848736d81ff169fd936ce72e","isMergeCommit":false,"messageTitle":"Add fully working implementation of DateTime in Deadline","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"7ff918eaba1b625ffbd99a4622157c9e7726c2e5","isMergeCommit":true,"messageTitle":"Add DateTime implementation for Deadline","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"349b0ebf5e354f0115d017259dd01808aea2e459","isMergeCommit":false,"messageTitle":"Clean unused methods","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":65}}},{"hash":"fd2b3724311707a0b63a8ebc971437b8c36d7ba3","isMergeCommit":false,"messageTitle":"Add new Storage, TaskList, Parser and Command class for more OOP","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":186,"deletions":0}}},{"hash":"c038b144337a5f7122f09cbc78cc6ad3d2236bba","isMergeCommit":false,"messageTitle":"Adding Working Add/List/Exit commands","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":280,"deletions":248}}},{"hash":"97aa5e9dabf5f56ee862195bec11396bde8875f4","isMergeCommit":false,"messageTitle":"Add working Mark Command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":80,"deletions":43}}},{"hash":"5a1da37e6b769deeaf0f04316ebbfc5a15d9bd4d","isMergeCommit":false,"messageTitle":"Add working unmark Command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":6}}},{"hash":"ce41f67bf45f25844abacd4e33ff03366923babe","isMergeCommit":false,"messageTitle":"Add working Deleted Command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":53,"deletions":19}}},{"hash":"bf4eddacf4b1a2755adcd0a526b9dedf7f29202b","isMergeCommit":false,"messageTitle":"Clean up imports and unused classes, Add some customisation potential for greet and bye","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":208}}},{"hash":"129d075fa5f849dc0b7f82ee2f69885b5194d2e2","isMergeCommit":false,"messageTitle":"Clean unused constructors and imports","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":18}}},{"hash":"f4f4a77312fe9c132e5e6d36150f8af58da28f4d","isMergeCommit":false,"messageTitle":"Add more readable UI replies for the ChatBot","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":7}}},{"hash":"85d7f14c8161094605907901050366b816060d0d","isMergeCommit":true,"messageTitle":"Refactor to make the code more OOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"790a82036d0ee031e017c528b75f756bd1df079c","isMergeCommit":false,"messageTitle":"Divide classes into command, task, storage, ui, exception, parser packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":104,"deletions":15}}},{"hash":"b298a6781f9a3fb3198d3c9b4dd2dfccbbcaeb28","isMergeCommit":true,"messageTitle":"Divide classes into task, command, parser, ui, storage, exception packages","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-01-30","commitResults":[{"hash":"8671544c4ecf471b1b315a70390f6aaff33939fb","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027 of https://github.com/vnnamng/ip","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"22cb5b10ad0cdf9a2e18692990b6a928d0aa135a","isMergeCommit":false,"messageTitle":"Fix package problem with Duke Class not in duke folder","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":0}}},{"hash":"7f1a9625137429f8ef80cbd1501649db759bb543","isMergeCommit":false,"messageTitle":"Changing to correct main class for gradle","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"8ddd17cb95975caac7642094db7e9cdd9d0070e8","isMergeCommit":false,"messageTitle":"Add dummy tests to check for gradle test","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"vnnamng":{"java":773,"md":0,"fxml":0,"sh":5,"bat":1,"gradle":1,"txt":17}},"authorContributionVariance":{"vnnamng":201236.56},"authorDisplayNameMap":{"vnnamng":"NGUY.. NAM"}} diff --git a/yadunut_ip_master/authorship.json b/yadunut_ip_master/authorship.json index 21bc793b..86e9e2f9 100644 --- a/yadunut_ip_master/authorship.json +++ b/yadunut_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yadunut"},"content":"import java.io.*;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"yadunut"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"yadunut"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"yadunut"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"yadunut"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"yadunut"},"content":"enum TodoState {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"yadunut"},"content":" UNDONE, DONE","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"yadunut"},"content":"}","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"yadunut"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"yadunut"},"content":"class Todo extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"yadunut"},"content":" public Todo(String task) {","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"yadunut"},"content":" super(task);","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"yadunut"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"yadunut"},"content":" public Todo(String task, TodoState todoState) {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"yadunut"},"content":" super(task, todoState);","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"yadunut"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"yadunut"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"yadunut"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"yadunut"},"content":" return \"[T] \" + super.toString();","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"yadunut"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"yadunut"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"yadunut"},"content":" return \"T | \" + (todoState \u003d\u003d TodoState.DONE ? \"1\" : \"0\") + \" | \" + task;","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"yadunut"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"yadunut"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"yadunut"},"content":"class Deadline extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"yadunut"},"content":" String deadline;","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"yadunut"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"yadunut"},"content":" public Deadline(String task, String deadline) {","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"yadunut"},"content":" super(task);","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"yadunut"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"yadunut"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"yadunut"},"content":" public Deadline(String task, String deadline, TodoState todoState) {","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"yadunut"},"content":" super(task, todoState);","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"yadunut"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"yadunut"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"yadunut"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"yadunut"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"yadunut"},"content":" return \"[D] \" + super.toString() + \"(by: \" + deadline + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"yadunut"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"yadunut"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"yadunut"},"content":" return \"D | \" + (todoState \u003d\u003d TodoState.DONE ? \"1\" : \"0\") + \" | \" + task + \" | \" + deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"yadunut"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"yadunut"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"yadunut"},"content":"class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"yadunut"},"content":" String start;","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"yadunut"},"content":" String end;","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"yadunut"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"yadunut"},"content":" public Event(String task, String start, String end) {","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"yadunut"},"content":" super(task);","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"yadunut"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"yadunut"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"yadunut"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"yadunut"},"content":" public Event(String task, String start, String end, TodoState todoState) {","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"yadunut"},"content":" super(task, todoState);","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"yadunut"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"yadunut"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"yadunut"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"yadunut"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"yadunut"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"yadunut"},"content":" return \"[E] \" + super.toString() + \"(from: \" + start + \" to: \" + end + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"yadunut"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"yadunut"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"yadunut"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"yadunut"},"content":" return \"E | \" + (todoState \u003d\u003d TodoState.DONE ? \"1\" : \"0\") + \" | \" + task + \" | \" + start + \" | \" + end;","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"yadunut"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":78,"author":{"gitId":"yadunut"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":79,"author":{"gitId":"yadunut"},"content":"abstract class Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":80,"author":{"gitId":"yadunut"},"content":" TodoState todoState;","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"yadunut"},"content":" String task;","lastModifiedDate":"2024-01-24"},{"lineNumber":82,"author":{"gitId":"yadunut"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":83,"author":{"gitId":"yadunut"},"content":" public Task(String task) {","lastModifiedDate":"2024-01-24"},{"lineNumber":84,"author":{"gitId":"yadunut"},"content":" this.todoState \u003d TodoState.UNDONE;","lastModifiedDate":"2024-01-25"},{"lineNumber":85,"author":{"gitId":"yadunut"},"content":" this.task \u003d task;","lastModifiedDate":"2024-01-24"},{"lineNumber":86,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":87,"author":{"gitId":"yadunut"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":88,"author":{"gitId":"yadunut"},"content":" public Task(String task, TodoState todoState) {","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"yadunut"},"content":" this.todoState \u003d todoState;","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"yadunut"},"content":" this.task \u003d task;","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"yadunut"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"yadunut"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":94,"author":{"gitId":"yadunut"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":95,"author":{"gitId":"yadunut"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":96,"author":{"gitId":"yadunut"},"content":" return \"[\" + (todoState \u003d\u003d TodoState.DONE ? \"X\" : \" \") + \"] \" + task;","lastModifiedDate":"2024-01-25"},{"lineNumber":97,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":98,"author":{"gitId":"yadunut"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"yadunut"},"content":" public abstract String toFileString();","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"yadunut"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":101,"author":{"gitId":"yadunut"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":102,"author":{"gitId":"yadunut"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"yadunut"},"content":"class DukeException extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":104,"author":{"gitId":"yadunut"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-24"},{"lineNumber":105,"author":{"gitId":"yadunut"},"content":" super(message);","lastModifiedDate":"2024-01-24"},{"lineNumber":106,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":107,"author":{"gitId":"yadunut"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":108,"author":{"gitId":"yadunut"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":109,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":110,"author":{"gitId":"yadunut"},"content":" static String line \u003d \"____________________________________________________________\";","lastModifiedDate":"2024-01-24"},{"lineNumber":111,"author":{"gitId":"yadunut"},"content":" static String dataDir \u003d \"./data\";","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"yadunut"},"content":" static String dataPath \u003d dataDir + \"/duke.txt\";","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"yadunut"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":114,"author":{"gitId":"yadunut"},"content":" public static void main(String[] args) throws IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"yadunut"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":116,"author":{"gitId":"yadunut"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-24"},{"lineNumber":117,"author":{"gitId":"yadunut"},"content":" System.out.println(\"Hello! I\u0027m Brian\\nWhat can I do for you?\");","lastModifiedDate":"2024-01-24"},{"lineNumber":118,"author":{"gitId":"yadunut"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-24"},{"lineNumber":119,"author":{"gitId":"yadunut"},"content":" ArrayList\u003cTask\u003e data \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-24"},{"lineNumber":120,"author":{"gitId":"yadunut"},"content":" // Create file it it does not exist","lastModifiedDate":"2024-01-29"},{"lineNumber":121,"author":{"gitId":"yadunut"},"content":" new File(dataDir).mkdirs();","lastModifiedDate":"2024-01-29"},{"lineNumber":122,"author":{"gitId":"yadunut"},"content":" File file \u003d new File(dataPath);","lastModifiedDate":"2024-01-29"},{"lineNumber":123,"author":{"gitId":"yadunut"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-29"},{"lineNumber":124,"author":{"gitId":"yadunut"},"content":" // Read file","lastModifiedDate":"2024-01-29"},{"lineNumber":125,"author":{"gitId":"yadunut"},"content":" Scanner fileScanner \u003d new Scanner(file);","lastModifiedDate":"2024-01-29"},{"lineNumber":126,"author":{"gitId":"yadunut"},"content":" while (fileScanner.hasNext()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":127,"author":{"gitId":"yadunut"},"content":" String[] split \u003d fileScanner.nextLine().split(\" \\\\| \");","lastModifiedDate":"2024-01-29"},{"lineNumber":128,"author":{"gitId":"yadunut"},"content":" TodoState state \u003d split[1].equals(\"1\") ? TodoState.DONE : TodoState.UNDONE;","lastModifiedDate":"2024-01-29"},{"lineNumber":129,"author":{"gitId":"yadunut"},"content":" switch (split[0]) {","lastModifiedDate":"2024-01-29"},{"lineNumber":130,"author":{"gitId":"yadunut"},"content":" case \"T\": {","lastModifiedDate":"2024-01-29"},{"lineNumber":131,"author":{"gitId":"yadunut"},"content":" data.add(new Todo(split[2], state));","lastModifiedDate":"2024-01-29"},{"lineNumber":132,"author":{"gitId":"yadunut"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":133,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":134,"author":{"gitId":"yadunut"},"content":" case \"D\": {","lastModifiedDate":"2024-01-29"},{"lineNumber":135,"author":{"gitId":"yadunut"},"content":" data.add(new Deadline(split[2], split[3], state));","lastModifiedDate":"2024-01-29"},{"lineNumber":136,"author":{"gitId":"yadunut"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":137,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":138,"author":{"gitId":"yadunut"},"content":" case \"E\": {","lastModifiedDate":"2024-01-29"},{"lineNumber":139,"author":{"gitId":"yadunut"},"content":" data.add(new Event(split[2], split[3], split[4], state));","lastModifiedDate":"2024-01-29"},{"lineNumber":140,"author":{"gitId":"yadunut"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":141,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":142,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":143,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":144,"author":{"gitId":"yadunut"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-24"},{"lineNumber":145,"author":{"gitId":"yadunut"},"content":" while (true) {","lastModifiedDate":"2024-01-24"},{"lineNumber":146,"author":{"gitId":"yadunut"},"content":" String[] input \u003d sc.nextLine().split(\" \", 2);","lastModifiedDate":"2024-01-24"},{"lineNumber":147,"author":{"gitId":"yadunut"},"content":" String method \u003d input[0];","lastModifiedDate":"2024-01-24"},{"lineNumber":148,"author":{"gitId":"yadunut"},"content":" String params \u003d input.length \u003d\u003d 1 ? \"\" : input[1];","lastModifiedDate":"2024-01-24"},{"lineNumber":149,"author":{"gitId":"yadunut"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-24"},{"lineNumber":150,"author":{"gitId":"yadunut"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":151,"author":{"gitId":"yadunut"},"content":" switch (method) {","lastModifiedDate":"2024-01-24"},{"lineNumber":152,"author":{"gitId":"yadunut"},"content":" case \"list\": {","lastModifiedDate":"2024-01-24"},{"lineNumber":153,"author":{"gitId":"yadunut"},"content":" for (int i \u003d 0; i \u003c data.size(); i++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":154,"author":{"gitId":"yadunut"},"content":" System.out.printf(\"%d. %s\\n\", i + 1, data.get(i));","lastModifiedDate":"2024-01-24"},{"lineNumber":155,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":156,"author":{"gitId":"yadunut"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":157,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":158,"author":{"gitId":"yadunut"},"content":" case \"mark\": {","lastModifiedDate":"2024-01-24"},{"lineNumber":159,"author":{"gitId":"yadunut"},"content":" if (params.equals(\"\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":160,"author":{"gitId":"yadunut"},"content":" throw new DukeException(\"The id of a mark cannot be empty.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":161,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":162,"author":{"gitId":"yadunut"},"content":" int index \u003d Integer.parseInt(params) - 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":163,"author":{"gitId":"yadunut"},"content":" data.get(index).todoState \u003d TodoState.DONE;","lastModifiedDate":"2024-01-25"},{"lineNumber":164,"author":{"gitId":"yadunut"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":165,"author":{"gitId":"yadunut"},"content":" System.out.println(data.get(index));","lastModifiedDate":"2024-01-24"},{"lineNumber":166,"author":{"gitId":"yadunut"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":167,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":168,"author":{"gitId":"yadunut"},"content":" case \"unmark\": {","lastModifiedDate":"2024-01-24"},{"lineNumber":169,"author":{"gitId":"yadunut"},"content":" if (params.equals(\"\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":170,"author":{"gitId":"yadunut"},"content":" throw new DukeException(\"The id of a unmark cannot be empty.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":171,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":172,"author":{"gitId":"yadunut"},"content":" int index \u003d Integer.parseInt(params) - 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":173,"author":{"gitId":"yadunut"},"content":" data.get(index).todoState \u003d TodoState.UNDONE;","lastModifiedDate":"2024-01-25"},{"lineNumber":174,"author":{"gitId":"yadunut"},"content":" System.out.println(\"Okay! I\u0027ve marked this task as not done yet\");","lastModifiedDate":"2024-01-24"},{"lineNumber":175,"author":{"gitId":"yadunut"},"content":" System.out.println(data.get(index));","lastModifiedDate":"2024-01-24"},{"lineNumber":176,"author":{"gitId":"yadunut"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":177,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":178,"author":{"gitId":"yadunut"},"content":" case \"todo\": {","lastModifiedDate":"2024-01-24"},{"lineNumber":179,"author":{"gitId":"yadunut"},"content":" if (params.equals(\"\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":180,"author":{"gitId":"yadunut"},"content":" throw new DukeException(\"The description of a todo cannot be empty.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":181,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":182,"author":{"gitId":"yadunut"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":183,"author":{"gitId":"yadunut"},"content":" Task curr \u003d new Todo(params);","lastModifiedDate":"2024-01-24"},{"lineNumber":184,"author":{"gitId":"yadunut"},"content":" data.add(curr);","lastModifiedDate":"2024-01-24"},{"lineNumber":185,"author":{"gitId":"yadunut"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":186,"author":{"gitId":"yadunut"},"content":" System.out.println(curr);","lastModifiedDate":"2024-01-24"},{"lineNumber":187,"author":{"gitId":"yadunut"},"content":" System.out.printf(\"Now you have %d tasks in the list.\\n\", data.size());","lastModifiedDate":"2024-01-24"},{"lineNumber":188,"author":{"gitId":"yadunut"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":189,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":190,"author":{"gitId":"yadunut"},"content":" case \"deadline\": {","lastModifiedDate":"2024-01-24"},{"lineNumber":191,"author":{"gitId":"yadunut"},"content":" if (params.equals(\"\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":192,"author":{"gitId":"yadunut"},"content":" throw new DukeException(\"The description of a deadline cannot be empty.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":193,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":194,"author":{"gitId":"yadunut"},"content":" String[] split \u003d params.split(\" /by \", 2);","lastModifiedDate":"2024-01-24"},{"lineNumber":195,"author":{"gitId":"yadunut"},"content":" if (split.length \u003d\u003d 1) {","lastModifiedDate":"2024-01-24"},{"lineNumber":196,"author":{"gitId":"yadunut"},"content":" throw new DukeException(\"The deadline of a deadline cannot be empty.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":197,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":198,"author":{"gitId":"yadunut"},"content":" Task curr \u003d new Deadline(split[0], split[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":199,"author":{"gitId":"yadunut"},"content":" data.add(curr);","lastModifiedDate":"2024-01-24"},{"lineNumber":200,"author":{"gitId":"yadunut"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":201,"author":{"gitId":"yadunut"},"content":" System.out.println(curr);","lastModifiedDate":"2024-01-24"},{"lineNumber":202,"author":{"gitId":"yadunut"},"content":" System.out.printf(\"Now you have %d tasks in the list.\\n\", data.size());","lastModifiedDate":"2024-01-24"},{"lineNumber":203,"author":{"gitId":"yadunut"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":204,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":205,"author":{"gitId":"yadunut"},"content":" case \"event\": {","lastModifiedDate":"2024-01-24"},{"lineNumber":206,"author":{"gitId":"yadunut"},"content":" if (params.equals(\"\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":207,"author":{"gitId":"yadunut"},"content":" throw new DukeException(\"The description of a event cannot be empty.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":208,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":209,"author":{"gitId":"yadunut"},"content":" String[] split1 \u003d params.split(\" /from \", 2);","lastModifiedDate":"2024-01-24"},{"lineNumber":210,"author":{"gitId":"yadunut"},"content":" if (split1.length \u003d\u003d 1) {","lastModifiedDate":"2024-01-24"},{"lineNumber":211,"author":{"gitId":"yadunut"},"content":" throw new DukeException(\"The from of a event cannot be empty.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":212,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":213,"author":{"gitId":"yadunut"},"content":" String[] split2 \u003d split1[1].split(\" /to \", 2);","lastModifiedDate":"2024-01-24"},{"lineNumber":214,"author":{"gitId":"yadunut"},"content":" if (split2.length \u003d\u003d 1) {","lastModifiedDate":"2024-01-24"},{"lineNumber":215,"author":{"gitId":"yadunut"},"content":" throw new DukeException(\"The to of a event cannot be empty.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":216,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":217,"author":{"gitId":"yadunut"},"content":" Task curr \u003d new Event(split1[0], split2[0], split2[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":218,"author":{"gitId":"yadunut"},"content":" data.add(curr);","lastModifiedDate":"2024-01-24"},{"lineNumber":219,"author":{"gitId":"yadunut"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":220,"author":{"gitId":"yadunut"},"content":" System.out.println(curr);","lastModifiedDate":"2024-01-24"},{"lineNumber":221,"author":{"gitId":"yadunut"},"content":" System.out.printf(\"Now you have %d tasks in the list.\\n\", data.size());","lastModifiedDate":"2024-01-24"},{"lineNumber":222,"author":{"gitId":"yadunut"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":223,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":224,"author":{"gitId":"yadunut"},"content":" case \"delete\": {","lastModifiedDate":"2024-01-24"},{"lineNumber":225,"author":{"gitId":"yadunut"},"content":" if (params.equals(\"\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":226,"author":{"gitId":"yadunut"},"content":" throw new DukeException(\"The id of a delete cannot be empty.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":227,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":228,"author":{"gitId":"yadunut"},"content":" int index \u003d Integer.parseInt(params) - 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":229,"author":{"gitId":"yadunut"},"content":" Task curr \u003d data.get(index - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":230,"author":{"gitId":"yadunut"},"content":" data.remove(index);","lastModifiedDate":"2024-01-24"},{"lineNumber":231,"author":{"gitId":"yadunut"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":232,"author":{"gitId":"yadunut"},"content":" System.out.println(curr);","lastModifiedDate":"2024-01-24"},{"lineNumber":233,"author":{"gitId":"yadunut"},"content":" System.out.printf(\"Now you have %d tasks in the list.\\n\", data.size());","lastModifiedDate":"2024-01-24"},{"lineNumber":234,"author":{"gitId":"yadunut"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":235,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":236,"author":{"gitId":"yadunut"},"content":" case \"bye\": {","lastModifiedDate":"2024-01-24"},{"lineNumber":237,"author":{"gitId":"yadunut"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-24"},{"lineNumber":238,"author":{"gitId":"yadunut"},"content":" // write to disk","lastModifiedDate":"2024-01-29"},{"lineNumber":239,"author":{"gitId":"yadunut"},"content":" file.delete();","lastModifiedDate":"2024-01-29"},{"lineNumber":240,"author":{"gitId":"yadunut"},"content":" Writer fileWriter \u003d new FileWriter(file);","lastModifiedDate":"2024-01-29"},{"lineNumber":241,"author":{"gitId":"yadunut"},"content":" for (Task task: data) {","lastModifiedDate":"2024-01-29"},{"lineNumber":242,"author":{"gitId":"yadunut"},"content":" fileWriter.write(task.toFileString() + \"\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":243,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":244,"author":{"gitId":"yadunut"},"content":" fileWriter.flush();","lastModifiedDate":"2024-01-29"},{"lineNumber":245,"author":{"gitId":"yadunut"},"content":" fileWriter.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":246,"author":{"gitId":"yadunut"},"content":" System.exit(0);","lastModifiedDate":"2024-01-24"},{"lineNumber":247,"author":{"gitId":"yadunut"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":248,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":249,"author":{"gitId":"yadunut"},"content":" default: {","lastModifiedDate":"2024-01-24"},{"lineNumber":250,"author":{"gitId":"yadunut"},"content":" throw new DukeException(\"I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2024-01-24"},{"lineNumber":251,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":252,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":253,"author":{"gitId":"yadunut"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":254,"author":{"gitId":"yadunut"},"content":" System.out.println(\"OOPS!!! \" + e.getMessage());","lastModifiedDate":"2024-01-24"},{"lineNumber":255,"author":{"gitId":"yadunut"},"content":" } finally {","lastModifiedDate":"2024-01-24"},{"lineNumber":256,"author":{"gitId":"yadunut"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-24"},{"lineNumber":257,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":258,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":259,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":260,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"yadunut":255,"-":5}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"yadunut"},"content":"todo first","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"yadunut"},"content":"deadline second /by 2019-10-15","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"yadunut"},"content":"event third /from 2019-10-15 /to 2019-10-16","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"yadunut"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"yadunut"},"content":"mark 1","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"yadunut"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"yadunut"},"content":"unmark 1","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"yadunut"},"content":"delete 2","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"yadunut"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"yadunut"},"content":"bye","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"yadunut":10}}] +[{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yadunut"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"yadunut"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"yadunut"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"yadunut"},"content":"import java.io.Writer;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"yadunut"},"content":"import java.text.ParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"yadunut"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"yadunut"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"yadunut"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"yadunut"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"yadunut"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"yadunut"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"yadunut"},"content":"class Utils {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"yadunut"},"content":" static DateTimeFormatter dateFormat \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy\");","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"yadunut"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"yadunut"},"content":" static LocalDate parseDate(String date) {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"yadunut"},"content":" return LocalDate.parse(date, dateFormat);","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"yadunut"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"yadunut"},"content":" static String formatDate(LocalDate date) {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"yadunut"},"content":" return date.format(dateFormat);","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"yadunut"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"yadunut"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"yadunut"},"content":"enum TodoState {","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"yadunut"},"content":" UNDONE, DONE","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"yadunut"},"content":"}","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"yadunut"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"yadunut"},"content":"class Todo extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"yadunut"},"content":" public Todo(String task) {","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"yadunut"},"content":" super(task);","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"yadunut"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"yadunut"},"content":" public Todo(String task, TodoState todoState) {","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"yadunut"},"content":" super(task, todoState);","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"yadunut"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"yadunut"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"yadunut"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"yadunut"},"content":" return \"[T] \" + super.toString();","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"yadunut"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"yadunut"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"yadunut"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"yadunut"},"content":" return \"T | \" + (todoState \u003d\u003d TodoState.DONE ? \"1\" : \"0\") + \" | \" + task;","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"yadunut"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"yadunut"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"yadunut"},"content":"class Deadline extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"yadunut"},"content":" LocalDate deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"yadunut"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"yadunut"},"content":" public Deadline(String task, LocalDate deadline) {","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"yadunut"},"content":" super(task);","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"yadunut"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"yadunut"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"yadunut"},"content":" public Deadline(String task, LocalDate deadline, TodoState todoState) {","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"yadunut"},"content":" super(task, todoState);","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"yadunut"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"yadunut"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"yadunut"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"yadunut"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"yadunut"},"content":" return \"[D] \" + super.toString() + \"(by: \" + deadline + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"yadunut"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"yadunut"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"yadunut"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"yadunut"},"content":" return \"D | \" + (todoState \u003d\u003d TodoState.DONE ? \"1\" : \"0\") + \" | \" + task + \" | \" + Utils.formatDate(deadline);","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"yadunut"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"yadunut"},"content":"class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":73,"author":{"gitId":"yadunut"},"content":" LocalDate start;","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"yadunut"},"content":" LocalDate end;","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"yadunut"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":76,"author":{"gitId":"yadunut"},"content":" public Event(String task, LocalDate start, LocalDate end) {","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"yadunut"},"content":" super(task);","lastModifiedDate":"2024-01-24"},{"lineNumber":78,"author":{"gitId":"yadunut"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-24"},{"lineNumber":79,"author":{"gitId":"yadunut"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-24"},{"lineNumber":80,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":81,"author":{"gitId":"yadunut"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":82,"author":{"gitId":"yadunut"},"content":" public Event(String task, LocalDate start, LocalDate end, TodoState todoState) {","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"yadunut"},"content":" super(task, todoState);","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"yadunut"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"yadunut"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"yadunut"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"yadunut"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":89,"author":{"gitId":"yadunut"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":90,"author":{"gitId":"yadunut"},"content":" return \"[E] \" + super.toString() + \"(from: \" + start + \" to: \" + end + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":91,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":92,"author":{"gitId":"yadunut"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"yadunut"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"yadunut"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"yadunut"},"content":" return \"E | \" + (todoState \u003d\u003d TodoState.DONE ? \"1\" : \"0\") + \" | \" + task + \" | \" + Utils.formatDate(start) + \" | \" + Utils.formatDate(end);","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"yadunut"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":98,"author":{"gitId":"yadunut"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":99,"author":{"gitId":"yadunut"},"content":"abstract class Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":100,"author":{"gitId":"yadunut"},"content":" TodoState todoState;","lastModifiedDate":"2024-01-25"},{"lineNumber":101,"author":{"gitId":"yadunut"},"content":" String task;","lastModifiedDate":"2024-01-24"},{"lineNumber":102,"author":{"gitId":"yadunut"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":103,"author":{"gitId":"yadunut"},"content":" public Task(String task) {","lastModifiedDate":"2024-01-24"},{"lineNumber":104,"author":{"gitId":"yadunut"},"content":" this.todoState \u003d TodoState.UNDONE;","lastModifiedDate":"2024-01-25"},{"lineNumber":105,"author":{"gitId":"yadunut"},"content":" this.task \u003d task;","lastModifiedDate":"2024-01-24"},{"lineNumber":106,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":107,"author":{"gitId":"yadunut"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":108,"author":{"gitId":"yadunut"},"content":" public Task(String task, TodoState todoState) {","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"yadunut"},"content":" this.todoState \u003d todoState;","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"yadunut"},"content":" this.task \u003d task;","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"yadunut"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"yadunut"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":114,"author":{"gitId":"yadunut"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":115,"author":{"gitId":"yadunut"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":116,"author":{"gitId":"yadunut"},"content":" return \"[\" + (todoState \u003d\u003d TodoState.DONE ? \"X\" : \" \") + \"] \" + task;","lastModifiedDate":"2024-01-25"},{"lineNumber":117,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":118,"author":{"gitId":"yadunut"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":119,"author":{"gitId":"yadunut"},"content":" public abstract String toFileString();","lastModifiedDate":"2024-01-29"},{"lineNumber":120,"author":{"gitId":"yadunut"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":121,"author":{"gitId":"yadunut"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":122,"author":{"gitId":"yadunut"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":123,"author":{"gitId":"yadunut"},"content":"class DukeException extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":124,"author":{"gitId":"yadunut"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-24"},{"lineNumber":125,"author":{"gitId":"yadunut"},"content":" super(message);","lastModifiedDate":"2024-01-24"},{"lineNumber":126,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":127,"author":{"gitId":"yadunut"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":128,"author":{"gitId":"yadunut"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":129,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":130,"author":{"gitId":"yadunut"},"content":" static String line \u003d \"____________________________________________________________\";","lastModifiedDate":"2024-01-24"},{"lineNumber":131,"author":{"gitId":"yadunut"},"content":" static String dataDir \u003d \"./data\";","lastModifiedDate":"2024-01-29"},{"lineNumber":132,"author":{"gitId":"yadunut"},"content":" static String dataPath \u003d dataDir + \"/duke.txt\";","lastModifiedDate":"2024-01-29"},{"lineNumber":133,"author":{"gitId":"yadunut"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":134,"author":{"gitId":"yadunut"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":135,"author":{"gitId":"yadunut"},"content":" public static void main(String[] args) throws IOException, ParseException {","lastModifiedDate":"2024-01-30"},{"lineNumber":136,"author":{"gitId":"yadunut"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":137,"author":{"gitId":"yadunut"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-24"},{"lineNumber":138,"author":{"gitId":"yadunut"},"content":" System.out.println(\"Hello! I\u0027m Brian\\nWhat can I do for you?\");","lastModifiedDate":"2024-01-24"},{"lineNumber":139,"author":{"gitId":"yadunut"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-24"},{"lineNumber":140,"author":{"gitId":"yadunut"},"content":" ArrayList\u003cTask\u003e data \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-24"},{"lineNumber":141,"author":{"gitId":"yadunut"},"content":" // Create file if it does not exist","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"yadunut"},"content":" new File(dataDir).mkdirs();","lastModifiedDate":"2024-01-29"},{"lineNumber":143,"author":{"gitId":"yadunut"},"content":" File file \u003d new File(dataPath);","lastModifiedDate":"2024-01-29"},{"lineNumber":144,"author":{"gitId":"yadunut"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-29"},{"lineNumber":145,"author":{"gitId":"yadunut"},"content":" // Read file","lastModifiedDate":"2024-01-29"},{"lineNumber":146,"author":{"gitId":"yadunut"},"content":" Scanner fileScanner \u003d new Scanner(file);","lastModifiedDate":"2024-01-29"},{"lineNumber":147,"author":{"gitId":"yadunut"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":148,"author":{"gitId":"yadunut"},"content":" while (fileScanner.hasNext()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":149,"author":{"gitId":"yadunut"},"content":" String[] split \u003d fileScanner.nextLine().split(\" \\\\| \");","lastModifiedDate":"2024-01-29"},{"lineNumber":150,"author":{"gitId":"yadunut"},"content":" TodoState state \u003d split[1].equals(\"1\") ? TodoState.DONE : TodoState.UNDONE;","lastModifiedDate":"2024-01-29"},{"lineNumber":151,"author":{"gitId":"yadunut"},"content":" switch (split[0]) {","lastModifiedDate":"2024-01-29"},{"lineNumber":152,"author":{"gitId":"yadunut"},"content":" case \"T\": {","lastModifiedDate":"2024-01-29"},{"lineNumber":153,"author":{"gitId":"yadunut"},"content":" data.add(new Todo(split[2], state));","lastModifiedDate":"2024-01-29"},{"lineNumber":154,"author":{"gitId":"yadunut"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":155,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":156,"author":{"gitId":"yadunut"},"content":" case \"D\": {","lastModifiedDate":"2024-01-29"},{"lineNumber":157,"author":{"gitId":"yadunut"},"content":" data.add(new Deadline(split[2], Utils.parseDate(split[3]), state));","lastModifiedDate":"2024-01-30"},{"lineNumber":158,"author":{"gitId":"yadunut"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":159,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":160,"author":{"gitId":"yadunut"},"content":" case \"E\": {","lastModifiedDate":"2024-01-29"},{"lineNumber":161,"author":{"gitId":"yadunut"},"content":" data.add(new Event(split[2], Utils.parseDate(split[3]), Utils.parseDate(split[4]), state));","lastModifiedDate":"2024-01-30"},{"lineNumber":162,"author":{"gitId":"yadunut"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":163,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":164,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":165,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":166,"author":{"gitId":"yadunut"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":167,"author":{"gitId":"yadunut"},"content":" System.out.println(\"Error reading file\");","lastModifiedDate":"2024-01-30"},{"lineNumber":168,"author":{"gitId":"yadunut"},"content":" data.clear();","lastModifiedDate":"2024-01-30"},{"lineNumber":169,"author":{"gitId":"yadunut"},"content":" } finally {","lastModifiedDate":"2024-01-30"},{"lineNumber":170,"author":{"gitId":"yadunut"},"content":" fileScanner.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":171,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":172,"author":{"gitId":"yadunut"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-24"},{"lineNumber":173,"author":{"gitId":"yadunut"},"content":" while (true) {","lastModifiedDate":"2024-01-24"},{"lineNumber":174,"author":{"gitId":"yadunut"},"content":" String[] input \u003d sc.nextLine().split(\" \", 2);","lastModifiedDate":"2024-01-24"},{"lineNumber":175,"author":{"gitId":"yadunut"},"content":" String method \u003d input[0];","lastModifiedDate":"2024-01-24"},{"lineNumber":176,"author":{"gitId":"yadunut"},"content":" String params \u003d input.length \u003d\u003d 1 ? \"\" : input[1];","lastModifiedDate":"2024-01-24"},{"lineNumber":177,"author":{"gitId":"yadunut"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-24"},{"lineNumber":178,"author":{"gitId":"yadunut"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":179,"author":{"gitId":"yadunut"},"content":" switch (method) {","lastModifiedDate":"2024-01-24"},{"lineNumber":180,"author":{"gitId":"yadunut"},"content":" case \"list\": {","lastModifiedDate":"2024-01-24"},{"lineNumber":181,"author":{"gitId":"yadunut"},"content":" for (int i \u003d 0; i \u003c data.size(); i++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":182,"author":{"gitId":"yadunut"},"content":" System.out.printf(\"%d. %s\\n\", i + 1, data.get(i));","lastModifiedDate":"2024-01-24"},{"lineNumber":183,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":184,"author":{"gitId":"yadunut"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":185,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":186,"author":{"gitId":"yadunut"},"content":" case \"mark\": {","lastModifiedDate":"2024-01-24"},{"lineNumber":187,"author":{"gitId":"yadunut"},"content":" if (params.equals(\"\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":188,"author":{"gitId":"yadunut"},"content":" throw new DukeException(\"The id of a mark cannot be empty.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":189,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":190,"author":{"gitId":"yadunut"},"content":" int index \u003d Integer.parseInt(params) - 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":191,"author":{"gitId":"yadunut"},"content":" data.get(index).todoState \u003d TodoState.DONE;","lastModifiedDate":"2024-01-25"},{"lineNumber":192,"author":{"gitId":"yadunut"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":193,"author":{"gitId":"yadunut"},"content":" System.out.println(data.get(index));","lastModifiedDate":"2024-01-24"},{"lineNumber":194,"author":{"gitId":"yadunut"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":195,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":196,"author":{"gitId":"yadunut"},"content":" case \"unmark\": {","lastModifiedDate":"2024-01-24"},{"lineNumber":197,"author":{"gitId":"yadunut"},"content":" if (params.equals(\"\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":198,"author":{"gitId":"yadunut"},"content":" throw new DukeException(\"The id of a unmark cannot be empty.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":199,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":200,"author":{"gitId":"yadunut"},"content":" int index \u003d Integer.parseInt(params) - 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":201,"author":{"gitId":"yadunut"},"content":" data.get(index).todoState \u003d TodoState.UNDONE;","lastModifiedDate":"2024-01-25"},{"lineNumber":202,"author":{"gitId":"yadunut"},"content":" System.out.println(\"Okay! I\u0027ve marked this task as not done yet\");","lastModifiedDate":"2024-01-24"},{"lineNumber":203,"author":{"gitId":"yadunut"},"content":" System.out.println(data.get(index));","lastModifiedDate":"2024-01-24"},{"lineNumber":204,"author":{"gitId":"yadunut"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":205,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":206,"author":{"gitId":"yadunut"},"content":" case \"todo\": {","lastModifiedDate":"2024-01-24"},{"lineNumber":207,"author":{"gitId":"yadunut"},"content":" if (params.equals(\"\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":208,"author":{"gitId":"yadunut"},"content":" throw new DukeException(\"The description of a todo cannot be empty.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":209,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":210,"author":{"gitId":"yadunut"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":211,"author":{"gitId":"yadunut"},"content":" Task curr \u003d new Todo(params);","lastModifiedDate":"2024-01-24"},{"lineNumber":212,"author":{"gitId":"yadunut"},"content":" data.add(curr);","lastModifiedDate":"2024-01-24"},{"lineNumber":213,"author":{"gitId":"yadunut"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":214,"author":{"gitId":"yadunut"},"content":" System.out.println(curr);","lastModifiedDate":"2024-01-24"},{"lineNumber":215,"author":{"gitId":"yadunut"},"content":" System.out.printf(\"Now you have %d tasks in the list.\\n\", data.size());","lastModifiedDate":"2024-01-24"},{"lineNumber":216,"author":{"gitId":"yadunut"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":217,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":218,"author":{"gitId":"yadunut"},"content":" case \"deadline\": {","lastModifiedDate":"2024-01-24"},{"lineNumber":219,"author":{"gitId":"yadunut"},"content":" if (params.equals(\"\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":220,"author":{"gitId":"yadunut"},"content":" throw new DukeException(\"The description of a deadline cannot be empty.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":221,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":222,"author":{"gitId":"yadunut"},"content":" String[] split \u003d params.split(\" /by \", 2);","lastModifiedDate":"2024-01-24"},{"lineNumber":223,"author":{"gitId":"yadunut"},"content":" if (split.length \u003d\u003d 1) {","lastModifiedDate":"2024-01-24"},{"lineNumber":224,"author":{"gitId":"yadunut"},"content":" throw new DukeException(\"The deadline of a deadline cannot be empty.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":225,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":226,"author":{"gitId":"yadunut"},"content":" Task curr \u003d new Deadline(split[0], Utils.parseDate(split[1]));","lastModifiedDate":"2024-01-30"},{"lineNumber":227,"author":{"gitId":"yadunut"},"content":" data.add(curr);","lastModifiedDate":"2024-01-24"},{"lineNumber":228,"author":{"gitId":"yadunut"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":229,"author":{"gitId":"yadunut"},"content":" System.out.println(curr);","lastModifiedDate":"2024-01-24"},{"lineNumber":230,"author":{"gitId":"yadunut"},"content":" System.out.printf(\"Now you have %d tasks in the list.\\n\", data.size());","lastModifiedDate":"2024-01-24"},{"lineNumber":231,"author":{"gitId":"yadunut"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":232,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":233,"author":{"gitId":"yadunut"},"content":" case \"event\": {","lastModifiedDate":"2024-01-24"},{"lineNumber":234,"author":{"gitId":"yadunut"},"content":" if (params.equals(\"\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":235,"author":{"gitId":"yadunut"},"content":" throw new DukeException(\"The description of a event cannot be empty.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":236,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":237,"author":{"gitId":"yadunut"},"content":" String[] split1 \u003d params.split(\" /from \", 2);","lastModifiedDate":"2024-01-24"},{"lineNumber":238,"author":{"gitId":"yadunut"},"content":" if (split1.length \u003d\u003d 1) {","lastModifiedDate":"2024-01-24"},{"lineNumber":239,"author":{"gitId":"yadunut"},"content":" throw new DukeException(\"The from of a event cannot be empty.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":240,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":241,"author":{"gitId":"yadunut"},"content":" String[] split2 \u003d split1[1].split(\" /to \", 2);","lastModifiedDate":"2024-01-24"},{"lineNumber":242,"author":{"gitId":"yadunut"},"content":" if (split2.length \u003d\u003d 1) {","lastModifiedDate":"2024-01-24"},{"lineNumber":243,"author":{"gitId":"yadunut"},"content":" throw new DukeException(\"The to of a event cannot be empty.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":244,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":245,"author":{"gitId":"yadunut"},"content":" Task curr \u003d new Event(split1[0], Utils.parseDate(split2[0]), Utils.parseDate(split2[1]));","lastModifiedDate":"2024-01-30"},{"lineNumber":246,"author":{"gitId":"yadunut"},"content":" data.add(curr);","lastModifiedDate":"2024-01-24"},{"lineNumber":247,"author":{"gitId":"yadunut"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":248,"author":{"gitId":"yadunut"},"content":" System.out.println(curr);","lastModifiedDate":"2024-01-24"},{"lineNumber":249,"author":{"gitId":"yadunut"},"content":" System.out.printf(\"Now you have %d tasks in the list.\\n\", data.size());","lastModifiedDate":"2024-01-24"},{"lineNumber":250,"author":{"gitId":"yadunut"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":251,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":252,"author":{"gitId":"yadunut"},"content":" case \"delete\": {","lastModifiedDate":"2024-01-24"},{"lineNumber":253,"author":{"gitId":"yadunut"},"content":" if (params.equals(\"\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":254,"author":{"gitId":"yadunut"},"content":" throw new DukeException(\"The id of a delete cannot be empty.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":255,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":256,"author":{"gitId":"yadunut"},"content":" int index \u003d Integer.parseInt(params) - 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":257,"author":{"gitId":"yadunut"},"content":" Task curr \u003d data.get(index - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":258,"author":{"gitId":"yadunut"},"content":" data.remove(index);","lastModifiedDate":"2024-01-24"},{"lineNumber":259,"author":{"gitId":"yadunut"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":260,"author":{"gitId":"yadunut"},"content":" System.out.println(curr);","lastModifiedDate":"2024-01-24"},{"lineNumber":261,"author":{"gitId":"yadunut"},"content":" System.out.printf(\"Now you have %d tasks in the list.\\n\", data.size());","lastModifiedDate":"2024-01-24"},{"lineNumber":262,"author":{"gitId":"yadunut"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":263,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":264,"author":{"gitId":"yadunut"},"content":" case \"bye\": {","lastModifiedDate":"2024-01-24"},{"lineNumber":265,"author":{"gitId":"yadunut"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-24"},{"lineNumber":266,"author":{"gitId":"yadunut"},"content":" // write to disk","lastModifiedDate":"2024-01-29"},{"lineNumber":267,"author":{"gitId":"yadunut"},"content":" file.delete();","lastModifiedDate":"2024-01-29"},{"lineNumber":268,"author":{"gitId":"yadunut"},"content":" Writer fileWriter \u003d new FileWriter(file);","lastModifiedDate":"2024-01-29"},{"lineNumber":269,"author":{"gitId":"yadunut"},"content":" for (Task task : data) {","lastModifiedDate":"2024-01-29"},{"lineNumber":270,"author":{"gitId":"yadunut"},"content":" fileWriter.write(task.toFileString() + \"\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":271,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":272,"author":{"gitId":"yadunut"},"content":" fileWriter.flush();","lastModifiedDate":"2024-01-29"},{"lineNumber":273,"author":{"gitId":"yadunut"},"content":" fileWriter.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":274,"author":{"gitId":"yadunut"},"content":" System.exit(0);","lastModifiedDate":"2024-01-24"},{"lineNumber":275,"author":{"gitId":"yadunut"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":276,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":277,"author":{"gitId":"yadunut"},"content":" default: {","lastModifiedDate":"2024-01-24"},{"lineNumber":278,"author":{"gitId":"yadunut"},"content":" throw new DukeException(\"I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2024-01-24"},{"lineNumber":279,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":280,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":281,"author":{"gitId":"yadunut"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":282,"author":{"gitId":"yadunut"},"content":" System.out.println(\"OOPS!!! \" + e.getMessage());","lastModifiedDate":"2024-01-24"},{"lineNumber":283,"author":{"gitId":"yadunut"},"content":" } finally {","lastModifiedDate":"2024-01-24"},{"lineNumber":284,"author":{"gitId":"yadunut"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-24"},{"lineNumber":285,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":286,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":287,"author":{"gitId":"yadunut"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":288,"author":{"gitId":"yadunut"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"yadunut":283,"-":5}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"yadunut"},"content":"todo first","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"yadunut"},"content":"deadline second /by 01/02/2025","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"yadunut"},"content":"event third /from 05/12/2025 /to 13/12/2025","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"yadunut"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"yadunut"},"content":"mark 1","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"yadunut"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"yadunut"},"content":"unmark 1","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"yadunut"},"content":"delete 2","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"yadunut"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"yadunut"},"content":"bye","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"yadunut":10}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"yadunut"},"content":"if [ -e \"data/duke.txt\" ]","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"yadunut"},"content":"then","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"yadunut"},"content":" rm \"data/duke.txt\"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"yadunut"},"content":"fi","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"yadunut"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"java -classpath ../bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"yadunut"},"content":"if [ -e \"data/duke.txt\" ]","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"yadunut"},"content":"then","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"yadunut"},"content":" rm \"data/duke.txt\"","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"yadunut"},"content":"fi","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"yadunut"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":49,"author":{"gitId":"yadunut"},"content":"","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"yadunut":11,"-":38}}] diff --git a/yadunut_ip_master/commits.json b/yadunut_ip_master/commits.json index 4f4a0af8..79dedd82 100644 --- a/yadunut_ip_master/commits.json +++ b/yadunut_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"yadunut":[{"date":"2024-01-24","commitResults":[{"hash":"f6bd5209431800ae77001741174ea5483080d115","isMergeCommit":false,"messageTitle":"feat: Add name of bot","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":6}}},{"hash":"3d77c469958d6ba094e7726d2af10c94d68c4e8c","isMergeCommit":false,"messageTitle":"feat: add ability to echo back and quit on bye","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":3}}},{"hash":"890c51e95eaeefe96aa17a060d7e747f7b2bdd08","isMergeCommit":false,"messageTitle":"feat: add ability to mark tasks as done and undone","messageBody":"","tags":["Level-3","Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":55,"deletions":6}}},{"hash":"fa980e5933330fafb763843d98bf57249bad3d2b","isMergeCommit":false,"messageTitle":"feat: add todos, deadlines and tasks","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":82,"deletions":14}}},{"hash":"0d617967bed7f32a281ac45b7d544990e18844c8","isMergeCommit":false,"messageTitle":"feat: add error checking","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":86,"deletions":54}}},{"hash":"191ad1d5010ce532176b7d078e08ce1a37399276","isMergeCommit":false,"messageTitle":"feat: add task deletion","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":0}}}]},{"date":"2024-01-25","commitResults":[{"hash":"3ed41346a953047c906c54a126437a978d343d19","isMergeCommit":false,"messageTitle":"feat: add enums to manage todo state","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":5}}}]},{"date":"2024-01-26","commitResults":[{"hash":"c355b73793e38eb512f8f4db259eac0488562047","isMergeCommit":false,"messageTitle":"chore: add ui tests","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0}}}]},{"date":"2024-01-29","commitResults":[{"hash":"924c0beb7cc21b5db1f6f2a6a6db0697c4a403a9","isMergeCommit":false,"messageTitle":"Add Parser and Writer for writing to files","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":74,"deletions":4}}},{"hash":"35d6ac488c7102914d5af1c6d38b35efd7f76696","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"yadunut":{"java":255,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":10}},"authorContributionVariance":{"yadunut":9524.413},"authorDisplayNameMap":{"yadunut":"CS2103T-W12-2 YADU..PREM"}} +{"authorDailyContributionsMap":{"yadunut":[{"date":"2024-01-24","commitResults":[{"hash":"f6bd5209431800ae77001741174ea5483080d115","isMergeCommit":false,"messageTitle":"feat: Add name of bot","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":6}}},{"hash":"3d77c469958d6ba094e7726d2af10c94d68c4e8c","isMergeCommit":false,"messageTitle":"feat: add ability to echo back and quit on bye","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":3}}},{"hash":"890c51e95eaeefe96aa17a060d7e747f7b2bdd08","isMergeCommit":false,"messageTitle":"feat: add ability to mark tasks as done and undone","messageBody":"","tags":["Level-3","Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":55,"deletions":6}}},{"hash":"fa980e5933330fafb763843d98bf57249bad3d2b","isMergeCommit":false,"messageTitle":"feat: add todos, deadlines and tasks","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":82,"deletions":14}}},{"hash":"0d617967bed7f32a281ac45b7d544990e18844c8","isMergeCommit":false,"messageTitle":"feat: add error checking","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":86,"deletions":54}}},{"hash":"191ad1d5010ce532176b7d078e08ce1a37399276","isMergeCommit":false,"messageTitle":"feat: add task deletion","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":0}}}]},{"date":"2024-01-25","commitResults":[{"hash":"3ed41346a953047c906c54a126437a978d343d19","isMergeCommit":false,"messageTitle":"feat: add enums to manage todo state","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":5}}}]},{"date":"2024-01-26","commitResults":[{"hash":"c355b73793e38eb512f8f4db259eac0488562047","isMergeCommit":false,"messageTitle":"chore: add ui tests","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0}}}]},{"date":"2024-01-29","commitResults":[{"hash":"924c0beb7cc21b5db1f6f2a6a6db0697c4a403a9","isMergeCommit":false,"messageTitle":"Add Parser and Writer for writing to files","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":74,"deletions":4}}},{"hash":"35d6ac488c7102914d5af1c6d38b35efd7f76696","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-30","commitResults":[{"hash":"f71cdc10016e102953a6a7da8e9dbf368a1e0a77","isMergeCommit":false,"messageTitle":"Modify Tasks to support dates","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":15}}},{"hash":"cca5f8b0e1f08b5ea80353d6b2483ae4e8e06b4d","isMergeCommit":false,"messageTitle":"Move parsing to a utility function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":21}}},{"hash":"f2cdaa5cdb542bc16b0b3198455808d87662288d","isMergeCommit":false,"messageTitle":"Update ui tests with the new features","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":3},"sh":{"insertions":12,"deletions":1}}},{"hash":"5adbeeeffa6d5bea9646442e0d27a9e849e7bf90","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"yadunut":{"java":283,"md":0,"fxml":0,"sh":11,"bat":0,"gradle":0,"txt":10}},"authorContributionVariance":{"yadunut":9203.077},"authorDisplayNameMap":{"yadunut":"CS2103T-W12-2 YADU..PREM"}} diff --git a/yashma-sonara_ip_master/authorship.json b/yashma-sonara_ip_master/authorship.json index 4dad591d..b8f29413 100644 --- a/yashma-sonara_ip_master/authorship.json +++ b/yashma-sonara_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yashma-sonara"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"yashma-sonara"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"yashma-sonara"},"content":"public class Deadline extends Task{","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"yashma-sonara"},"content":" protected LocalDate by;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"yashma-sonara"},"content":" protected String originalBy;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"yashma-sonara"},"content":" private static final DateTimeFormatter OUTPUT_DATE_FORMATTER \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy\");","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"yashma-sonara"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"yashma-sonara"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"yashma-sonara"},"content":" this.originalBy \u003d by;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"yashma-sonara"},"content":" this.by \u003d LocalDate.parse(by, DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"yashma-sonara"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"yashma-sonara"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"yashma-sonara"},"content":" // Format: D | 0/1 | description | by date","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"yashma-sonara"},"content":" return \"D | \" + (isDone ? \"1\" : \"0\") + \" | \" + description + \" | \" + this.originalBy;","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"yashma-sonara"},"content":" public String getBy() {","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"yashma-sonara"},"content":" return \" (by: \" + this.by.format(OUTPUT_DATE_FORMATTER) + \")\";","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"yashma-sonara"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"yashma-sonara"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"yashma-sonara"},"content":" return \"[D]\" + super.toString() + this.getBy();","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"yashma-sonara"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yashma-sonara":29}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yashma-sonara"},"content":"import java.io.File;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"yashma-sonara"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"yashma-sonara"},"content":"import java.io.FileReader;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"yashma-sonara"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"yashma-sonara"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"yashma-sonara"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-20"},{"lineNumber":7,"author":{"gitId":"yashma-sonara"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-20"},{"lineNumber":8,"author":{"gitId":"yashma-sonara"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"yashma-sonara"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"yashma-sonara"},"content":"import java.time.temporal.ChronoUnit;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"yashma-sonara"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":13,"author":{"gitId":"yashma-sonara"},"content":" public enum Command {","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"yashma-sonara"},"content":" BYE, LIST, MARK, DELETE, TODO, DEADLINE, EVENT, UNKNOWN","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"yashma-sonara"},"content":" private static final String FILE_PATH \u003d \"./data/duke.txt\";","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":20,"author":{"gitId":"yashma-sonara"},"content":" String logo \u003d \"Chucklbot\";","lastModifiedDate":"2024-01-20"},{"lineNumber":21,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(\"Hello I\u0027m \" + logo + \"\\nWhat can I do for you? \\n \");","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"yashma-sonara"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-20"},{"lineNumber":23,"author":{"gitId":"yashma-sonara"},"content":" ArrayList\u003cTask\u003e store \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-21"},{"lineNumber":24,"author":{"gitId":"yashma-sonara"},"content":" loadTasks(store);","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":26,"author":{"gitId":"yashma-sonara"},"content":" String byeMessage \u003d \"Bye! Hope to see you again soon.\";","lastModifiedDate":"2024-01-20"},{"lineNumber":27,"author":{"gitId":"yashma-sonara"},"content":" while (true) {","lastModifiedDate":"2024-01-20"},{"lineNumber":28,"author":{"gitId":"yashma-sonara"},"content":" Command command \u003d getCommand(sc.next());","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"yashma-sonara"},"content":" switch (command) {","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"yashma-sonara"},"content":" case BYE:","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(byeMessage);","lastModifiedDate":"2024-01-20"},{"lineNumber":32,"author":{"gitId":"yashma-sonara"},"content":" return;","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"yashma-sonara"},"content":" case LIST:","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"yashma-sonara"},"content":" displayTasks(store);","lastModifiedDate":"2024-01-20"},{"lineNumber":35,"author":{"gitId":"yashma-sonara"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"yashma-sonara"},"content":" case MARK:","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"yashma-sonara"},"content":" if (sc.hasNextInt()) {","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"yashma-sonara"},"content":" int num \u003d sc.nextInt();","lastModifiedDate":"2024-01-21"},{"lineNumber":39,"author":{"gitId":"yashma-sonara"},"content":" store.get(num - 1).setStatus();","lastModifiedDate":"2024-01-21"},{"lineNumber":40,"author":{"gitId":"yashma-sonara"},"content":" } else {","lastModifiedDate":"2024-01-20"},{"lineNumber":41,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(\"Please enter a valid task number for marking.\");","lastModifiedDate":"2024-01-22"},{"lineNumber":42,"author":{"gitId":"yashma-sonara"},"content":" sc.next(); // Consume the non-integer input","lastModifiedDate":"2024-01-22"},{"lineNumber":43,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":44,"author":{"gitId":"yashma-sonara"},"content":" break; // Add break statement","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"yashma-sonara"},"content":" case DELETE:","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"yashma-sonara"},"content":" if (sc.hasNextInt()) {","lastModifiedDate":"2024-01-22"},{"lineNumber":47,"author":{"gitId":"yashma-sonara"},"content":" int num \u003d sc.nextInt();","lastModifiedDate":"2024-01-22"},{"lineNumber":48,"author":{"gitId":"yashma-sonara"},"content":" delete(store, num);","lastModifiedDate":"2024-01-22"},{"lineNumber":49,"author":{"gitId":"yashma-sonara"},"content":" } else {","lastModifiedDate":"2024-01-22"},{"lineNumber":50,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(\"Please enter a valid task number for deletion.\");","lastModifiedDate":"2024-01-22"},{"lineNumber":51,"author":{"gitId":"yashma-sonara"},"content":" sc.next(); // Consume the non-integer input","lastModifiedDate":"2024-01-22"},{"lineNumber":52,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":53,"author":{"gitId":"yashma-sonara"},"content":" break; // Add break statement","lastModifiedDate":"2024-01-23"},{"lineNumber":54,"author":{"gitId":"yashma-sonara"},"content":" default:","lastModifiedDate":"2024-01-23"},{"lineNumber":55,"author":{"gitId":"yashma-sonara"},"content":" addList(store, command, sc);","lastModifiedDate":"2024-01-23"},{"lineNumber":56,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":57,"author":{"gitId":"yashma-sonara"},"content":" saveTasks(store);","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":62,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":63,"author":{"gitId":"yashma-sonara"},"content":" private static void loadTasks(ArrayList\u003cTask\u003e store) {","lastModifiedDate":"2024-01-27"},{"lineNumber":64,"author":{"gitId":"yashma-sonara"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":65,"author":{"gitId":"yashma-sonara"},"content":" File file \u003d new File(FILE_PATH);","lastModifiedDate":"2024-01-27"},{"lineNumber":66,"author":{"gitId":"yashma-sonara"},"content":" if (file.exists()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"yashma-sonara"},"content":" Scanner fileScanner \u003d new Scanner(file);","lastModifiedDate":"2024-01-27"},{"lineNumber":68,"author":{"gitId":"yashma-sonara"},"content":" while (fileScanner.hasNext()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":69,"author":{"gitId":"yashma-sonara"},"content":" String line \u003d fileScanner.nextLine();","lastModifiedDate":"2024-01-27"},{"lineNumber":70,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":71,"author":{"gitId":"yashma-sonara"},"content":" // Try to process the line, and handle any potential exceptions","lastModifiedDate":"2024-01-27"},{"lineNumber":72,"author":{"gitId":"yashma-sonara"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":73,"author":{"gitId":"yashma-sonara"},"content":" Task task \u003d parseTaskFromLine(line);","lastModifiedDate":"2024-01-27"},{"lineNumber":74,"author":{"gitId":"yashma-sonara"},"content":" store.add(task);","lastModifiedDate":"2024-01-27"},{"lineNumber":75,"author":{"gitId":"yashma-sonara"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":76,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(\"Error loading task from file. Corrupted data detected. Skipping line.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":77,"author":{"gitId":"yashma-sonara"},"content":" // Optionally, log the exception for further investigation","lastModifiedDate":"2024-01-27"},{"lineNumber":78,"author":{"gitId":"yashma-sonara"},"content":" e.printStackTrace();","lastModifiedDate":"2024-01-27"},{"lineNumber":79,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":80,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":81,"author":{"gitId":"yashma-sonara"},"content":" fileScanner.close();","lastModifiedDate":"2024-01-27"},{"lineNumber":82,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":83,"author":{"gitId":"yashma-sonara"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":84,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(\"Error loading tasks from file: \" + e.getMessage());","lastModifiedDate":"2024-01-27"},{"lineNumber":85,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":86,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":87,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":88,"author":{"gitId":"yashma-sonara"},"content":" private static Task parseTaskFromLine(String line) throws IOException {","lastModifiedDate":"2024-01-27"},{"lineNumber":89,"author":{"gitId":"yashma-sonara"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-01-27"},{"lineNumber":90,"author":{"gitId":"yashma-sonara"},"content":" if (parts.length \u003c 3) {","lastModifiedDate":"2024-01-27"},{"lineNumber":91,"author":{"gitId":"yashma-sonara"},"content":" throw new IOException(\"Invalid task format. Skipping line.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":92,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":93,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":94,"author":{"gitId":"yashma-sonara"},"content":" String type \u003d parts[0];","lastModifiedDate":"2024-01-27"},{"lineNumber":95,"author":{"gitId":"yashma-sonara"},"content":" boolean isDone \u003d Integer.parseInt(parts[1]) \u003d\u003d 1;","lastModifiedDate":"2024-01-27"},{"lineNumber":96,"author":{"gitId":"yashma-sonara"},"content":" String description \u003d parts[2];","lastModifiedDate":"2024-01-27"},{"lineNumber":97,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":98,"author":{"gitId":"yashma-sonara"},"content":" Task task;","lastModifiedDate":"2024-01-27"},{"lineNumber":99,"author":{"gitId":"yashma-sonara"},"content":" switch (type) {","lastModifiedDate":"2024-01-27"},{"lineNumber":100,"author":{"gitId":"yashma-sonara"},"content":" case \"T\":","lastModifiedDate":"2024-01-27"},{"lineNumber":101,"author":{"gitId":"yashma-sonara"},"content":" task \u003d new Todo(description);","lastModifiedDate":"2024-01-27"},{"lineNumber":102,"author":{"gitId":"yashma-sonara"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":103,"author":{"gitId":"yashma-sonara"},"content":" case \"D\":","lastModifiedDate":"2024-01-27"},{"lineNumber":104,"author":{"gitId":"yashma-sonara"},"content":" if (parts.length \u003c 4) {","lastModifiedDate":"2024-01-27"},{"lineNumber":105,"author":{"gitId":"yashma-sonara"},"content":" throw new IOException(\"Invalid deadline format. Skipping line.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":106,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":107,"author":{"gitId":"yashma-sonara"},"content":" String by \u003d parts[3];","lastModifiedDate":"2024-01-27"},{"lineNumber":108,"author":{"gitId":"yashma-sonara"},"content":" task \u003d new Deadline(description, by);","lastModifiedDate":"2024-01-27"},{"lineNumber":109,"author":{"gitId":"yashma-sonara"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":110,"author":{"gitId":"yashma-sonara"},"content":" case \"E\":","lastModifiedDate":"2024-01-27"},{"lineNumber":111,"author":{"gitId":"yashma-sonara"},"content":" if (parts.length \u003c 4) {","lastModifiedDate":"2024-01-27"},{"lineNumber":112,"author":{"gitId":"yashma-sonara"},"content":" throw new IOException(\"Invalid event format. Skipping line.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":113,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":114,"author":{"gitId":"yashma-sonara"},"content":" String[] eventParts \u003d parts[3].split(\" from \");","lastModifiedDate":"2024-01-27"},{"lineNumber":115,"author":{"gitId":"yashma-sonara"},"content":" if (eventParts.length \u003c 2) {","lastModifiedDate":"2024-01-27"},{"lineNumber":116,"author":{"gitId":"yashma-sonara"},"content":" throw new IOException(\"Invalid event format. Skipping line.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":117,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":118,"author":{"gitId":"yashma-sonara"},"content":" String start \u003d eventParts[0];","lastModifiedDate":"2024-01-27"},{"lineNumber":119,"author":{"gitId":"yashma-sonara"},"content":" String end \u003d eventParts[1];","lastModifiedDate":"2024-01-27"},{"lineNumber":120,"author":{"gitId":"yashma-sonara"},"content":" task \u003d new Event(description, start, end);","lastModifiedDate":"2024-01-27"},{"lineNumber":121,"author":{"gitId":"yashma-sonara"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":122,"author":{"gitId":"yashma-sonara"},"content":" default:","lastModifiedDate":"2024-01-27"},{"lineNumber":123,"author":{"gitId":"yashma-sonara"},"content":" throw new IOException(\"Invalid task type in file. Skipping line.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":124,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":125,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":126,"author":{"gitId":"yashma-sonara"},"content":" if (isDone) {","lastModifiedDate":"2024-01-27"},{"lineNumber":127,"author":{"gitId":"yashma-sonara"},"content":" task.setStatus();","lastModifiedDate":"2024-01-27"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":129,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":130,"author":{"gitId":"yashma-sonara"},"content":" return task;","lastModifiedDate":"2024-01-27"},{"lineNumber":131,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":132,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":133,"author":{"gitId":"yashma-sonara"},"content":" private static void saveTasks(ArrayList\u003cTask\u003e store) {","lastModifiedDate":"2024-01-27"},{"lineNumber":134,"author":{"gitId":"yashma-sonara"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":135,"author":{"gitId":"yashma-sonara"},"content":" File file \u003d new File(FILE_PATH);","lastModifiedDate":"2024-01-27"},{"lineNumber":136,"author":{"gitId":"yashma-sonara"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":137,"author":{"gitId":"yashma-sonara"},"content":" file.getParentFile().mkdirs(); // Create parent directories if they don\u0027t exist","lastModifiedDate":"2024-01-27"},{"lineNumber":138,"author":{"gitId":"yashma-sonara"},"content":" file.createNewFile(); // Create the file if it doesn\u0027t exist","lastModifiedDate":"2024-01-27"},{"lineNumber":139,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":140,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":141,"author":{"gitId":"yashma-sonara"},"content":" FileWriter fileWriter \u003d new FileWriter(FILE_PATH);","lastModifiedDate":"2024-01-27"},{"lineNumber":142,"author":{"gitId":"yashma-sonara"},"content":" for (Task task : store) {","lastModifiedDate":"2024-01-27"},{"lineNumber":143,"author":{"gitId":"yashma-sonara"},"content":" fileWriter.write(task.toFileString() + \"\\n\");","lastModifiedDate":"2024-01-27"},{"lineNumber":144,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":145,"author":{"gitId":"yashma-sonara"},"content":" fileWriter.close();","lastModifiedDate":"2024-01-27"},{"lineNumber":146,"author":{"gitId":"yashma-sonara"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":147,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(\"Error saving tasks to file: \" + e.getMessage());","lastModifiedDate":"2024-01-27"},{"lineNumber":148,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":149,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":150,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":151,"author":{"gitId":"yashma-sonara"},"content":" private static Command getCommand(String input) {","lastModifiedDate":"2024-01-23"},{"lineNumber":152,"author":{"gitId":"yashma-sonara"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":153,"author":{"gitId":"yashma-sonara"},"content":" return Command.valueOf(input.toUpperCase());","lastModifiedDate":"2024-01-23"},{"lineNumber":154,"author":{"gitId":"yashma-sonara"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":155,"author":{"gitId":"yashma-sonara"},"content":" return Command.UNKNOWN;","lastModifiedDate":"2024-01-23"},{"lineNumber":156,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":157,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":158,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":159,"author":{"gitId":"yashma-sonara"},"content":" // if list entered","lastModifiedDate":"2024-01-20"},{"lineNumber":160,"author":{"gitId":"yashma-sonara"},"content":" public static void displayTasks(ArrayList\u003cTask\u003e store) {","lastModifiedDate":"2024-01-21"},{"lineNumber":161,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(\"Here are the items in your list :) \");","lastModifiedDate":"2024-01-22"},{"lineNumber":162,"author":{"gitId":"yashma-sonara"},"content":" for (int i \u003d 0; i \u003c store.size(); i++) {","lastModifiedDate":"2024-01-20"},{"lineNumber":163,"author":{"gitId":"yashma-sonara"},"content":" System.out.println((i + 1) + \". \" + store.get(i));","lastModifiedDate":"2024-01-20"},{"lineNumber":164,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":165,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":166,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":167,"author":{"gitId":"yashma-sonara"},"content":" public static void addList(ArrayList\u003cTask\u003e store, Command added, Scanner sc) {","lastModifiedDate":"2024-01-23"},{"lineNumber":168,"author":{"gitId":"yashma-sonara"},"content":" Task toBeAdded;","lastModifiedDate":"2024-01-22"},{"lineNumber":169,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":170,"author":{"gitId":"yashma-sonara"},"content":" switch (added) {","lastModifiedDate":"2024-01-23"},{"lineNumber":171,"author":{"gitId":"yashma-sonara"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-23"},{"lineNumber":172,"author":{"gitId":"yashma-sonara"},"content":" // Read the entire line","lastModifiedDate":"2024-01-22"},{"lineNumber":173,"author":{"gitId":"yashma-sonara"},"content":" String inputLine \u003d sc.nextLine().trim();","lastModifiedDate":"2024-01-22"},{"lineNumber":174,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":175,"author":{"gitId":"yashma-sonara"},"content":" // Check if there\u0027s \"/by\" in the input","lastModifiedDate":"2024-01-22"},{"lineNumber":176,"author":{"gitId":"yashma-sonara"},"content":" if (!inputLine.contains(\"/by\")) {","lastModifiedDate":"2024-01-22"},{"lineNumber":177,"author":{"gitId":"yashma-sonara"},"content":" try {","lastModifiedDate":"2024-01-22"},{"lineNumber":178,"author":{"gitId":"yashma-sonara"},"content":" throw new DukeException(\"OOPS!!! Please provide a deadline time using \u0027/by\u0027.\");","lastModifiedDate":"2024-01-22"},{"lineNumber":179,"author":{"gitId":"yashma-sonara"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-22"},{"lineNumber":180,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-22"},{"lineNumber":181,"author":{"gitId":"yashma-sonara"},"content":" return;","lastModifiedDate":"2024-01-22"},{"lineNumber":182,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":183,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":184,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":185,"author":{"gitId":"yashma-sonara"},"content":" // Split the input into description and time","lastModifiedDate":"2024-01-22"},{"lineNumber":186,"author":{"gitId":"yashma-sonara"},"content":" String[] parts \u003d inputLine.split(\"/by\", 2);","lastModifiedDate":"2024-01-22"},{"lineNumber":187,"author":{"gitId":"yashma-sonara"},"content":" String description \u003d parts[0].trim();","lastModifiedDate":"2024-01-22"},{"lineNumber":188,"author":{"gitId":"yashma-sonara"},"content":" String time \u003d parts[1].trim();","lastModifiedDate":"2024-01-22"},{"lineNumber":189,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":190,"author":{"gitId":"yashma-sonara"},"content":" // Check if description or time is empty","lastModifiedDate":"2024-01-22"},{"lineNumber":191,"author":{"gitId":"yashma-sonara"},"content":" if (description.isEmpty() || time.isEmpty()) {","lastModifiedDate":"2024-01-22"},{"lineNumber":192,"author":{"gitId":"yashma-sonara"},"content":" try {","lastModifiedDate":"2024-01-22"},{"lineNumber":193,"author":{"gitId":"yashma-sonara"},"content":" throw new DukeException(\"OOPS!!! The description and deadline time cannot be empty.\");","lastModifiedDate":"2024-01-22"},{"lineNumber":194,"author":{"gitId":"yashma-sonara"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-22"},{"lineNumber":195,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-22"},{"lineNumber":196,"author":{"gitId":"yashma-sonara"},"content":" return;","lastModifiedDate":"2024-01-22"},{"lineNumber":197,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":198,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":199,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":200,"author":{"gitId":"yashma-sonara"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":201,"author":{"gitId":"yashma-sonara"},"content":" // Attempt to create a Deadline with the provided description and time","lastModifiedDate":"2024-01-28"},{"lineNumber":202,"author":{"gitId":"yashma-sonara"},"content":" toBeAdded \u003d new Deadline(description, time);","lastModifiedDate":"2024-01-22"},{"lineNumber":203,"author":{"gitId":"yashma-sonara"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":204,"author":{"gitId":"yashma-sonara"},"content":" // Handle the case where the date format is incorrect","lastModifiedDate":"2024-01-28"},{"lineNumber":205,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(\"OOPS!!! Incorrect date format. Please enter the date in the format yyyy-MM-dd.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":206,"author":{"gitId":"yashma-sonara"},"content":" return;","lastModifiedDate":"2024-01-28"},{"lineNumber":207,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":208,"author":{"gitId":"yashma-sonara"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":209,"author":{"gitId":"yashma-sonara"},"content":" case TODO:","lastModifiedDate":"2024-01-23"},{"lineNumber":210,"author":{"gitId":"yashma-sonara"},"content":" String descriptionTodo \u003d sc.nextLine().trim();","lastModifiedDate":"2024-01-23"},{"lineNumber":211,"author":{"gitId":"yashma-sonara"},"content":" if (descriptionTodo.isEmpty()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":212,"author":{"gitId":"yashma-sonara"},"content":" try {","lastModifiedDate":"2024-01-22"},{"lineNumber":213,"author":{"gitId":"yashma-sonara"},"content":" throw new DukeException.EmptyTodoDescriptionException();","lastModifiedDate":"2024-01-22"},{"lineNumber":214,"author":{"gitId":"yashma-sonara"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-22"},{"lineNumber":215,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-22"},{"lineNumber":216,"author":{"gitId":"yashma-sonara"},"content":" return;","lastModifiedDate":"2024-01-22"},{"lineNumber":217,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":218,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":219,"author":{"gitId":"yashma-sonara"},"content":" toBeAdded \u003d new Todo(descriptionTodo);","lastModifiedDate":"2024-01-23"},{"lineNumber":220,"author":{"gitId":"yashma-sonara"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":221,"author":{"gitId":"yashma-sonara"},"content":" case EVENT:","lastModifiedDate":"2024-01-23"},{"lineNumber":222,"author":{"gitId":"yashma-sonara"},"content":" // event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-22"},{"lineNumber":223,"author":{"gitId":"yashma-sonara"},"content":" String inputLineEvent \u003d sc.nextLine().trim();","lastModifiedDate":"2024-01-23"},{"lineNumber":224,"author":{"gitId":"yashma-sonara"},"content":" if (!inputLineEvent.contains(\"/from\") || !inputLineEvent.contains(\"/to\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":225,"author":{"gitId":"yashma-sonara"},"content":" try {","lastModifiedDate":"2024-01-22"},{"lineNumber":226,"author":{"gitId":"yashma-sonara"},"content":" throw new DukeException(\"OOPS!!! Please provide event timing using \u0027/from\u0027 and \u0027/to\u0027.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":227,"author":{"gitId":"yashma-sonara"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-22"},{"lineNumber":228,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-22"},{"lineNumber":229,"author":{"gitId":"yashma-sonara"},"content":" return;","lastModifiedDate":"2024-01-22"},{"lineNumber":230,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":231,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":232,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":233,"author":{"gitId":"yashma-sonara"},"content":" String[] partsEvent \u003d inputLineEvent.split(\"/from\", 2);","lastModifiedDate":"2024-01-23"},{"lineNumber":234,"author":{"gitId":"yashma-sonara"},"content":" String descriptionEvent \u003d partsEvent[0].trim();","lastModifiedDate":"2024-01-23"},{"lineNumber":235,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":236,"author":{"gitId":"yashma-sonara"},"content":" // Check if the description is empty","lastModifiedDate":"2024-01-22"},{"lineNumber":237,"author":{"gitId":"yashma-sonara"},"content":" if (descriptionEvent.isEmpty()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":238,"author":{"gitId":"yashma-sonara"},"content":" try {","lastModifiedDate":"2024-01-22"},{"lineNumber":239,"author":{"gitId":"yashma-sonara"},"content":" throw new DukeException(\"OOPS!!! The description of an event cannot be empty.\");","lastModifiedDate":"2024-01-22"},{"lineNumber":240,"author":{"gitId":"yashma-sonara"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-22"},{"lineNumber":241,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-22"},{"lineNumber":242,"author":{"gitId":"yashma-sonara"},"content":" return;","lastModifiedDate":"2024-01-22"},{"lineNumber":243,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":244,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":245,"author":{"gitId":"yashma-sonara"},"content":" partsEvent \u003d partsEvent[1].split(\"/to\", 2);","lastModifiedDate":"2024-01-23"},{"lineNumber":246,"author":{"gitId":"yashma-sonara"},"content":" String from \u003d partsEvent[0].trim();","lastModifiedDate":"2024-01-23"},{"lineNumber":247,"author":{"gitId":"yashma-sonara"},"content":" String to \u003d partsEvent[1].trim();","lastModifiedDate":"2024-01-23"},{"lineNumber":248,"author":{"gitId":"yashma-sonara"},"content":" // Check if \"from\" or \"to\" is empty","lastModifiedDate":"2024-01-22"},{"lineNumber":249,"author":{"gitId":"yashma-sonara"},"content":" if (from.isEmpty() || to.isEmpty()) {","lastModifiedDate":"2024-01-22"},{"lineNumber":250,"author":{"gitId":"yashma-sonara"},"content":" try {","lastModifiedDate":"2024-01-22"},{"lineNumber":251,"author":{"gitId":"yashma-sonara"},"content":" throw new DukeException(\"OOPS!!! The event timing cannot be empty.\");","lastModifiedDate":"2024-01-22"},{"lineNumber":252,"author":{"gitId":"yashma-sonara"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-22"},{"lineNumber":253,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-22"},{"lineNumber":254,"author":{"gitId":"yashma-sonara"},"content":" return;","lastModifiedDate":"2024-01-22"},{"lineNumber":255,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":256,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":257,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":258,"author":{"gitId":"yashma-sonara"},"content":" toBeAdded \u003d new Event(descriptionEvent, from, to);","lastModifiedDate":"2024-01-23"},{"lineNumber":259,"author":{"gitId":"yashma-sonara"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":260,"author":{"gitId":"yashma-sonara"},"content":" default:","lastModifiedDate":"2024-01-23"},{"lineNumber":261,"author":{"gitId":"yashma-sonara"},"content":" try {","lastModifiedDate":"2024-01-22"},{"lineNumber":262,"author":{"gitId":"yashma-sonara"},"content":" throw new DukeException.UnknownCommandException();","lastModifiedDate":"2024-01-22"},{"lineNumber":263,"author":{"gitId":"yashma-sonara"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-22"},{"lineNumber":264,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-22"},{"lineNumber":265,"author":{"gitId":"yashma-sonara"},"content":" return;","lastModifiedDate":"2024-01-22"},{"lineNumber":266,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":267,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":268,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":269,"author":{"gitId":"yashma-sonara"},"content":" store.add(toBeAdded);","lastModifiedDate":"2024-01-21"},{"lineNumber":270,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":271,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(\"Got it! I\u0027ve added this task.\\n\" + toBeAdded + \"\\nNow you have \" + Task.getNumOfTasks() + \" tasks in your list\");","lastModifiedDate":"2024-01-22"},{"lineNumber":272,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":273,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":274,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":275,"author":{"gitId":"yashma-sonara"},"content":" public static void delete(ArrayList\u003cTask\u003e store, int num) {","lastModifiedDate":"2024-01-22"},{"lineNumber":276,"author":{"gitId":"yashma-sonara"},"content":" Task temp;","lastModifiedDate":"2024-01-22"},{"lineNumber":277,"author":{"gitId":"yashma-sonara"},"content":" if (num \u003c 1 || num \u003e store.size()) {","lastModifiedDate":"2024-01-22"},{"lineNumber":278,"author":{"gitId":"yashma-sonara"},"content":" // exception if out of bounds num","lastModifiedDate":"2024-01-22"},{"lineNumber":279,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(\"Invalid task number. Please enter a valid task number.\");","lastModifiedDate":"2024-01-22"},{"lineNumber":280,"author":{"gitId":"yashma-sonara"},"content":" } else {","lastModifiedDate":"2024-01-22"},{"lineNumber":281,"author":{"gitId":"yashma-sonara"},"content":" // exception if elemnt doens\u0027t exist","lastModifiedDate":"2024-01-22"},{"lineNumber":282,"author":{"gitId":"yashma-sonara"},"content":" temp \u003d store.get(num - 1);","lastModifiedDate":"2024-01-22"},{"lineNumber":283,"author":{"gitId":"yashma-sonara"},"content":" store.remove(num - 1);","lastModifiedDate":"2024-01-22"},{"lineNumber":284,"author":{"gitId":"yashma-sonara"},"content":" System.out.println( \"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-22"},{"lineNumber":285,"author":{"gitId":"yashma-sonara"},"content":" Task.decrementTotal();","lastModifiedDate":"2024-01-22"},{"lineNumber":286,"author":{"gitId":"yashma-sonara"},"content":" System.out.println( temp + \"\\nNow you have \" + Task.getNumOfTasks() + \" tasks in your list\");","lastModifiedDate":"2024-01-22"},{"lineNumber":287,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":288,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":289,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":290,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":291,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":292,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"yashma-sonara":287,"-":5}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yashma-sonara"},"content":"// DukeExceptions.java","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"yashma-sonara"},"content":"public class DukeException extends Exception{","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"yashma-sonara"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"yashma-sonara"},"content":" super(message);","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"yashma-sonara"},"content":" public static class EmptyTodoDescriptionException extends DukeException {","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"yashma-sonara"},"content":" public EmptyTodoDescriptionException() {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"yashma-sonara"},"content":" super(\"OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"yashma-sonara"},"content":" public static class UnknownCommandException extends DukeException {","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"yashma-sonara"},"content":" public UnknownCommandException() {","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"yashma-sonara"},"content":" super(\"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"yashma-sonara"},"content":"}","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yashma-sonara":22}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yashma-sonara"},"content":"public class Event extends Task{","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"yashma-sonara"},"content":" protected String start;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"yashma-sonara"},"content":" protected String end;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"yashma-sonara"},"content":" public Event(String description, String start, String end) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"yashma-sonara"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"yashma-sonara"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"yashma-sonara"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"yashma-sonara"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"yashma-sonara"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"yashma-sonara"},"content":" return \"[E]\" + super.toString() + \" (from: \" + start + \"to: \" + end + \")\";","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"yashma-sonara"},"content":" public String getAt() {","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"yashma-sonara"},"content":" return this.start + \" from \" + this.end;","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"yashma-sonara"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"yashma-sonara"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"yashma-sonara"},"content":" // Format: E | 0/1 | description | at from to","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"yashma-sonara"},"content":" return \"E | \" + (isDone ? \"1\" : \"0\") + \" | \" + description + \" | \" + getAt();","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"yashma-sonara"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yashma-sonara":25}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yashma-sonara"},"content":"public class Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":2,"author":{"gitId":"yashma-sonara"},"content":" protected String description;","lastModifiedDate":"2024-01-21"},{"lineNumber":3,"author":{"gitId":"yashma-sonara"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-21"},{"lineNumber":4,"author":{"gitId":"yashma-sonara"},"content":" private static int numOfTasks \u003d 0;","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"yashma-sonara"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"yashma-sonara"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"yashma-sonara"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"yashma-sonara"},"content":" numOfTasks++;","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"yashma-sonara"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"yashma-sonara"},"content":" return \"\";","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":16,"author":{"gitId":"yashma-sonara"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-21"},{"lineNumber":17,"author":{"gitId":"yashma-sonara"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-21"},{"lineNumber":18,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":19,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":20,"author":{"gitId":"yashma-sonara"},"content":" public static void decrementTotal() {","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"yashma-sonara"},"content":" numOfTasks--;","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"yashma-sonara"},"content":" public static int getNumOfTasks() {","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"yashma-sonara"},"content":" return numOfTasks;","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"yashma-sonara"},"content":" public void setStatus() {","lastModifiedDate":"2024-01-21"},{"lineNumber":29,"author":{"gitId":"yashma-sonara"},"content":" this.isDone \u003d !isDone;","lastModifiedDate":"2024-01-21"},{"lineNumber":30,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":31,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":32,"author":{"gitId":"yashma-sonara"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":33,"author":{"gitId":"yashma-sonara"},"content":" return (\"[\" + this.getStatusIcon() + \"]\" + \" \" + this.description);","lastModifiedDate":"2024-01-21"},{"lineNumber":34,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":35,"author":{"gitId":"yashma-sonara"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"yashma-sonara":35}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yashma-sonara"},"content":"public class Todo extends Task{","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"yashma-sonara"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"yashma-sonara"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"yashma-sonara"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"yashma-sonara"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"yashma-sonara"},"content":" // Format: T | 0/1 | description","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"yashma-sonara"},"content":" return \"T | \" + (isDone ? \"1\" : \"0\") + \" | \" + description;","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"yashma-sonara"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"yashma-sonara"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"yashma-sonara"},"content":" return \"[T]\" + super.toString() ;","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"yashma-sonara"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yashma-sonara":18}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"yashma-sonara"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"yashma-sonara"},"content":"todo Borrow a book","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"yashma-sonara"},"content":"deadline Return book /by Sunday","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"yashma-sonara"},"content":"event party /from Mon 2pm /to Mon 4pm","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"yashma-sonara"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"yashma-sonara"},"content":"mark 2","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"yashma-sonara"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"yashma-sonara"},"content":"bye","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yashma-sonara":8}}] +[{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"yashma-sonara"},"content":"T | 0 | j","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"yashma-sonara"},"content":"T | 0 | f","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"yashma-sonara"},"content":"E | 1 | e | sun from mon","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"yashma-sonara":3}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yashma-sonara"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"yashma-sonara"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"yashma-sonara"},"content":"public class Deadline extends Task{","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"yashma-sonara"},"content":" protected LocalDate by;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"yashma-sonara"},"content":" protected String originalBy;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"yashma-sonara"},"content":" private static final DateTimeFormatter OUTPUT_DATE_FORMATTER \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy\");","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"yashma-sonara"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"yashma-sonara"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"yashma-sonara"},"content":" this.originalBy \u003d by;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"yashma-sonara"},"content":" this.by \u003d LocalDate.parse(by, DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"yashma-sonara"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"yashma-sonara"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"yashma-sonara"},"content":" // Format: D | 0/1 | description | by date","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"yashma-sonara"},"content":" return \"D | \" + (isDone ? \"1\" : \"0\") + \" | \" + description + \" | \" + this.originalBy;","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"yashma-sonara"},"content":" public String getBy() {","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"yashma-sonara"},"content":" return \" (by: \" + this.by.format(OUTPUT_DATE_FORMATTER) + \")\";","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"yashma-sonara"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"yashma-sonara"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"yashma-sonara"},"content":" return \"[D]\" + super.toString() + this.getBy();","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"yashma-sonara"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yashma-sonara":29}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yashma-sonara"},"content":"import java.io.File;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"yashma-sonara"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"yashma-sonara"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-20"},{"lineNumber":4,"author":{"gitId":"yashma-sonara"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-20"},{"lineNumber":5,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":7,"author":{"gitId":"yashma-sonara"},"content":" private Ui ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"yashma-sonara"},"content":" private Storage storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"yashma-sonara"},"content":" public enum Command {","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"yashma-sonara"},"content":" BYE, LIST, MARK, DELETE, TODO, DEADLINE, EVENT, UNKNOWN","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"yashma-sonara"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"yashma-sonara"},"content":" private static final String FILE_PATH \u003d \"./data/duke.txt\";","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"yashma-sonara"},"content":" public Duke(String filePath) {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"yashma-sonara"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"yashma-sonara"},"content":" storage \u003d new Storage(FILE_PATH);","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"yashma-sonara"},"content":" try {","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"yashma-sonara"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"yashma-sonara"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"yashma-sonara"},"content":" ui.showLoadingError();","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"yashma-sonara"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"yashma-sonara"},"content":" public void run() {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"yashma-sonara"},"content":" ui.showWelcomeMessage();","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"yashma-sonara"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"yashma-sonara"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"yashma-sonara"},"content":" while (!isExit) {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"yashma-sonara"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"yashma-sonara"},"content":" String userInput \u003d ui.getUserInput();","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"yashma-sonara"},"content":" if (userInput.equals(\"Bye\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"yashma-sonara"},"content":" isExit \u003d true;","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":39,"author":{"gitId":"yashma-sonara"},"content":" Parser.parseAndExecute(userInput, tasks, ui, storage);","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"yashma-sonara"},"content":" storage.saveTasks(tasks.getTasks());","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"yashma-sonara"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-22"},{"lineNumber":42,"author":{"gitId":"yashma-sonara"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":44,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":45,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":46,"author":{"gitId":"yashma-sonara"},"content":" ui.showGoodbyeMessage();","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":48,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":51,"author":{"gitId":"yashma-sonara"},"content":" new Duke(\"data/duke.txt\").run();","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"yashma-sonara":49,"-":4}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yashma-sonara"},"content":"// DukeExceptions.java","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"yashma-sonara"},"content":"public class DukeException extends Exception{","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"yashma-sonara"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"yashma-sonara"},"content":" super(message);","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"yashma-sonara"},"content":" public static class EmptyTodoDescriptionException extends DukeException {","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"yashma-sonara"},"content":" public EmptyTodoDescriptionException() {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"yashma-sonara"},"content":" super(\"OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"yashma-sonara"},"content":" public static class UnknownCommandException extends DukeException {","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"yashma-sonara"},"content":" public UnknownCommandException() {","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"yashma-sonara"},"content":" super(\"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"yashma-sonara"},"content":"}","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yashma-sonara":22}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yashma-sonara"},"content":"public class Event extends Task{","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"yashma-sonara"},"content":" protected String start;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"yashma-sonara"},"content":" protected String end;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"yashma-sonara"},"content":" public Event(String description, String start, String end) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"yashma-sonara"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"yashma-sonara"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"yashma-sonara"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"yashma-sonara"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"yashma-sonara"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"yashma-sonara"},"content":" return \"[E]\" + super.toString() + \" (from: \" + start + \" to: \" + end + \")\";","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"yashma-sonara"},"content":" public String getAt() {","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"yashma-sonara"},"content":" return this.start + \" from \" + this.end;","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"yashma-sonara"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"yashma-sonara"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"yashma-sonara"},"content":" // Format: E | 0/1 | description | at from to","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"yashma-sonara"},"content":" return \"E | \" + (isDone ? \"1\" : \"0\") + \" | \" + description + \" | \" + getAt();","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"yashma-sonara"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yashma-sonara":25}},{"path":"src/main/java/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yashma-sonara"},"content":"import java.io.IOError;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"yashma-sonara"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"yashma-sonara"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"yashma-sonara"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"yashma-sonara"},"content":"import java.time.temporal.ChronoUnit;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"yashma-sonara"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"yashma-sonara"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"yashma-sonara"},"content":"public class Parser {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"yashma-sonara"},"content":" public Parser() {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"yashma-sonara"},"content":" public static void parseAndExecute(String userInput, TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"yashma-sonara"},"content":" //String[] words \u003d userInput.split(\" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"yashma-sonara"},"content":" String commandStr \u003d userInput.toUpperCase();","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"yashma-sonara"},"content":" switch (commandStr) {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"yashma-sonara"},"content":" case \"BYE\":","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"yashma-sonara"},"content":" // Handle BYE command","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"yashma-sonara"},"content":" ui.showGoodbyeMessage();","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"yashma-sonara"},"content":" System.exit(0);","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"yashma-sonara"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"yashma-sonara"},"content":" case \"LIST\":","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"yashma-sonara"},"content":" // Handle LIST command","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"yashma-sonara"},"content":" tasks.listTasks(ui);","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"yashma-sonara"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"yashma-sonara"},"content":" case \"DELETE\":","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"yashma-sonara"},"content":" //if (words.length \u003c 2) {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"yashma-sonara"},"content":" // throw new DukeException(\"The task number to mark is missing.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"yashma-sonara"},"content":" //}","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"yashma-sonara"},"content":" //nt taskNumberMark \u003d Integer.parseInt(words[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"yashma-sonara"},"content":" if (ui.hasNextInt()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"yashma-sonara"},"content":" int num \u003d ui.getUserInputInt();","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"yashma-sonara"},"content":" tasks.removeTasks(num, ui);","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"yashma-sonara"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"yashma-sonara"},"content":" throw new DukeException(\"The task number to mark is missing.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"yashma-sonara"},"content":" break; // Add break statement","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"yashma-sonara"},"content":" case \"MARK\":","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"yashma-sonara"},"content":" // Handle MARK command","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"yashma-sonara"},"content":" if (ui.hasNextInt()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"yashma-sonara"},"content":" int num \u003d ui.getUserInputInt();","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"yashma-sonara"},"content":" tasks.markTasks(num, ui);","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"yashma-sonara"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"yashma-sonara"},"content":" throw new DukeException(\"The task number to mark is missing.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"yashma-sonara"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"yashma-sonara"},"content":" case \"DEADLINE\":","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"yashma-sonara"},"content":" parseDeadline( tasks, ui);","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"yashma-sonara"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"yashma-sonara"},"content":" case \"EVENT\":","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"yashma-sonara"},"content":" parseEvent( tasks, ui);","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"yashma-sonara"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"yashma-sonara"},"content":" case \"TODO\":","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"yashma-sonara"},"content":" parseTodo( tasks, ui);","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"yashma-sonara"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"yashma-sonara"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"yashma-sonara"},"content":" throw new DukeException(\"I\u0027m sorry, but I don\u0027t know what that means.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"yashma-sonara"},"content":" public static void parseDeadline( TaskList tasks, Ui ui) throws DukeException{","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"yashma-sonara"},"content":" /*if (words.length \u003c 4) {","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"yashma-sonara"},"content":" throw new DukeException(\"Insufficient information for creating a deadline task.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"yashma-sonara"},"content":" String description \u003d words[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"yashma-sonara"},"content":" String byKeyword \u003d words[2];","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"yashma-sonara"},"content":" String time \u003d words[3];","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"yashma-sonara"},"content":" if (!byKeyword.equals(\"/by\") || description.isEmpty() || time.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"yashma-sonara"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"yashma-sonara"},"content":" throw new DukeException(\"OOPS!!! The description and deadline time cannot be empty.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"yashma-sonara"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"yashma-sonara"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"yashma-sonara"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"yashma-sonara"},"content":" // Attempt to create a Deadline with the provided description and time","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"yashma-sonara"},"content":" tasks.addTasks(new Deadline(description, time));","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"yashma-sonara"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"yashma-sonara"},"content":" // Handle the case where the date format is incorrect","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(\"OOPS!!! Incorrect date format. Please enter the date in the format yyyy-MM-dd.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"yashma-sonara"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"yashma-sonara"},"content":" }*/","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"yashma-sonara"},"content":" String inputLine \u003d ui.getUserInput3().trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"yashma-sonara"},"content":" // Check if there\u0027s \"/by\" in the input","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"yashma-sonara"},"content":" if (!inputLine.contains(\"/by\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"yashma-sonara"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"yashma-sonara"},"content":" throw new DukeException(\"OOPS!!! Please provide a deadline time using \u0027/by\u0027.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"yashma-sonara"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"yashma-sonara"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"yashma-sonara"},"content":" // Split the input into description and time","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"yashma-sonara"},"content":" String[] parts \u003d inputLine.split(\"/by\", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"yashma-sonara"},"content":" String description \u003d parts[0].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"yashma-sonara"},"content":" String time \u003d parts[1].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"yashma-sonara"},"content":" // Check if description or time is empty","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"yashma-sonara"},"content":" if (description.isEmpty() || time.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"yashma-sonara"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"yashma-sonara"},"content":" throw new DukeException(\"OOPS!!! The description and deadline time cannot be empty.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":123,"author":{"gitId":"yashma-sonara"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":124,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"yashma-sonara"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":127,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":128,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"yashma-sonara"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"yashma-sonara"},"content":" // Attempt to create a Deadline with the provided description and time","lastModifiedDate":"2024-01-30"},{"lineNumber":131,"author":{"gitId":"yashma-sonara"},"content":" tasks.addTasks(new Deadline(description, time));","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"yashma-sonara"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":133,"author":{"gitId":"yashma-sonara"},"content":" // Handle the case where the date format is incorrect","lastModifiedDate":"2024-01-30"},{"lineNumber":134,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(\"OOPS!!! Incorrect date format. Please enter the date in the format yyyy-MM-dd.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":135,"author":{"gitId":"yashma-sonara"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":136,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":139,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"yashma-sonara"},"content":" public static void parseEvent( TaskList tasks, Ui ui) throws DukeException{","lastModifiedDate":"2024-01-30"},{"lineNumber":141,"author":{"gitId":"yashma-sonara"},"content":" /*if (words.length \u003c 6) {","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"yashma-sonara"},"content":" throw new DukeException(\"Insufficient information for creating a event task.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":143,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":144,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":145,"author":{"gitId":"yashma-sonara"},"content":" String description \u003d words[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":146,"author":{"gitId":"yashma-sonara"},"content":" String fromKeyword \u003d words[2];","lastModifiedDate":"2024-01-30"},{"lineNumber":147,"author":{"gitId":"yashma-sonara"},"content":" String fromTime \u003d words[3];","lastModifiedDate":"2024-01-30"},{"lineNumber":148,"author":{"gitId":"yashma-sonara"},"content":" String toKeyword \u003d words[4];","lastModifiedDate":"2024-01-30"},{"lineNumber":149,"author":{"gitId":"yashma-sonara"},"content":" String toTime \u003d words[5];","lastModifiedDate":"2024-01-30"},{"lineNumber":150,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":151,"author":{"gitId":"yashma-sonara"},"content":" if (!fromKeyword.equals(\"/from\") || !toKeyword.equals(\"/to\") || description.isEmpty() || fromTime.isEmpty() || toTime.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":152,"author":{"gitId":"yashma-sonara"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":153,"author":{"gitId":"yashma-sonara"},"content":" throw new DukeException(\"OOPS!!! The description and event time cannot be empty.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":154,"author":{"gitId":"yashma-sonara"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":155,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":156,"author":{"gitId":"yashma-sonara"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":157,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":158,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":159,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":160,"author":{"gitId":"yashma-sonara"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":161,"author":{"gitId":"yashma-sonara"},"content":" // Attempt to create a Deadline with the provided description and time","lastModifiedDate":"2024-01-30"},{"lineNumber":162,"author":{"gitId":"yashma-sonara"},"content":" tasks.addTasks(new Event(description, fromTime, toTime));","lastModifiedDate":"2024-01-30"},{"lineNumber":163,"author":{"gitId":"yashma-sonara"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":164,"author":{"gitId":"yashma-sonara"},"content":" // Handle the case where the date format is incorrect","lastModifiedDate":"2024-01-30"},{"lineNumber":165,"author":{"gitId":"yashma-sonara"},"content":" //System.out.println(\"OOPS!!! Incorrect date format. Please enter the date in the format yyyy-MM-dd.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":166,"author":{"gitId":"yashma-sonara"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":167,"author":{"gitId":"yashma-sonara"},"content":" } */","lastModifiedDate":"2024-01-30"},{"lineNumber":168,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":169,"author":{"gitId":"yashma-sonara"},"content":" String inputLineEvent \u003d ui.getUserInput3().trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":170,"author":{"gitId":"yashma-sonara"},"content":" if (!inputLineEvent.contains(\"/from\") || !inputLineEvent.contains(\"/to\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":171,"author":{"gitId":"yashma-sonara"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":172,"author":{"gitId":"yashma-sonara"},"content":" throw new DukeException(\"OOPS!!! Please provide event timing using \u0027/from\u0027 and \u0027/to\u0027.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":173,"author":{"gitId":"yashma-sonara"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":174,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":175,"author":{"gitId":"yashma-sonara"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":176,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":177,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":178,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":179,"author":{"gitId":"yashma-sonara"},"content":" String[] partsEvent \u003d inputLineEvent.split(\"/from\", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":180,"author":{"gitId":"yashma-sonara"},"content":" String descriptionEvent \u003d partsEvent[0].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":181,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":182,"author":{"gitId":"yashma-sonara"},"content":" // Check if the description is empty","lastModifiedDate":"2024-01-30"},{"lineNumber":183,"author":{"gitId":"yashma-sonara"},"content":" if (descriptionEvent.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":184,"author":{"gitId":"yashma-sonara"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":185,"author":{"gitId":"yashma-sonara"},"content":" throw new DukeException(\"OOPS!!! The description of an event cannot be empty.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":186,"author":{"gitId":"yashma-sonara"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":187,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":188,"author":{"gitId":"yashma-sonara"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":189,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":190,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":191,"author":{"gitId":"yashma-sonara"},"content":" partsEvent \u003d partsEvent[1].split(\"/to\", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":192,"author":{"gitId":"yashma-sonara"},"content":" String from \u003d partsEvent[0].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":193,"author":{"gitId":"yashma-sonara"},"content":" String to \u003d partsEvent[1].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":194,"author":{"gitId":"yashma-sonara"},"content":" // Check if \"from\" or \"to\" is empty","lastModifiedDate":"2024-01-30"},{"lineNumber":195,"author":{"gitId":"yashma-sonara"},"content":" if (from.isEmpty() || to.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":196,"author":{"gitId":"yashma-sonara"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":197,"author":{"gitId":"yashma-sonara"},"content":" throw new DukeException(\"OOPS!!! The event timing cannot be empty.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":198,"author":{"gitId":"yashma-sonara"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":199,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":200,"author":{"gitId":"yashma-sonara"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":201,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":202,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":203,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":204,"author":{"gitId":"yashma-sonara"},"content":" tasks.addTasks(new Event(descriptionEvent, from, to));","lastModifiedDate":"2024-01-30"},{"lineNumber":205,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":206,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":207,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":208,"author":{"gitId":"yashma-sonara"},"content":" public static void parseTodo( TaskList tasks, Ui ui) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":209,"author":{"gitId":"yashma-sonara"},"content":" /* if (words.length \u003c 2) {","lastModifiedDate":"2024-01-30"},{"lineNumber":210,"author":{"gitId":"yashma-sonara"},"content":" throw new DukeException(\"Insufficient information for creating a event task.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":211,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":212,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":213,"author":{"gitId":"yashma-sonara"},"content":" String description \u003d words[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":214,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":215,"author":{"gitId":"yashma-sonara"},"content":" tasks.addTasks(new Todo(description)); */","lastModifiedDate":"2024-01-30"},{"lineNumber":216,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":217,"author":{"gitId":"yashma-sonara"},"content":" String descriptionTodo \u003d ui.getUserInput2().trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":218,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(descriptionTodo);","lastModifiedDate":"2024-01-30"},{"lineNumber":219,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":220,"author":{"gitId":"yashma-sonara"},"content":" // Check if description is empty","lastModifiedDate":"2024-01-30"},{"lineNumber":221,"author":{"gitId":"yashma-sonara"},"content":" if (descriptionTodo.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":222,"author":{"gitId":"yashma-sonara"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":223,"author":{"gitId":"yashma-sonara"},"content":" throw new DukeException(\"OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":224,"author":{"gitId":"yashma-sonara"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":225,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":226,"author":{"gitId":"yashma-sonara"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":227,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":228,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":229,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":230,"author":{"gitId":"yashma-sonara"},"content":" tasks.addTasks(new Todo(descriptionTodo));","lastModifiedDate":"2024-01-30"},{"lineNumber":231,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":232,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":233,"author":{"gitId":"yashma-sonara"},"content":" public static Task parseTaskFromLine(String line) throws IOException {","lastModifiedDate":"2024-01-30"},{"lineNumber":234,"author":{"gitId":"yashma-sonara"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-01-30"},{"lineNumber":235,"author":{"gitId":"yashma-sonara"},"content":" if (parts.length \u003c 3) {","lastModifiedDate":"2024-01-30"},{"lineNumber":236,"author":{"gitId":"yashma-sonara"},"content":" throw new IOException(\"Invalid task format. Skipping line.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":237,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":238,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":239,"author":{"gitId":"yashma-sonara"},"content":" String type \u003d parts[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":240,"author":{"gitId":"yashma-sonara"},"content":" boolean isDone \u003d Integer.parseInt(parts[1]) \u003d\u003d 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":241,"author":{"gitId":"yashma-sonara"},"content":" String description \u003d parts[2];","lastModifiedDate":"2024-01-30"},{"lineNumber":242,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":243,"author":{"gitId":"yashma-sonara"},"content":" Task task;","lastModifiedDate":"2024-01-30"},{"lineNumber":244,"author":{"gitId":"yashma-sonara"},"content":" switch (type) {","lastModifiedDate":"2024-01-30"},{"lineNumber":245,"author":{"gitId":"yashma-sonara"},"content":" case \"T\":","lastModifiedDate":"2024-01-30"},{"lineNumber":246,"author":{"gitId":"yashma-sonara"},"content":" task \u003d new Todo(description);","lastModifiedDate":"2024-01-30"},{"lineNumber":247,"author":{"gitId":"yashma-sonara"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":248,"author":{"gitId":"yashma-sonara"},"content":" case \"D\":","lastModifiedDate":"2024-01-30"},{"lineNumber":249,"author":{"gitId":"yashma-sonara"},"content":" if (parts.length \u003c 4) {","lastModifiedDate":"2024-01-30"},{"lineNumber":250,"author":{"gitId":"yashma-sonara"},"content":" throw new IOException(\"Invalid deadline format. Skipping line.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":251,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":252,"author":{"gitId":"yashma-sonara"},"content":" String by \u003d parts[3];","lastModifiedDate":"2024-01-30"},{"lineNumber":253,"author":{"gitId":"yashma-sonara"},"content":" task \u003d new Deadline(description, by);","lastModifiedDate":"2024-01-30"},{"lineNumber":254,"author":{"gitId":"yashma-sonara"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":255,"author":{"gitId":"yashma-sonara"},"content":" case \"E\":","lastModifiedDate":"2024-01-30"},{"lineNumber":256,"author":{"gitId":"yashma-sonara"},"content":" if (parts.length \u003c 4) {","lastModifiedDate":"2024-01-30"},{"lineNumber":257,"author":{"gitId":"yashma-sonara"},"content":" throw new IOException(\"Invalid event format. Skipping line.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":258,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":259,"author":{"gitId":"yashma-sonara"},"content":" String[] eventParts \u003d parts[3].split(\" from \");","lastModifiedDate":"2024-01-30"},{"lineNumber":260,"author":{"gitId":"yashma-sonara"},"content":" if (eventParts.length \u003c 2) {","lastModifiedDate":"2024-01-30"},{"lineNumber":261,"author":{"gitId":"yashma-sonara"},"content":" throw new IOException(\"Invalid event format. Skipping line.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":262,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":263,"author":{"gitId":"yashma-sonara"},"content":" String start \u003d eventParts[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":264,"author":{"gitId":"yashma-sonara"},"content":" String end \u003d eventParts[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":265,"author":{"gitId":"yashma-sonara"},"content":" task \u003d new Event(description, start, end);","lastModifiedDate":"2024-01-30"},{"lineNumber":266,"author":{"gitId":"yashma-sonara"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":267,"author":{"gitId":"yashma-sonara"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":268,"author":{"gitId":"yashma-sonara"},"content":" throw new IOException(\"Invalid task type in file. Skipping line.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":269,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":270,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":271,"author":{"gitId":"yashma-sonara"},"content":" if (isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":272,"author":{"gitId":"yashma-sonara"},"content":" task.setStatus();","lastModifiedDate":"2024-01-30"},{"lineNumber":273,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":274,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":275,"author":{"gitId":"yashma-sonara"},"content":" return task;","lastModifiedDate":"2024-01-30"},{"lineNumber":276,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":277,"author":{"gitId":"yashma-sonara"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"yashma-sonara":277}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yashma-sonara"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"yashma-sonara"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"yashma-sonara"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"yashma-sonara"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"yashma-sonara"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"yashma-sonara"},"content":"public class Storage {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"yashma-sonara"},"content":" private String FILE_PATH;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"yashma-sonara"},"content":" public Storage(String file) {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"yashma-sonara"},"content":" this.FILE_PATH \u003d file;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"yashma-sonara"},"content":" public void saveTasks(ArrayList\u003cTask\u003e store) {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"yashma-sonara"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"yashma-sonara"},"content":" File file \u003d new File(FILE_PATH);","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"yashma-sonara"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"yashma-sonara"},"content":" file.getParentFile().mkdirs(); // Create parent directories if they don\u0027t exist","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"yashma-sonara"},"content":" file.createNewFile(); // Create the file if it doesn\u0027t exist","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"yashma-sonara"},"content":" FileWriter fileWriter \u003d new FileWriter(FILE_PATH);","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"yashma-sonara"},"content":" for (Task task : store) {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"yashma-sonara"},"content":" fileWriter.write(task.toFileString() + \"\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"yashma-sonara"},"content":" fileWriter.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"yashma-sonara"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(\"Error saving tasks to file: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"yashma-sonara"},"content":" public ArrayList\u003cTask\u003e load() throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"yashma-sonara"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"yashma-sonara"},"content":" File file \u003d new File(FILE_PATH);","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"yashma-sonara"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"yashma-sonara"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"yashma-sonara"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"yashma-sonara"},"content":" //System.out.println(\"b\");","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"yashma-sonara"},"content":" Scanner fileScanner \u003d new Scanner(file);","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"yashma-sonara"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"yashma-sonara"},"content":" while (fileScanner.hasNext()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"yashma-sonara"},"content":" String line \u003d fileScanner.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"yashma-sonara"},"content":" //System.out.println(line);","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"yashma-sonara"},"content":" Task task \u003d Parser.parseTaskFromLine(line);","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"yashma-sonara"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"yashma-sonara"},"content":" //System.out.println(\"line\");","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"yashma-sonara"},"content":" fileScanner.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"yashma-sonara"},"content":" return tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"yashma-sonara"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"yashma-sonara"},"content":" throw new DukeException(\"Error loading tasks from file: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"yashma-sonara"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"yashma-sonara":55}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yashma-sonara"},"content":"public class Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":2,"author":{"gitId":"yashma-sonara"},"content":" protected String description;","lastModifiedDate":"2024-01-21"},{"lineNumber":3,"author":{"gitId":"yashma-sonara"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-21"},{"lineNumber":4,"author":{"gitId":"yashma-sonara"},"content":" private static int numOfTasks \u003d 0;","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"yashma-sonara"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"yashma-sonara"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"yashma-sonara"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"yashma-sonara"},"content":" numOfTasks++;","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"yashma-sonara"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"yashma-sonara"},"content":" return \"\";","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":16,"author":{"gitId":"yashma-sonara"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-21"},{"lineNumber":17,"author":{"gitId":"yashma-sonara"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-21"},{"lineNumber":18,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":19,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":20,"author":{"gitId":"yashma-sonara"},"content":" public static void decrementTotal() {","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"yashma-sonara"},"content":" numOfTasks--;","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"yashma-sonara"},"content":" public static int getNumOfTasks() {","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"yashma-sonara"},"content":" return numOfTasks;","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"yashma-sonara"},"content":" public void setStatus() {","lastModifiedDate":"2024-01-21"},{"lineNumber":29,"author":{"gitId":"yashma-sonara"},"content":" this.isDone \u003d !isDone;","lastModifiedDate":"2024-01-21"},{"lineNumber":30,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":31,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":32,"author":{"gitId":"yashma-sonara"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":33,"author":{"gitId":"yashma-sonara"},"content":" return (\"[\" + this.getStatusIcon() + \"]\" + \" \" + this.description);","lastModifiedDate":"2024-01-21"},{"lineNumber":34,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":35,"author":{"gitId":"yashma-sonara"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"yashma-sonara":35}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yashma-sonara"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"yashma-sonara"},"content":"public class TaskList {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"yashma-sonara"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"yashma-sonara"},"content":" public TaskList() {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"yashma-sonara"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"yashma-sonara"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"yashma-sonara"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"yashma-sonara"},"content":" public ArrayList\u003cTask\u003e getTasks() {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"yashma-sonara"},"content":" return this.tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"yashma-sonara"},"content":" public void addTasks(Task t) {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"yashma-sonara"},"content":" tasks.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"yashma-sonara"},"content":" public void markTasks(int index, Ui ui) {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"yashma-sonara"},"content":" tasks.get(index - 1).setStatus();","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"yashma-sonara"},"content":" ui.markedMessage(tasks.get(index - 1));","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"yashma-sonara"},"content":" public void removeTasks(int in, Ui ui) {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"yashma-sonara"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"yashma-sonara"},"content":" Task temp \u003d tasks.get(in - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"yashma-sonara"},"content":" tasks.remove(in - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"yashma-sonara"},"content":" ui.deleteMessage(temp.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"yashma-sonara"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"yashma-sonara"},"content":" ui.showError(\"OOPS!!! The task number is out of bounds. Please provide a valid task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"yashma-sonara"},"content":" public void listTasks(Ui ui) {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"yashma-sonara"},"content":" if (tasks.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"yashma-sonara"},"content":" ui.showMessage(\"There are no tasks in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"yashma-sonara"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"yashma-sonara"},"content":" ui.showMessage(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"yashma-sonara"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"yashma-sonara"},"content":" ui.showMessage((i + 1) + \". \" + tasks.get(i).toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"yashma-sonara"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"yashma-sonara":50}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yashma-sonara"},"content":"public class Todo extends Task{","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"yashma-sonara"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"yashma-sonara"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"yashma-sonara"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"yashma-sonara"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"yashma-sonara"},"content":" // Format: T | 0/1 | description","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"yashma-sonara"},"content":" return \"T | \" + (isDone ? \"1\" : \"0\") + \" | \" + description;","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"yashma-sonara"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"yashma-sonara"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"yashma-sonara"},"content":" return \"[T]\" + super.toString() ;","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"yashma-sonara"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yashma-sonara":18}},{"path":"src/main/java/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yashma-sonara"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"yashma-sonara"},"content":"public class Ui {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"yashma-sonara"},"content":" private Scanner scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"yashma-sonara"},"content":" public Ui() {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"yashma-sonara"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"yashma-sonara"},"content":" public void showWelcomeMessage() {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(\"Hello! I\u0027m Duke. What can I do for you?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"yashma-sonara"},"content":" public String getUserInput() {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"yashma-sonara"},"content":" System.out.print(\"Enter your command: \");","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"yashma-sonara"},"content":" return scanner.next();","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"yashma-sonara"},"content":" public String getUserInput3() {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"yashma-sonara"},"content":" //System.out.print(\"Enter your command: \");","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"yashma-sonara"},"content":" return scanner.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"yashma-sonara"},"content":" public void deleteMessage(String str) {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(\"I have deleted the below command: \\n\" + str);","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"yashma-sonara"},"content":" public String getUserInput2() {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"yashma-sonara"},"content":" //System.out.print(\"Enter your command: \");","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"yashma-sonara"},"content":" return scanner.next();","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"yashma-sonara"},"content":" public int getUserInputInt() {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"yashma-sonara"},"content":" return scanner.nextInt();","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"yashma-sonara"},"content":" public boolean hasNextInt() {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"yashma-sonara"},"content":" return scanner.hasNextInt();","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"yashma-sonara"},"content":" public void showGoodbyeMessage() {","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(\"Bye! Hope to see you again soon.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"yashma-sonara"},"content":" public void showError(String errorMessage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(\"Error: \" + errorMessage);","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"yashma-sonara"},"content":" public void showLoadingError() {","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(\"Error loading tasks from file. Starting with an empty task list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"yashma-sonara"},"content":" public void markedMessage(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(\"\\t\" + \"Nice! I\u0027ve marked this task \" +","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"yashma-sonara"},"content":" \"as done:\" + \"\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"yashma-sonara"},"content":" \"\\t \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"yashma-sonara"},"content":" public void showMessage(String str) {","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(str);","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"yashma-sonara"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"yashma-sonara":60}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"yashma-sonara"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"yashma-sonara"},"content":"todo Borrow a book","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"yashma-sonara"},"content":"deadline Return book /by Sunday","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"yashma-sonara"},"content":"event party /from Mon 2pm /to Mon 4pm","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"yashma-sonara"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"yashma-sonara"},"content":"mark 2","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"yashma-sonara"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"yashma-sonara"},"content":"bye","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yashma-sonara":8}}] diff --git a/yashma-sonara_ip_master/commits.json b/yashma-sonara_ip_master/commits.json index f0761635..7042d6b0 100644 --- a/yashma-sonara_ip_master/commits.json +++ b/yashma-sonara_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"yashma-sonara":[{"date":"2024-01-20","commitResults":[{"hash":"67e2ea5ae58ced674395e2aa9286c78965377213","isMergeCommit":false,"messageTitle":"Completed Level-0 increment","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":6}}},{"hash":"9d7b0896ac362f09769bf660d40b0ca8e900c408","isMergeCommit":false,"messageTitle":"Completed Level-1 increment","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":0}}},{"hash":"342aed7cf231158b2e860eede769185bc04a22de","isMergeCommit":false,"messageTitle":"Completed Level-2 increment","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":2}}}]},{"date":"2024-01-21","commitResults":[{"hash":"070ee9ac26d519f7ee8d09a05895fd4565ff70ea","isMergeCommit":false,"messageTitle":"Completed Level-3 increment","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":5}}}]},{"date":"2024-01-22","commitResults":[{"hash":"f3961ec9fa6df327a6b77e74ef61239e44f786a2","isMergeCommit":false,"messageTitle":"Completed Level 4 Increment","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":91,"deletions":4}}},{"hash":"695135ea804c8514ce31ab767238edb79a249e39","isMergeCommit":false,"messageTitle":"Completed A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0},"java":{"insertions":5,"deletions":5}}},{"hash":"6c27cb2152eb07ca6b49b8eea0282041d49be060","isMergeCommit":false,"messageTitle":"Completed Level-5 minimally","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":2}}},{"hash":"7fd14bb1f559b61d89c1a520f11956463f008eef","isMergeCommit":false,"messageTitle":"Fix Deadline Exceptions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":16}}},{"hash":"873146ca5bf43348886adf40a3155a7c4a490544","isMergeCommit":false,"messageTitle":"Fix Event Exceptions","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":18}}},{"hash":"9d47592e9b88523d8d5512a4a53e82b58a6252b0","isMergeCommit":false,"messageTitle":"Completed Level-6 Increment","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":3}}}]},{"date":"2024-01-23","commitResults":[{"hash":"5a49ba68b5127c58138e30c52c2350927195fc03","isMergeCommit":false,"messageTitle":"Completed A-Enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":118,"deletions":104}}}]},{"date":"2024-01-27","commitResults":[{"hash":"5fc3a1399d6ffa52201ab9c8e8ba748e7a14f454","isMergeCommit":false,"messageTitle":"Level 7: Implement automatic saving and loading of tasks","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":99,"deletions":0}}},{"hash":"130ba59ff57c6aa46ee289ef8cd73b86847691d0","isMergeCommit":false,"messageTitle":"Level 7: Implement automatic saving","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":99,"deletions":0}}},{"hash":"70acdb9002c81aa85b4e685de90ec3f89b907510","isMergeCommit":false,"messageTitle":"Update to handle corrupted data file","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":2},"java":{"insertions":54,"deletions":27}}},{"hash":"29e90a6cf6fcd05fb0b68013096dc768484f5d22","isMergeCommit":true,"messageTitle":"Merge branch-Level-7 into master","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-28","commitResults":[{"hash":"06c4ffc64a442a87b57d0fd63786176661cb6c55","isMergeCommit":false,"messageTitle":"Update to add date and time for deadline tasks","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1},"java":{"insertions":22,"deletions":6}}},{"hash":"d3a9eb50eb890ee31d517d3ecfe4084d02232160","isMergeCommit":true,"messageTitle":"Merge branch-Level-8 into master","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"yashma-sonara":{"java":416,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":8}},"authorContributionVariance":{"yashma-sonara":14491.65},"authorDisplayNameMap":{"yashma-sonara":"CS2103T-T09-1 SONA..SHMA"}} +{"authorDailyContributionsMap":{"yashma-sonara":[{"date":"2024-01-20","commitResults":[{"hash":"67e2ea5ae58ced674395e2aa9286c78965377213","isMergeCommit":false,"messageTitle":"Completed Level-0 increment","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":6}}},{"hash":"9d7b0896ac362f09769bf660d40b0ca8e900c408","isMergeCommit":false,"messageTitle":"Completed Level-1 increment","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":0}}},{"hash":"342aed7cf231158b2e860eede769185bc04a22de","isMergeCommit":false,"messageTitle":"Completed Level-2 increment","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":2}}}]},{"date":"2024-01-21","commitResults":[{"hash":"070ee9ac26d519f7ee8d09a05895fd4565ff70ea","isMergeCommit":false,"messageTitle":"Completed Level-3 increment","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":5}}}]},{"date":"2024-01-22","commitResults":[{"hash":"f3961ec9fa6df327a6b77e74ef61239e44f786a2","isMergeCommit":false,"messageTitle":"Completed Level 4 Increment","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":91,"deletions":4}}},{"hash":"695135ea804c8514ce31ab767238edb79a249e39","isMergeCommit":false,"messageTitle":"Completed A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0},"java":{"insertions":5,"deletions":5}}},{"hash":"6c27cb2152eb07ca6b49b8eea0282041d49be060","isMergeCommit":false,"messageTitle":"Completed Level-5 minimally","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":2}}},{"hash":"7fd14bb1f559b61d89c1a520f11956463f008eef","isMergeCommit":false,"messageTitle":"Fix Deadline Exceptions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":16}}},{"hash":"873146ca5bf43348886adf40a3155a7c4a490544","isMergeCommit":false,"messageTitle":"Fix Event Exceptions","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":18}}},{"hash":"9d47592e9b88523d8d5512a4a53e82b58a6252b0","isMergeCommit":false,"messageTitle":"Completed Level-6 Increment","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":3}}}]},{"date":"2024-01-23","commitResults":[{"hash":"5a49ba68b5127c58138e30c52c2350927195fc03","isMergeCommit":false,"messageTitle":"Completed A-Enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":118,"deletions":104}}}]},{"date":"2024-01-27","commitResults":[{"hash":"5fc3a1399d6ffa52201ab9c8e8ba748e7a14f454","isMergeCommit":false,"messageTitle":"Level 7: Implement automatic saving and loading of tasks","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":99,"deletions":0}}},{"hash":"130ba59ff57c6aa46ee289ef8cd73b86847691d0","isMergeCommit":false,"messageTitle":"Level 7: Implement automatic saving","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":99,"deletions":0}}},{"hash":"70acdb9002c81aa85b4e685de90ec3f89b907510","isMergeCommit":false,"messageTitle":"Update to handle corrupted data file","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":2},"java":{"insertions":54,"deletions":27}}},{"hash":"29e90a6cf6fcd05fb0b68013096dc768484f5d22","isMergeCommit":true,"messageTitle":"Merge branch-Level-7 into master","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-28","commitResults":[{"hash":"06c4ffc64a442a87b57d0fd63786176661cb6c55","isMergeCommit":false,"messageTitle":"Update to add date and time for deadline tasks","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1},"java":{"insertions":22,"deletions":6}}},{"hash":"d3a9eb50eb890ee31d517d3ecfe4084d02232160","isMergeCommit":true,"messageTitle":"Merge branch-Level-8 into master","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-30","commitResults":[{"hash":"e878fd4e348cad53303c451b9a6e326cd695a45b","isMergeCommit":false,"messageTitle":"Update add OOP classes and key functionalities work","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":461,"deletions":267}}},{"hash":"65015df8991566f1d7921f59b4e2c1d92f3992ac","isMergeCommit":false,"messageTitle":"Revert \"Update add OOP classes and key functionalities work\"","messageBody":"This reverts commit e878fd4e348cad53303c451b9a6e326cd695a45b.\n","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":4},"java":{"insertions":267,"deletions":461}}},{"hash":"85915f072a3913ca0690fbd04483147ce286a556","isMergeCommit":false,"messageTitle":"Revert \"Revert \"Update add OOP classes and key functionalities work\"\"","messageBody":"This reverts commit 65015df8991566f1d7921f59b4e2c1d92f3992ac.\n","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":461,"deletions":267}}},{"hash":"1e5da971b1f82e7020a1e1c620ba9a01bff83691","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027 into A-MoreOOP","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"003247a2f6737de830d064a6669a5368b16c51d2","isMergeCommit":false,"messageTitle":"Update delete task and todo task","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":12,"deletions":7}}},{"hash":"9d7fbf852b07b2f7a8bf6465fd3db8bbd874de17","isMergeCommit":false,"messageTitle":"update formatting","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1},"java":{"insertions":8,"deletions":4}}},{"hash":"a6ab7fb5e3b59e6cbfb43190bc81ada976fdb577","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"yashma-sonara":{"java":620,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":11}},"authorContributionVariance":{"yashma-sonara":365145.75},"authorDisplayNameMap":{"yashma-sonara":"CS2103T-T09-1 SONA..SHMA"}} diff --git a/ziyi22_ip_master/authorship.json b/ziyi22_ip_master/authorship.json index c49848c8..f2c42281 100644 --- a/ziyi22_ip_master/authorship.json +++ b/ziyi22_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ziyi22"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":4,"author":{"gitId":"ziyi22"},"content":" private final static String[] tasks \u003d new String[100];","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"ziyi22"},"content":" private static int count \u003d 0;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":7,"author":{"gitId":"ziyi22"},"content":" greetUser();","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"ziyi22"},"content":" echo();","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"ziyi22"},"content":" exit();","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"ziyi22"},"content":" private static void greetUser() {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"ziyi22"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"ziyi22"},"content":" System.out.println(\" Hello! I\u0027m Judy\");","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"ziyi22"},"content":" System.out.println(\" What can I do for you?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"ziyi22"},"content":" System.out.println(\"________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"ziyi22"},"content":" private static void echo() {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"ziyi22"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"ziyi22"},"content":" String command;","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"ziyi22"},"content":" do {","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"ziyi22"},"content":" System.out.print(\"\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"ziyi22"},"content":" command \u003d scanner.nextLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"ziyi22"},"content":" if(command.equalsIgnoreCase(\"bye\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"ziyi22"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"ziyi22"},"content":" } else if (command.equalsIgnoreCase(\"list\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"ziyi22"},"content":" listOutTasks();","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"ziyi22"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"ziyi22"},"content":" addTask(command);","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"ziyi22"},"content":" } while (true);","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"ziyi22"},"content":" scanner.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"ziyi22"},"content":" private static void addTask(String task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"ziyi22"},"content":" tasks[count++] \u003d task;","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"ziyi22"},"content":" System.out.println(\"_________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"ziyi22"},"content":" System.out.println(\"added: \" + task);","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"ziyi22"},"content":" System.out.println(\"_________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"ziyi22"},"content":" private static void listOutTasks() {","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"ziyi22"},"content":" System.out.println(\"_________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"ziyi22"},"content":" if (count \u003d\u003d 0) {","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"ziyi22"},"content":" System.out.println(\"No task added\");","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"ziyi22"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"ziyi22"},"content":" for(int i \u003d 0; i \u003c count; i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"ziyi22"},"content":" int id \u003d i+1;","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"ziyi22"},"content":" System.out.print(\" \" + id + \". \" + tasks[i] + \"\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"ziyi22"},"content":" System.out.println(\"_________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"ziyi22"},"content":" private static void exit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"ziyi22"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"ziyi22"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"ziyi22"},"content":" System.out.println(\"________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"ziyi22":58,"-":4}}] +[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ziyi22"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ziyi22"},"content":" protected String by;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"ziyi22"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"ziyi22"},"content":" super(description);","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"ziyi22"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"ziyi22"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"ziyi22"},"content":" public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"ziyi22"},"content":" return \" [D]\" + super.toString() + \" (by: \" + this.by + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"ziyi22"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"ziyi22":13}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ziyi22"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":4,"author":{"gitId":"ziyi22"},"content":" private static final Tasks taskManager \u003d new Tasks();","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":6,"author":{"gitId":"ziyi22"},"content":" greetUser();","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"ziyi22"},"content":" echo();","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"ziyi22"},"content":" exit();","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"ziyi22"},"content":" private static void greetUser() {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"ziyi22"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"ziyi22"},"content":" System.out.println(\" Hello! I\u0027m Judy\");","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"ziyi22"},"content":" System.out.println(\" What can I do for you?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"ziyi22"},"content":" System.out.println(\"________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"ziyi22"},"content":" private static void echo() {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"ziyi22"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"ziyi22"},"content":" String command;","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"ziyi22"},"content":" do {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"ziyi22"},"content":" command \u003d scanner.nextLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"ziyi22"},"content":" System.out.println(\"____________________________________\");","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"ziyi22"},"content":" if(command.equalsIgnoreCase(\"bye\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"ziyi22"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"ziyi22"},"content":" } else if (command.equalsIgnoreCase(\"list\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"ziyi22"},"content":" taskManager.listOutTasks();","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"ziyi22"},"content":" } else if (command.startsWith(\"mark\")){","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"ziyi22"},"content":" taskManager.markTask(command);","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"ziyi22"},"content":" } else if (command.startsWith(\"unmark\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"ziyi22"},"content":" taskManager.unmarkTask(command);","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"ziyi22"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"ziyi22"},"content":" taskManager.addTask(command);","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"ziyi22"},"content":" System.out.println(\"____________________________________\");","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"ziyi22"},"content":" } while (true);","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"ziyi22"},"content":" scanner.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"ziyi22"},"content":" private static void exit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"ziyi22"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"ziyi22"},"content":" System.out.println(\"____________________________________\");","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"ziyi22":43,"-":4}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ziyi22"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ziyi22"},"content":" protected String from;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"ziyi22"},"content":" protected String to;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"ziyi22"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"ziyi22"},"content":" super(description);","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"ziyi22"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"ziyi22"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"ziyi22"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"ziyi22"},"content":" public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"ziyi22"},"content":" return \" [E]\" + super.toString() + \" (from: \" + this.from + \" to: \"+ this.to + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"ziyi22"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"ziyi22":15}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ziyi22"},"content":"public class Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ziyi22"},"content":" protected String description;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"ziyi22"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"ziyi22"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"ziyi22"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"ziyi22"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"ziyi22"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"ziyi22"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"ziyi22"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"ziyi22"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"ziyi22"},"content":" public void markAsUndone() {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"ziyi22"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"ziyi22"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"ziyi22"},"content":" public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"ziyi22"},"content":" return \"[\" + getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"ziyi22"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"ziyi22":26}},{"path":"src/main/java/Tasks.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ziyi22"},"content":"public class Tasks {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ziyi22"},"content":" private static final int MAX_TASKS \u003d100;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"ziyi22"},"content":" private static Task[] tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"ziyi22"},"content":" private static int taskCount;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"ziyi22"},"content":" public Tasks() {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"ziyi22"},"content":" tasks \u003d new Task[MAX_TASKS];","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"ziyi22"},"content":" taskCount \u003d 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"ziyi22"},"content":" public static boolean isFull() {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"ziyi22"},"content":" return taskCount \u003e\u003d MAX_TASKS;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"ziyi22"},"content":" public void markTask(String command) {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"ziyi22"},"content":" String[] words \u003d command.split(\" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"ziyi22"},"content":" int taskId \u003d Integer.parseInt(words[1]) -1;","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"ziyi22"},"content":" Task t \u003d tasks[taskId];","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"ziyi22"},"content":" tasks[taskId].markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"ziyi22"},"content":" System.out.println(\" Nice ! I\u0027ve marked this task as done: \\n\" + t.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"ziyi22"},"content":" public void unmarkTask(String command) {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"ziyi22"},"content":" String[] words \u003d command.split(\" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"ziyi22"},"content":" int taskId \u003d Integer.parseInt(words[1]) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"ziyi22"},"content":" Task t \u003d tasks[taskId];","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"ziyi22"},"content":" t.markAsUndone();","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"ziyi22"},"content":" System.out.println(\" Ok, I\u0027ve marked this task as not done yet: \\n\" + t);","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"ziyi22"},"content":" public void addTask(String command) {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"ziyi22"},"content":" Task t;","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"ziyi22"},"content":" switch (getTaskType(command)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"ziyi22"},"content":" case \"todo\":","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"ziyi22"},"content":" t \u003d new Todo(command.substring(5));","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"ziyi22"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"ziyi22"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"ziyi22"},"content":" t \u003d createDeadline(command.substring(9));","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"ziyi22"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"ziyi22"},"content":" case \"event\":","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"ziyi22"},"content":" t \u003d createEvent(command.substring(6));","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"ziyi22"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"ziyi22"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"ziyi22"},"content":" System.out.println(\" Invalid command. Please use \u0027todo\u0027, \u0027deadline\u0027 or \u0027event\u0027. \");","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"ziyi22"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"ziyi22"},"content":" if (! Tasks.isFull()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"ziyi22"},"content":" tasks[taskCount++] \u003d t;","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"ziyi22"},"content":" System.out.println(\" Got it. I\u0027ve added this task: \\n\" + t);","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"ziyi22"},"content":" System.out.println(\" Now you have \" + taskCount + \" tasks in the list. \");","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"ziyi22"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"ziyi22"},"content":" System.out.println(\" Task list is full.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"ziyi22"},"content":" public void listOutTasks() {","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"ziyi22"},"content":" if (taskCount \u003d\u003d 0) {","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"ziyi22"},"content":" System.out.println(\" No task added\");","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"ziyi22"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"ziyi22"},"content":" System.out.println(\" Here are the tasks in your list: \");","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"ziyi22"},"content":" for(int i \u003d 0; i \u003c taskCount; i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"ziyi22"},"content":" int seq \u003d i+1;","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"ziyi22"},"content":" Task t \u003d tasks[i];","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"ziyi22"},"content":" System.out.println(\" \" + seq + \". \" + t.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"ziyi22"},"content":" private String getTaskType(String command) {","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"ziyi22"},"content":" return command.trim().split(\"\\\\s+\")[0].toLowerCase();","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"ziyi22"},"content":" private static Deadline createDeadline(String command) {","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"ziyi22"},"content":" String[] parts \u003d command.split(\"/by \");","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"ziyi22"},"content":" String taskDescription \u003d parts[0].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"ziyi22"},"content":" String by \u003d parts[1].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"ziyi22"},"content":" return new Deadline(taskDescription, by);","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"ziyi22"},"content":" private static Event createEvent(String command) {","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"ziyi22"},"content":" String[] parts \u003d command.split(\"/from \");","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"ziyi22"},"content":" String taskDescription \u003d parts[0].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"ziyi22"},"content":" String[] eventDetails \u003d parts[1].split(\"/to \");","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"ziyi22"},"content":" String from \u003d eventDetails[0].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"ziyi22"},"content":" String to \u003d eventDetails[1].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"ziyi22"},"content":" return new Event(taskDescription, from, to);","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"ziyi22"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"ziyi22":88}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ziyi22"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"ziyi22"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"ziyi22"},"content":" super(description);","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"ziyi22"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"ziyi22"},"content":" public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"ziyi22"},"content":" return \" [T]\" + super.toString();","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"ziyi22"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"ziyi22":11}}] diff --git a/ziyi22_ip_master/commits.json b/ziyi22_ip_master/commits.json index 7346da6c..2f10b9e8 100644 --- a/ziyi22_ip_master/commits.json +++ b/ziyi22_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"ziyi22":[{"date":"2024-01-29","commitResults":[{"hash":"f135f327b0f28a23e3487e6d6c734cf774be8048","isMergeCommit":false,"messageTitle":"Level-0: Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":6}}},{"hash":"33f0aee646362cfc6e5e688525742fbbe3aa2ff5","isMergeCommit":false,"messageTitle":"Level-1: Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":4}}},{"hash":"ac66dfa512f9c61a76867430fa91f0cdd612a376","isMergeCommit":false,"messageTitle":"Level-2: Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":7}}}]}]},"authorFileTypeContributionMap":{"ziyi22":{"java":58,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":0}},"authorContributionVariance":{"ziyi22":611.2397},"authorDisplayNameMap":{"ziyi22":"CS2103T-T14-1 YEO ..I YI"}} +{"authorDailyContributionsMap":{"ziyi22":[{"date":"2024-01-29","commitResults":[{"hash":"f135f327b0f28a23e3487e6d6c734cf774be8048","isMergeCommit":false,"messageTitle":"Level-0: Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":6}}},{"hash":"33f0aee646362cfc6e5e688525742fbbe3aa2ff5","isMergeCommit":false,"messageTitle":"Level-1: Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":4}}},{"hash":"ac66dfa512f9c61a76867430fa91f0cdd612a376","isMergeCommit":false,"messageTitle":"Level-2: Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":7}}}]},{"date":"2024-01-30","commitResults":[{"hash":"ce4e9f8b7f8b61621545853d507d00d03cbcbe67","isMergeCommit":false,"messageTitle":"Level-3: Mark as done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":55,"deletions":11}}},{"hash":"e5e3ebda0da627d06ba88f1bb5a9599d4fd2341c","isMergeCommit":false,"messageTitle":"Level-4: ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":133,"deletions":39}}}]}]},"authorFileTypeContributionMap":{"ziyi22":{"java":196,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":0}},"authorContributionVariance":{"ziyi22":4607.6665},"authorDisplayNameMap":{"ziyi22":"CS2103T-T14-1 YEO ..I YI"}}